Add pid for resource and use it as resourceId when available #798
Changed institution to IDS Mannheim.
Change-Id: I9d14f97b948aa35f50dc08b47dcc1ac7ec3c6375
diff --git a/Changes b/Changes
index 76170f3..10dc286 100644
--- a/Changes
+++ b/Changes
@@ -18,7 +18,10 @@
- Added statisticsRewriteHandler and queryContextRewrite,
- changed file locations to the data folder,
- removed unused beans (cacheManager, sqliteDataSource)
-- Fix landingPage in the free resource web-service.
+- Fix landingPage in the free resource web-service (#799)
+- Add pid for resource and use it as resourceId when available #798
+- Changed institution to IDS Mannheim.
+
# version 0.76
diff --git a/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java b/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
index 777f511..17b4546 100644
--- a/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
+++ b/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
@@ -60,6 +60,7 @@
Resource r = resourceDao.retrieveResource(resourceId);
if (r == null) {
resourceDao.createResource(resource.at("/id").asText(),
+ resource.at("/pid").asText(),
resource.at("/de_title").asText(),
resource.at("/en_title").asText(),
resource.at("/en_description").asText(),
@@ -68,7 +69,8 @@
resource.at("/corpus_query").asText());
}
else {
- resourceDao.updateResource(resource.at("/id").asText(),
+ resourceDao.updateResource(r,
+ resource.at("/pid").asText(),
resource.at("/de_title").asText(),
resource.at("/en_title").asText(),
resource.at("/en_description").asText(),
diff --git a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
index 5655980..94dd5b2 100644
--- a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
+++ b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
@@ -67,7 +67,7 @@
}
@Transactional
- public void createResource (String id, String germanTitle,
+ public void createResource (String id, String pid, String germanTitle,
String englishTitle, String englishDescription,
Set<AnnotationLayer> layers, String institution,
String corpusQuery) throws KustvaktException {
@@ -75,23 +75,29 @@
ParameterChecker.checkStringValue(englishTitle, "en_title");
ParameterChecker.checkStringValue(germanTitle, "de_title");
- Resource r = new Resource(id, germanTitle, englishTitle,
+ Resource r = new Resource(id, pid, germanTitle, englishTitle,
englishDescription, layers, institution, corpusQuery);
entityManager.persist(r);
}
@Transactional
- public void updateResource (String id, String germanTitle,
+ public void updateResource (Resource r, String pid, String germanTitle,
String englishTitle, String englishDescription,
Set<AnnotationLayer> layers, String institution,
String corpusQuery) throws KustvaktException {
- ParameterChecker.checkStringValue(id, "id");
+ ParameterChecker.checkObjectValue(layers, "layers");
ParameterChecker.checkStringValue(englishTitle, "en_title");
ParameterChecker.checkStringValue(germanTitle, "de_title");
- Resource r = new Resource(id, germanTitle, englishTitle,
- englishDescription, layers, institution, corpusQuery);
+ r.setCorpusQuery(corpusQuery);
+ r.setEnglishDescription(englishDescription);
+ r.setEnglishTitle(englishTitle);
+ r.setGermanTitle(germanTitle);
+ r.setInstitution(institution);
+ r.setLayers(layers);
+ r.setPid(pid);
+
entityManager.merge(r);
}
diff --git a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
index c1a207f..efbc619 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
@@ -31,7 +31,14 @@
for (Resource r : resources) {
dto = new ResourceDto();
dto.setDescription(r.getEnglishDescription());
- dto.setResourceId(r.getId());
+
+ String pid = r.getPid();
+ if (pid !=null && !pid.isEmpty()) {
+ dto.setResourceId(pid);
+ }
+ else {
+ dto.setResourceId(r.getId());
+ }
dto.setLanguages(new String[] { "deu" });
titles = new HashMap<String, String>();
diff --git a/src/main/java/de/ids_mannheim/korap/entity/Resource.java b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
index 4e9906b..98c7fa5 100644
--- a/src/main/java/de/ids_mannheim/korap/entity/Resource.java
+++ b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
@@ -27,9 +27,13 @@
@Table(name = "resource")
public class Resource {
+ // required
@Id
private String id;
+
+ private String pid;
+ // one title is required
@Column(name = "de_title")
private String germanTitle;
@@ -39,21 +43,25 @@
@Column(name = "en_description")
private String englishDescription;
+ // required
@Column(name = "corpus_query")
private String corpusQuery;
private String institution;
-
- @ManyToMany(fetch = FetchType.EAGER)
- @JoinTable(name = "resource_layer", joinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "layer_id", referencedColumnName = "id"))
+
+ // required
+ @ManyToMany(fetch = FetchType.EAGER)
+ @JoinTable(name = "resource_layer", joinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "layer_id", referencedColumnName = "id"))
private Set<AnnotationLayer> layers;
public Resource () {}
- public Resource (String id, String germanTitle, String englishTitle,
- String englishDescription, Set<AnnotationLayer> layers,
- String institution, String corpusQuery) {
+ public Resource (String id, String pid, String germanTitle,
+ String englishTitle, String englishDescription,
+ Set<AnnotationLayer> layers, String institution,
+ String corpusQuery) {
this.id = id;
+ this.pid = pid;
this.germanTitle = germanTitle;
this.englishTitle = englishTitle;
this.englishDescription = englishDescription;
@@ -62,12 +70,12 @@
this.institution=institution;
}
- @Override
- public String toString () {
- return "id=" + id + ", germanTitle=" + germanTitle + ", englishTitle="
- + englishTitle + ", description=" + englishDescription
- + ", layers= " + layers + ", institution=" + institution
- + ", corpusQuery=" + corpusQuery;
- }
+ @Override
+ public String toString () {
+ return "id=" + id + "pid=" + pid + ", germanTitle=" + germanTitle
+ + ", englishTitle=" + englishTitle + ", description="
+ + englishDescription + ", layers= " + layers + ", institution="
+ + institution + ", corpusQuery=" + corpusQuery;
+ }
}
diff --git a/src/main/resources/db/sqlite/V4.1__resource_alteration.sql b/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
index 20a9aa3..64844bf 100644
--- a/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
+++ b/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
@@ -2,4 +2,7 @@
ADD COLUMN institution VARCHAR(100) DEFAULT NULL;
ALTER TABLE resource
-ADD COLUMN corpus_query VARCHAR(500) DEFAULT NULL;
\ No newline at end of file
+ADD COLUMN corpus_query VARCHAR(500) DEFAULT NULL;
+
+ALTER TABLE resource
+ADD COLUMN pid VARCHAR(500) DEFAULT NULL;
\ No newline at end of file
diff --git a/src/main/resources/json/free-resources.json b/src/main/resources/json/free-resources.json
index 95ee585..10320f2 100644
--- a/src/main/resources/json/free-resources.json
+++ b/src/main/resources/json/free-resources.json
@@ -1,5 +1,6 @@
[{
"id": "WPD17",
+ "pid": "http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
"de_title" : "Deutsche Wikipedia Artikel 2017",
"en_title" : "German Wikipedia Articles 2017",
"en_description" : "A collection of articles of German Wikipedia from July 1st, 2017.",
@@ -12,10 +13,11 @@
"tt/p"
],
"corpus_query":"corpusSigle=WPD17",
- "institution" : "Wikimedia Foundation"
+ "institution" : "IDS Mannheim"
},
{
"id": "WDD17",
+ "pid" : "http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
"de_title" : "Deutsche Wikipedia-Diskussionskorpus 2017",
"en_title" : "German Wikipedia talk corpus 2017",
"en_description" : "A collection of talk pages of German Wikipedia from July 1st, 2017.",
@@ -28,10 +30,11 @@
"tt/p"
],
"corpus_query":"corpusSigle=WDD17",
- "institution" : "Wikimedia Foundation"
+ "institution" : "IDS Mannheim"
},
{
"id": "WUD17",
+ "pid": "http://hdl.handle.net/10932/00-03B6-558F-6EF0-6401-F",
"de_title" : "Deutsche Wikipedia-Benutzerdiskussionskorpus 2017",
"en_title" : "German Wikipedia user talk corpus 2017",
"en_description" : "A collection of user talk pages of German Wikipedia from July 1st, 2017.",
@@ -44,6 +47,6 @@
"tt/p"
],
"corpus_query":"corpusSigle=WUD17",
- "institution" : "Wikimedia Foundation"
+ "institution" : "IDS Mannheim"
}
]
\ No newline at end of file
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
index 99296a1..719a96c 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
@@ -14,24 +14,25 @@
@ContextConfiguration("classpath:test-resource-config.xml")
public class FreeResourceControllerTest extends SpringJerseyTest {
- @Test
- public void testResource () throws KustvaktException {
- Response response = target().path(API_VERSION).path("resource")
- .request().get();
- String entity = response.readEntity(String.class);
- JsonNode n = JsonUtils.readTree(entity);
- assertEquals(3, n.size());
+ @Test
+ public void testResource () throws KustvaktException {
+ Response response = target().path(API_VERSION).path("resource")
+ .request().get();
+ String entity = response.readEntity(String.class);
+ JsonNode n = JsonUtils.readTree(entity);
+ assertEquals(3, n.size());
- n = n.get(0);
- assertEquals(n.at("/resourceId").asText(), "WPD17");
- assertEquals(n.at("/titles/de").asText(),
- "Deutsche Wikipedia Artikel 2017");
- assertEquals(n.at("/titles/en").asText(),
- "German Wikipedia Articles 2017");
- assertEquals(1, n.at("/languages").size());
- assertEquals(6, n.at("/layers").size());
- assertEquals("Wikimedia Foundation", n.at("/institution").asText());
- assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17",
- n.at("/landingPage").asText());
- }
+ n = n.get(0);
+ assertEquals("http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
+ n.at("/resourceId").asText());
+ assertEquals(n.at("/titles/de").asText(),
+ "Deutsche Wikipedia Artikel 2017");
+ assertEquals(n.at("/titles/en").asText(),
+ "German Wikipedia Articles 2017");
+ assertEquals(1, n.at("/languages").size());
+ assertEquals(6, n.at("/layers").size());
+ assertEquals("IDS Mannheim", n.at("/institution").asText());
+ assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17",
+ n.at("/landingPage").asText());
+ }
}