From 59850ce9d4a4a0ed25972fa5e95333b08a679cd9 Mon Sep 17 00:00:00 2001 From: Stephen Kraffmiller Date: Wed, 22 Jun 2016 15:38:26 -0400 Subject: [PATCH] Add Geo and Terms to Dublin Core --- .../dataverse/api/dto/DatasetVersionDTO.java | 9 ++ .../dublincore/DublinCoreExportUtil.java | 101 +++++++----------- .../iq/dataverse/util/json/JsonPrinter.java | 1 + 3 files changed, 48 insertions(+), 63 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/api/dto/DatasetVersionDTO.java b/src/main/java/edu/harvard/iq/dataverse/api/dto/DatasetVersionDTO.java index e4c4140e8a0..92147fb3a1a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/dto/DatasetVersionDTO.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/dto/DatasetVersionDTO.java @@ -37,6 +37,7 @@ public class DatasetVersionDTO { String sizeOfCollection; String studyCompletion; String citation; + String license; boolean inReview; Map metadataBlocks; @@ -284,6 +285,14 @@ public String getArchiveTime() { public void setArchiveTime(String archiveTime) { this.archiveTime = archiveTime; } + + public String getLicense() { + return license; + } + + public void setLicense(String license) { + this.license = license; + } public Map getMetadataBlocks() { return metadataBlocks; diff --git a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java index 880916bd22d..0bbb2b50e50 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java @@ -103,75 +103,20 @@ private static void createStdyDscr(XMLStreamWriter xmlw, DatasetDTO datasetDto) writeFullElement(xmlw, "dcterms:dateSubmitted", dto2Primitive(version, DatasetFieldConstant.dateOfDeposit)); writeTimeElements(xmlw, version); - // writeProducersElement(xmlw, version); - /* - xmlw.writeStartElement("distStmt"); - writeFullElement(xmlw, "distrbtr", datasetDto.getPublisher()); - writeFullElement(xmlw, "distdate", datasetDto.getPublicationDate()); - xmlw.writeEndElement(); // diststmt - - //End Citation Block - - //Start Study Info Block - // Study Info - xmlw.writeStartElement("stdyInfo"); - - //writeSubjectElement(xmlw, version); //Subject and Keywords - // - writeFullElement(xmlw, "notes", dto2Primitive(version, DatasetFieldConstant.notesText)); + writeFullElementList(xmlw, "dcterms:relation", dto2PrimitiveList(version, DatasetFieldConstant.relatedDatasets)); - // writeSummaryDescriptionElement(xmlw, version); - // - writeFullElement(xmlw, "prodDate", dto2Primitive(version, DatasetFieldConstant.productionDate)); - writeFullElement(xmlw, "prodPlac", dto2Primitive(version, DatasetFieldConstant.productionPlace)); - - // writeGrantElement(xmlw, version); - //writeOtherIdElement(xmlw, version); - //xmlw.writeStartElement("distStmt"); //Also need Contact - //writeDistributorsElement(xmlw, version); - //writeContactsElement(xmlw, version); - //writeFullElement(xmlw, "depositr", dto2Primitive(version, DatasetFieldConstant.depositor)); - writeFullElement(xmlw, "depDate", dto2Primitive(version, DatasetFieldConstant.dateOfDeposit)); - //xmlw.writeEndElement(); // distStmt - - //writeFullElementList(xmlw, "relMat", dto2PrimitiveList(version, DatasetFieldConstant.relatedMaterial)); - //writeFullElementList(xmlw, "relStdy", dto2PrimitiveList(version, DatasetFieldConstant.relatedDatasets)); - // writeFullElementList(xmlw, "othRefs", dto2PrimitiveList(version, DatasetFieldConstant.otherReferences)); - // writeFullElementList(xmlw, "dataKind", dto2PrimitiveList(version, DatasetFieldConstant.kindOfData)); - // writeSeriesElement(xmlw, version); - // writeSoftwareElement(xmlw, version); - writeFullElementList(xmlw, "dataSrc", dto2PrimitiveList(version, DatasetFieldConstant.dataSources)); - writeFullElement(xmlw, "srcOrig", dto2Primitive(version, DatasetFieldConstant.originOfSources)); - writeFullElement(xmlw, "srcChar", dto2Primitive(version, DatasetFieldConstant.characteristicOfSources)); - writeFullElement(xmlw, "srcDocu", dto2Primitive(version, DatasetFieldConstant.accessToSources)); - xmlw.writeEndElement(); // stdyInfo - // End Info Block + writeFullElementList(xmlw, "dcterms:type", dto2PrimitiveList(version, DatasetFieldConstant.kindOfData)); - //Social Science Metadata block - - //writeMethodElement(xmlw, version); + writeFullElementList(xmlw, "dcterms:source", dto2PrimitiveList(version, DatasetFieldConstant.dataSources)); - //Terms of Use and Access - writeFullElement(xmlw, "useStmt", version.getTermsOfUse()); - writeFullElement(xmlw, "confDec", version.getConfidentialityDeclaration()); - writeFullElement(xmlw, "specPerm", version.getSpecialPermissions()); - writeFullElement(xmlw, "restrctn", version.getRestrictions()); - writeFullElement(xmlw, "citeReq", version.getCitationRequirements()); - writeFullElement(xmlw, "deposReq", version.getDepositorRequirements()); - writeFullElement(xmlw, "conditions", version.getConditions()); - writeFullElement(xmlw, "disclaimer", version.getDisclaimer()); - writeFullElement(xmlw, "dataAccs", version.getTermsOfAccess()); - writeFullElement(xmlw, "accsPlac", version.getDataAccessPlace()); - writeFullElement(xmlw, "origArch", version.getOriginalArchive()); - writeFullElement(xmlw, "avlStatus", version.getAvailabilityStatus()); - writeFullElement(xmlw, "contact", version.getContactForAccess()); - writeFullElement(xmlw, "collSize", version.getSizeOfCollection()); - writeFullElement(xmlw, "complete", version.getStudyCompletion()); + writeSpatialElements(xmlw, version); + writeFullElement(xmlw, "dcterms:license", version.getLicense()); - xmlw.writeEndElement(); // stdyDscr -*/ + writeFullElement(xmlw, "dcterms:rights", version.getTermsOfUse()); + writeFullElement(xmlw, "dcterms:rights", version.getRestrictions()); + } private static void writeAuthorsElement(XMLStreamWriter xmlw, DatasetVersionDTO datasetVersionDTO) throws XMLStreamException { @@ -390,6 +335,36 @@ private static void writeTimeElements(XMLStreamWriter xmlw, DatasetVersionDTO da } } + private static void writeSpatialElements(XMLStreamWriter xmlw, DatasetVersionDTO datasetVersionDTO) throws XMLStreamException { + for (Map.Entry entry : datasetVersionDTO.getMetadataBlocks().entrySet()) { + String key = entry.getKey(); + MetadataBlockDTO value = entry.getValue(); + if("geospatial".equals(key)){ + for (FieldDTO fieldDTO : value.getFields()) { + if (DatasetFieldConstant.geographicCoverage.equals(fieldDTO.getTypeName())) { + for (HashSet foo : fieldDTO.getMultipleCompound()) { + for (Iterator iterator = foo.iterator(); iterator.hasNext();) { + FieldDTO next = iterator.next(); + if (DatasetFieldConstant.country.equals(next.getTypeName())) { + writeFullElement(xmlw, "dcterms:spatial", next.getSinglePrimitive()); + } + if (DatasetFieldConstant.city.equals(next.getTypeName())) { + writeFullElement(xmlw, "dcterms:spatial", next.getSinglePrimitive()); + } + if (DatasetFieldConstant.state.equals(next.getTypeName())) { + writeFullElement(xmlw, "dcterms:spatial", next.getSinglePrimitive()); + } + if (DatasetFieldConstant.otherGeographicCoverage.equals(next.getTypeName())) { + writeFullElement(xmlw, "dcterms:spatial", next.getSinglePrimitive()); + } + } + } + } + } + } + } + } + private static String appendCommaSeparatedValue(String inVal, String next) { if (!next.isEmpty()) { if (!inVal.isEmpty()) { diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java index db4f3ee4e3a..91721c4deb3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java @@ -248,6 +248,7 @@ public static JsonObjectBuilder json( DatasetVersion dsv ) { .add("lastUpdateTime", format(dsv.getLastUpdateTime()) ) .add("releaseTime", format(dsv.getReleaseTime()) ) .add("createTime", format(dsv.getCreateTime()) ) + .add("license", dsv.getTermsOfUseAndAccess().getLicense().toString()) .add("termsOfUse", getLicenseInfo(dsv)) .add("confidentialityDeclaration", dsv.getTermsOfUseAndAccess().getConfidentialityDeclaration()) .add("availabilityStatus", dsv.getTermsOfUseAndAccess().getAvailabilityStatus())