Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IQSS/5043 streaming and new exporters #5047

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
52 changes: 26 additions & 26 deletions scripts/api/data/metadatablocks/citation.tsv

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions scripts/database/5043-update.sql
@@ -0,0 +1,2 @@
ALTER TABLE datasetfieldtype ADD COLUMN uri text;
ALTER TABLE metadatablock ADD COLUMN namespaceuri text;
3 changes: 3 additions & 0 deletions src/main/java/Bundle.properties
Expand Up @@ -149,6 +149,7 @@ contact.context.support.intro={0},\n\nThe following message was sent from {1}.\n
contact.context.support.ending=\n\n---\n\nMessage sent from Support contact form.

# dataverseuser.xhtml
institution.name=A Dataverse Instance
account.info=Account Information
account.edit=Edit Account
account.apiToken=API Token
Expand Down Expand Up @@ -1158,7 +1159,9 @@ dataset.exportBtn=Export Metadata
dataset.exportBtn.itemLabel.ddi=DDI
dataset.exportBtn.itemLabel.dublinCore=Dublin Core
dataset.exportBtn.itemLabel.schemaDotOrg=Schema.org JSON-LD
dataset.exportBtn.itemLabel.datacite=DataCite
dataset.exportBtn.itemLabel.json=JSON
dataset.exportBtn.itemLabel.oai_ore=OAI_ORE
metrics.title=Metrics
metrics.title.tip=View more metrics information
metrics.comingsoon=Coming soon...
Expand Down
Expand Up @@ -38,9 +38,6 @@ public class DOIDataCiteRegisterService {
@PersistenceContext(unitName = "VDCNet-ejbPU")
private EntityManager em;

@EJB
DataverseServiceBean dataverseService;

private DataCiteRESTfullClient openClient() throws IOException {
return new DataCiteRESTfullClient(System.getProperty("doi.baseurlstring"), System.getProperty("doi.username"), System.getProperty("doi.password"));
}
Expand Down Expand Up @@ -115,7 +112,7 @@ public String deactivateIdentifier(String identifier, HashMap<String, String> me
return retString;
}

private String getMetadataFromDvObject(String identifier, Map<String, String> metadata, DvObject dvObject) {
public static String getMetadataFromDvObject(String identifier, Map<String, String> metadata, DvObject dvObject) {

Dataset dataset = null;

Expand Down Expand Up @@ -145,7 +142,7 @@ private String getMetadataFromDvObject(String identifier, Map<String, String> me
metadataTemplate.setContacts(dataset.getLatestVersion().getDatasetContacts());
metadataTemplate.setProducers(dataset.getLatestVersion().getDatasetProducers());
metadataTemplate.setTitle(dvObject.getDisplayName());
String producerString = dataverseService.findRootDataverse().getName();
String producerString = dataset.getLatestVersion().getRootDataverseNameforCitation();
if (producerString.isEmpty()) {
producerString = ":unav";
}
Expand Down
24 changes: 23 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/DataCitation.java
Expand Up @@ -17,7 +17,9 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
Expand Down Expand Up @@ -201,7 +203,6 @@ public String toString(boolean html) {
citationList.add(version);

StringBuilder citation = new StringBuilder(citationList.stream().filter(value -> !StringUtils.isEmpty(value))
// QDRCustom: Use period to join values, not comma
.collect(Collectors.joining(separator)));

if ((fileTitle != null) && !isDirect()) {
Expand Down Expand Up @@ -592,9 +593,30 @@ private void createEndNoteXML(XMLStreamWriter xmlw) throws XMLStreamException {

xmlw.writeEndElement(); // records
xmlw.writeEndElement(); // xml

}

public Map<String, String> getDataCiteMetadata() {
Map<String, String> metadata = new HashMap<>();
String authorString = getAuthorsString();

if (authorString.isEmpty()) {
authorString = ":unav";
}
String producerString = getPublisher();

if (producerString.isEmpty()) {
producerString = ":unav";
}

metadata.put("datacite.creator", authorString);
metadata.put("datacite.title", getTitle());
metadata.put("datacite.publisher", producerString);
metadata.put("datacite.publicationyear", getYear());
return metadata;
}


// helper methods
private String formatString(String value, boolean escapeHtml) {
return formatString(value, escapeHtml, "");
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/DatasetField.java
Expand Up @@ -335,7 +335,8 @@ public boolean isEmptyForDisplay() {

private boolean isEmpty(boolean forDisplay) {
if (datasetFieldType.isPrimitive()) { // primitive
for (String value : getValues()) {
List<String> values = forDisplay ? getValues() : getValues_nondisplay();
for (String value : values) {
if (!StringUtils.isBlank(value) && !(forDisplay && DatasetField.NA_VALUE.equals(value))) {
return false;
}
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/DatasetFieldType.java
Expand Up @@ -294,6 +294,20 @@ public void setMetadataBlock(MetadataBlock metadataBlock) {
this.metadataBlock = metadataBlock;
}

/**
* A formal URI for the field used in json-ld exports
*/
@Column(name = "uri", columnDefinition = "TEXT")
private String uri;

public String getUri() {
return uri;
}

public void setUri(String uri) {
this.uri=uri;
}

/**
* The list of controlled vocabulary terms that may be used as values for
* fields of this field type.
Expand Down
12 changes: 11 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/MetadataBlock.java
Expand Up @@ -43,6 +43,9 @@ public class MetadataBlock implements Serializable {
@Column( nullable = false )
private String displayName;

@Column( name = "namespaceuri", columnDefinition = "TEXT")
private String namespaceUri;

public Long getId() {
return id;
}
Expand All @@ -56,7 +59,14 @@ public String getName() {
public void setName(String name) {
this.name = name;
}


public String getNamespaceUri() {
return namespaceUri;
}
public void setNamespaceUri(String namespaceUri) {
this.namespaceUri = namespaceUri;
}

@OneToMany(mappedBy = "metadataBlock", cascade = {CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST})
@OrderBy("displayOrder")
private List<DatasetFieldType> datasetFieldTypes;
Expand Down
Expand Up @@ -55,6 +55,8 @@ public class DatasetFieldServiceApi extends AbstractApiBean {
@EJB
ControlledVocabularyValueServiceBean controlledVocabularyValueService;

private static final Logger logger = Logger.getLogger(DatasetFieldServiceApi.class.getName());

@GET
public Response getAll() {
try {
Expand Down Expand Up @@ -277,7 +279,7 @@ public Response loadDatasetFields(File file) {
return error(Status.EXPECTATION_FAILED, "File not found");

} catch (Exception e) {
Logger.getLogger(DatasetFieldServiceApi.class.getName()).log(Level.WARNING, "Error parsing dataset fields:" + e.getMessage(), e);
logger.log(Level.WARNING, "Error parsing dataset fields:" + e.getMessage(), e);
alr.setActionResult(ActionLogRecord.Result.InternalError);
alr.setInfo( alr.getInfo() + "// " + e.getMessage());
return error(Status.INTERNAL_SERVER_ERROR, e.getMessage());
Expand All @@ -287,8 +289,7 @@ public Response loadDatasetFields(File file) {
try {
br.close();
} catch (IOException e) {
Logger.getLogger(DatasetFieldServiceApi.class.getName())
.log(Level.WARNING, "Error closing the reader while importing Dataset Fields.");
logger.log(Level.WARNING, "Error closing the reader while importing Dataset Fields.");
}
}
actionLogSvc.log(alr);
Expand All @@ -308,6 +309,9 @@ private String parseMetadataBlock(String[] values) {
mdb.setOwner(dataverseService.findByAlias(values[2]));
}
mdb.setDisplayName(values[3]);
if (values.length>4 && !StringUtils.isEmpty(values[4])) {
mdb.setNamespaceUri(values[4]);
}

metadataBlockService.save(mdb);
return mdb.getName();
Expand Down Expand Up @@ -337,8 +341,13 @@ private String parseDatasetField(String[] values) {
dsf.setRequired(Boolean.parseBoolean(values[13]));
if (!StringUtils.isEmpty(values[14])) {
dsf.setParentDatasetFieldType(datasetFieldService.findByName(values[14]));
} else {
dsf.setParentDatasetFieldType(null);
}
dsf.setMetadataBlock(dataverseService.findMDBByName(values[15]));
if(values.length>16 && !StringUtils.isEmpty(values[16])) {
dsf.setUri(values[16]);
}
datasetFieldService.save(dsf);
return dsf.getName();
}
Expand Down