Skip to content

Commit 1d300f4

Browse files
committed
Merge remote-tracking branch 'IQSS/develop' into IQSS/10117-customquestion_limit_and_failure
2 parents a663ad4 + befc5a9 commit 1d300f4

File tree

6 files changed

+38
-30
lines changed

6 files changed

+38
-30
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The JSON payload of the getDataverse endpoint has been extended to include properties isMetadataBlockRoot and isFacetRoot.

src/main/java/edu/harvard/iq/dataverse/export/DDIExportServiceBean.java

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ public class DDIExportServiceBean {
9898
public static final String LEVEL_FILE = "file";
9999
public static final String NOTE_TYPE_UNF = "VDC:UNF";
100100
public static final String NOTE_TYPE_TAG = "DATAVERSE:TAG";
101+
public static final String NOTE_TYPE_FILEDESCRIPTION = "DATAVERSE:FILEDESC";
101102
public static final String NOTE_SUBJECT_UNF = "Universal Numeric Fingerprint";
102103
public static final String NOTE_SUBJECT_TAG = "Data File Tag";
104+
public static final String NOTE_SUBJECT_FILEDESCRIPTION = "DataFile Description";
103105

104106
/*
105107
* Internal service objects:
@@ -742,11 +744,6 @@ private void createFileDscr(XMLStreamWriter xmlw, Set<String> excludedFieldSet,
742744
xmlw.writeEndElement(); // fileName
743745
}
744746

745-
/*
746-
xmlw.writeStartElement("fileCont");
747-
xmlw.writeCharacters( df.getContentType() );
748-
xmlw.writeEndElement(); // fileCont
749-
*/
750747
// dimensions
751748
if (checkField("dimensns", excludedFieldSet, includedFieldSet)) {
752749
if (dt.getCaseQuantity() != null || dt.getVarQuantity() != null || dt.getRecordsPerCase() != null) {
@@ -801,26 +798,6 @@ private void createFileDscr(XMLStreamWriter xmlw, Set<String> excludedFieldSet,
801798
xmlw.writeEndElement(); // notes
802799
}
803800

804-
/*
805-
xmlw.writeStartElement("notes");
806-
writeAttribute( xmlw, "type", "vdc:category" );
807-
xmlw.writeCharacters( fm.getCategory() );
808-
xmlw.writeEndElement(); // notes
809-
*/
810-
// A special note for LOCKSS crawlers indicating the restricted
811-
// status of the file:
812-
813-
/*
814-
if (tdf != null && isRestrictedFile(tdf)) {
815-
xmlw.writeStartElement("notes");
816-
writeAttribute( xmlw, "type", NOTE_TYPE_LOCKSS_CRAWL );
817-
writeAttribute( xmlw, "level", LEVEL_FILE );
818-
writeAttribute( xmlw, "subject", NOTE_SUBJECT_LOCKSS_PERM );
819-
xmlw.writeCharacters( "restricted" );
820-
xmlw.writeEndElement(); // notes
821-
822-
}
823-
*/
824801
if (checkField("tags", excludedFieldSet, includedFieldSet) && df.getTags() != null) {
825802
for (int i = 0; i < df.getTags().size(); i++) {
826803
xmlw.writeStartElement("notes");
@@ -831,6 +808,17 @@ private void createFileDscr(XMLStreamWriter xmlw, Set<String> excludedFieldSet,
831808
xmlw.writeEndElement(); // notes
832809
}
833810
}
811+
812+
// A dedicated node for the Description entry
813+
if (!StringUtilisEmpty(fm.getDescription())) {
814+
xmlw.writeStartElement("notes");
815+
xmlw.writeAttribute("level", LEVEL_FILE);
816+
xmlw.writeAttribute("type", NOTE_TYPE_FILEDESCRIPTION);
817+
xmlw.writeAttribute("subject", NOTE_SUBJECT_FILEDESCRIPTION);
818+
xmlw.writeCharacters(fm.getDescription());
819+
xmlw.writeEndElement(); // notes
820+
}
821+
834822
xmlw.writeEndElement(); // fileDscr
835823
}
836824

src/main/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtil.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.LEVEL_FILE;
1515
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_SUBJECT_TAG;
1616
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_SUBJECT_UNF;
17+
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_SUBJECT_FILEDESCRIPTION;
1718
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_TYPE_TAG;
1819
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_TYPE_UNF;
20+
import static edu.harvard.iq.dataverse.export.DDIExportServiceBean.NOTE_TYPE_FILEDESCRIPTION;
1921
import edu.harvard.iq.dataverse.export.DDIExporter;
2022
import edu.harvard.iq.dataverse.pidproviders.PidUtil;
2123
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
@@ -1901,6 +1903,8 @@ private static void createFileDscr(XMLStreamWriter xmlw, JsonArray fileDetails)
19011903
xmlw.writeEndElement(); // notes
19021904
}
19031905

1906+
// If any tabular tags are present, each is formatted in a
1907+
// dedicated note:
19041908
if (fileJson.containsKey("tabularTags")) {
19051909
JsonArray tags = fileJson.getJsonArray("tabularTags");
19061910
for (int j = 0; j < tags.size(); j++) {
@@ -1912,6 +1916,17 @@ private static void createFileDscr(XMLStreamWriter xmlw, JsonArray fileDetails)
19121916
xmlw.writeEndElement(); // notes
19131917
}
19141918
}
1919+
1920+
// Adding a dedicated node for the description entry (for
1921+
// non-tabular files we format it under the <txt> field)
1922+
if (fileJson.containsKey("description")) {
1923+
xmlw.writeStartElement("notes");
1924+
xmlw.writeAttribute("level", LEVEL_FILE);
1925+
xmlw.writeAttribute("type", NOTE_TYPE_FILEDESCRIPTION);
1926+
xmlw.writeAttribute("subject", NOTE_SUBJECT_FILEDESCRIPTION);
1927+
xmlw.writeCharacters(fileJson.getString("description"));
1928+
xmlw.writeEndElement(); // notes
1929+
}
19151930

19161931
// TODO: add the remaining fileDscr elements!
19171932
xmlw.writeEndElement(); // fileDscr

src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,9 @@ public static JsonObjectBuilder json(Dataverse dv, Boolean hideEmail, Boolean re
276276
}
277277
bld.add("permissionRoot", dv.isPermissionRoot())
278278
.add("description", dv.getDescription())
279-
.add("dataverseType", dv.getDataverseType().name());
279+
.add("dataverseType", dv.getDataverseType().name())
280+
.add("isMetadataBlockRoot", dv.isMetadataBlockRoot())
281+
.add("isFacetRoot", dv.isFacetRoot());
280282
if (dv.getOwner() != null) {
281283
bld.add("ownerId", dv.getOwner().getId());
282284
}

src/main/java/propertyFiles/Bundle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,7 +1464,7 @@ dataset.editBtn.itemLabel.deleteDataset=Delete Dataset
14641464
dataset.editBtn.itemLabel.deleteDraft=Delete Draft Version
14651465
dataset.editBtn.itemLabel.deaccession=Deaccession Dataset
14661466
dataset.exportBtn=Export Metadata
1467-
dataset.exportBtn.itemLabel.ddi=DDI
1467+
dataset.exportBtn.itemLabel.ddi=DDI Codebook v2
14681468
dataset.exportBtn.itemLabel.dublinCore=Dublin Core
14691469
dataset.exportBtn.itemLabel.schemaDotOrg=Schema.org JSON-LD
14701470
dataset.exportBtn.itemLabel.datacite=DataCite
@@ -1934,7 +1934,7 @@ file.downloadBtn.format.all=All File Formats + Information
19341934
file.downloadBtn.format.tab=Tab-Delimited
19351935
file.downloadBtn.format.original={0} (Original File Format)
19361936
file.downloadBtn.format.rdata=RData
1937-
file.downloadBtn.format.var=Variable Metadata
1937+
file.downloadBtn.format.var=DDI Codebook v2
19381938
file.downloadBtn.format.citation=Data File Citation
19391939
file.download.filetype.unknown=Original File Format
19401940
file.more.information.link=Link to more file information for

src/test/java/edu/harvard/iq/dataverse/api/DataversesIT.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,14 +135,16 @@ public void testDataverseCategory() {
135135
public void testMinimalDataverse() throws FileNotFoundException {
136136
Response createUser = UtilIT.createRandomUser();
137137
createUser.prettyPrint();
138-
String username = UtilIT.getUsernameFromResponse(createUser);
139138
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
140139
JsonObject dvJson;
141140
FileReader reader = new FileReader("doc/sphinx-guides/source/_static/api/dataverse-minimal.json");
142141
dvJson = Json.createReader(reader).readObject();
143142
Response create = UtilIT.createDataverse(dvJson, apiToken);
144143
create.prettyPrint();
145-
create.then().assertThat().statusCode(CREATED.getStatusCode());
144+
create.then().assertThat()
145+
.body("data.isMetadataBlockRoot", equalTo(false))
146+
.body("data.isFacetRoot", equalTo(false))
147+
.statusCode(CREATED.getStatusCode());
146148
Response deleteDataverse = UtilIT.deleteDataverse("science", apiToken);
147149
deleteDataverse.prettyPrint();
148150
deleteDataverse.then().assertThat().statusCode(OK.getStatusCode());

0 commit comments

Comments
 (0)