diff --git a/src/main/java/Bundle.properties b/src/main/java/Bundle.properties index 02fbce1af3d..e768e4c6b99 100755 --- a/src/main/java/Bundle.properties +++ b/src/main/java/Bundle.properties @@ -1060,7 +1060,7 @@ dataset.cite.title.released=DRAFT VERSION will be replaced in the citation with dataset.cite.title.draft=DRAFT VERSION will be replaced in the citation with the selected version once the dataset has been published. dataset.cite.title.deassessioned=DEACCESSIONED VERSION has been added to the citation for this version since it is no longer available. dataset.cite.standards.tip=Learn about Data Citation Standards. -dataset.cite.downloadBtn=Cite Data +dataset.cite.downloadBtn=Cite Dataset dataset.cite.downloadBtn.xml=EndNote XML dataset.cite.downloadBtn.ris=RIS dataset.cite.downloadBtn.bib=BibTeX @@ -1201,6 +1201,7 @@ file.spss-porExtraLabels=Variable Labels file.spss-porExtraLabels.title=Upload an additional text file with extra variable labels. file.spss-porExtraLabels.selectToAddBtn=Select File to Add file.ingestFailed=Tabular Data Ingest Failed +file.explore.twoRavens=TwoRavens file.mapData=Map Data file.mapData.viewMap=WorldMap file.mapData.unpublished.header=Data Not Published @@ -1218,7 +1219,7 @@ file.requestAccess.dialog.msg=You need to Sign Up or Log In to request access to this file. file.accessRequested=Access Requested -file.ingestInproGress=Ingest in progress... +file.ingestInProgress=Ingest in progress... file.dataFilesTab.metadata.header=Metadata file.dataFilesTab.metadata.addBtn=Add + Edit Metadata @@ -1390,11 +1391,16 @@ dataset.widgets.advanced.success.message=Successfully updated your Personal Webs dataset.widgets.advanced.failure.message=The dataverse Personal Website URL has not been updated. # file.xhtml +file.share.fileShare=Share File +file.share.fileShare.tip=Share this file on your favorite social media networks. +file.share.fileShare.shareText=View this file. file.title.label=Title file.citation.label=Citation +file.cite.downloadBtn=Cite Data File file.general.metadata.label=General Metadata file.description.label=Description file.tags.label=Tags +file.lastupdated.label=Last Updated file.metadataTab.fileMetadata.header=File Metadata file.metadataTab.fileMetadata.persistentid.label=Data File Persistent ID @@ -1402,6 +1408,8 @@ file.metadataTab.fileMetadata.unf.label=UNF file.metadataTab.fileMetadata.size.label=Size file.metadataTab.fileMetadata.type.label=Type file.metadataTab.fileMetadata.description.label=Description +file.metadataTab.fileMetadata.publicationDate.label=Publication Date +file.metadataTab.fileMetadata.depositDate.label=Deposit Date file.metadataTab.fitsMetadata.header=FITS Metadata file.metadataTab.provenance.header=File Provenance file.metadataTab.provenance.body=File Provenance information coming in a later release... diff --git a/src/main/java/Bundle_zh_CN.properties b/src/main/java/Bundle_zh_CN.properties index d2a8589d2e7..640f504a274 100644 --- a/src/main/java/Bundle_zh_CN.properties +++ b/src/main/java/Bundle_zh_CN.properties @@ -361,7 +361,7 @@ file.downloadBtn.format.original=\u539f\u59cb\u6587\u4ef6\u683c\u5f0f\uff08{0}\u file.downloadBtn.format.rdata=RDATA\u683c\u5f0f file.downloadBtn.format.var=\u53ef\u53d8\u5143 file.downloadBtn.format.citation=\u6570\u636e\u6587\u4ef6\u5f15\u7528 -file.ingestInproGress=\u6444\u53d6\u4e2d... +file.ingestInProgress=\u6444\u53d6\u4e2d... file.dataFilesTab.metadata.header=\u5143\u6570\u636e file.dataFilesTab.metadata.addBtn=\u6dfb\u52a0+\u7f16\u8f91\u5143\u6570\u636e file.dataFilesTab.terms.header=\u8bb8\u53ef+\u6761\u6b3e diff --git a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java index 3e6bba7e434..c969d4c29a1 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java @@ -172,7 +172,7 @@ public String toString(boolean html) { // append UNF if (!StringUtils.isEmpty(UNF)) { - citation.append(" [").append(UNF).append("]"); + citation.append(", ").append(UNF); } for (DatasetField dsf : optionalValues) { diff --git a/src/main/java/edu/harvard/iq/dataverse/DataFile.java b/src/main/java/edu/harvard/iq/dataverse/DataFile.java index 76ca90e8038..e8dfe1a18c8 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataFile.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataFile.java @@ -17,6 +17,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Files; +import java.text.SimpleDateFormat; import java.util.Arrays; import javax.persistence.Entity; import javax.persistence.OneToMany; @@ -693,4 +694,19 @@ public boolean hasGeospatialTag(){ } return false; } + + public String getPublicationDateFormattedYYYYMMDD() { + if (getPublicationDate() != null){ + return new SimpleDateFormat("yyyy-MM-dd").format(getPublicationDate()); + } + return null; + } + + public String getCreateDateFormattedYYYYMMDD() { + if (getCreateDate() != null){ + return new SimpleDateFormat("yyyy-MM-dd").format(getCreateDate()); + } + return null; + } + } diff --git a/src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java index 90878c394a6..aabb1d4bb15 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java @@ -435,7 +435,7 @@ public void findFileMetadataOptimizedExperimental(Dataset owner, DatasetVersion int i = 0; - List dataTableResults = em.createNativeQuery("SELECT t0.ID, t0.DATAFILE_ID, t0.UNF, t0.CASEQUANTITY, t0.VARQUANTITY, t0.ORIGINALFILEFORMAT FROM dataTable t0, dataFile t1, dvObject t2 WHERE ((t0.DATAFILE_ID = t1.ID) AND (t1.ID = t2.ID) AND (t2.OWNER_ID = " + owner.getId() + "))").getResultList(); + List dataTableResults = em.createNativeQuery("SELECT t0.ID, t0.DATAFILE_ID, t0.UNF, t0.CASEQUANTITY, t0.VARQUANTITY, t0.ORIGINALFILEFORMAT FROM dataTable t0, dataFile t1, dvObject t2 WHERE ((t0.DATAFILE_ID = t1.ID) AND (t1.ID = t2.ID) AND (t2.OWNER_ID = " + owner.getId() + ")) ORDER BY t0.ID").getResultList(); for (Object[] result : dataTableResults) { DataTable dataTable = new DataTable(); @@ -476,7 +476,7 @@ public void findFileMetadataOptimizedExperimental(Dataset owner, DatasetVersion i = 0; - List fileResults = em.createNativeQuery("SELECT t0.ID, t0.CREATEDATE, t0.INDEXTIME, t0.MODIFICATIONTIME, t0.PERMISSIONINDEXTIME, t0.PERMISSIONMODIFICATIONTIME, t0.PUBLICATIONDATE, t0.CREATOR_ID, t0.RELEASEUSER_ID, t1.CONTENTTYPE, t1.FILESYSTEMNAME, t1.FILESIZE, t1.INGESTSTATUS, t1.CHECKSUMVALUE, t1.RESTRICTED, t1.CHECKSUMTYPE FROM DVOBJECT t0, DATAFILE t1 WHERE ((t0.OWNER_ID = " + owner.getId() + ") AND ((t1.ID = t0.ID) AND (t0.DTYPE = 'DataFile')))").getResultList(); + List fileResults = em.createNativeQuery("SELECT t0.ID, t0.CREATEDATE, t0.INDEXTIME, t0.MODIFICATIONTIME, t0.PERMISSIONINDEXTIME, t0.PERMISSIONMODIFICATIONTIME, t0.PUBLICATIONDATE, t0.CREATOR_ID, t0.RELEASEUSER_ID, t1.CONTENTTYPE, t1.FILESYSTEMNAME, t1.FILESIZE, t1.INGESTSTATUS, t1.CHECKSUMVALUE, t1.RESTRICTED, t1.CHECKSUMTYPE FROM DVOBJECT t0, DATAFILE t1 WHERE ((t0.OWNER_ID = " + owner.getId() + ") AND ((t1.ID = t0.ID) AND (t0.DTYPE = 'DataFile'))) ORDER BY t0.ID").getResultList(); for (Object[] result : fileResults) { Integer file_id = (Integer) result[0]; @@ -599,7 +599,6 @@ public void findFileMetadataOptimizedExperimental(Dataset owner, DatasetVersion filesMap.put(dataFile.getId(), i++); } - owner.setFiles(dataFiles); fileResults = null; logger.fine("Retrieved and cached "+i+" datafiles."); @@ -613,13 +612,14 @@ public void findFileMetadataOptimizedExperimental(Dataset owner, DatasetVersion logger.fine("Retreived "+i+" file categories attached to the dataset."); if (requestedVersion != null) { - requestedVersion.setFileMetadatas(retrieveFileMetadataForVersion(owner, requestedVersion, filesMap, categoryMap)); + requestedVersion.setFileMetadatas(retrieveFileMetadataForVersion(owner, requestedVersion, dataFiles, filesMap, categoryMap)); } else { for (DatasetVersion version : owner.getVersions()) { - version.setFileMetadatas(retrieveFileMetadataForVersion(owner, version, filesMap, categoryMap)); + version.setFileMetadatas(retrieveFileMetadataForVersion(owner, version, dataFiles, filesMap, categoryMap)); logger.fine("Retrieved "+version.getFileMetadatas().size()+" filemetadatas for the version "+version.getId()); } } + owner.setFiles(dataFiles); } private List retrieveFileAccessRequesters(DataFile fileIn){ @@ -638,7 +638,7 @@ private List retrieveFileAccessRequesters(DataFile fileIn){ return retList; } - private List retrieveFileMetadataForVersion(Dataset dataset, DatasetVersion version, Map filesMap, Map categoryMap) { + private List retrieveFileMetadataForVersion(Dataset dataset, DatasetVersion version, List dataFiles, Map filesMap, Map categoryMap) { List retList = new ArrayList<>(); Map> categoryMetaMap = new HashMap<>(); @@ -656,7 +656,7 @@ private List retrieveFileMetadataForVersion(Dataset dataset, Datas logger.fine("Retrieved and mapped "+i+" file categories attached to files in the version "+version.getId()); categoryResults = null; - List metadataResults = em.createNativeQuery("select id, datafile_id, DESCRIPTION, LABEL, RESTRICTED, DIRECTORYLABEL from FileMetadata where datasetversion_id = "+version.getId()).getResultList(); + List metadataResults = em.createNativeQuery("select id, datafile_id, DESCRIPTION, LABEL, RESTRICTED, DIRECTORYLABEL from FileMetadata where datasetversion_id = "+version.getId() + " ORDER BY LABEL").getResultList(); for (Object[] result : metadataResults) { Integer filemeta_id = (Integer) result[0]; @@ -688,7 +688,8 @@ private List retrieveFileMetadataForVersion(Dataset dataset, Datas fileMetadata.setDatasetVersion(version); - fileMetadata.setDataFile(dataset.getFiles().get(file_list_id)); + //fileMetadata.setDataFile(dataset.getFiles().get(file_list_id)); + fileMetadata.setDataFile(dataFiles.get(file_list_id)); String description = (String) result[2]; @@ -720,7 +721,14 @@ private List retrieveFileMetadataForVersion(Dataset dataset, Datas logger.fine("Retrieved "+retList.size()+" file metadatas for version "+version.getId()+" (inside the retrieveFileMetadataForVersion method)."); - Collections.sort(retList, FileMetadata.compareByLabel); + /* + We no longer perform this sort here, just to keep this filemetadata + list as identical as possible to when it's produced by the "traditional" + EJB method. When it's necessary to have the filemetadatas sorted by + FileMetadata.compareByLabel, the DatasetVersion.getFileMetadatasSorted() + method should be called. + + Collections.sort(retList, FileMetadata.compareByLabel); */ return retList; } @@ -1226,4 +1234,4 @@ public void populateFileSearchCard(SolrSearchResult solrSearchResult) { solrSearchResult.setEntity(this.findCheapAndEasy(solrSearchResult.getEntityId())); } -} +} \ No newline at end of file diff --git a/src/main/java/edu/harvard/iq/dataverse/Dataset.java b/src/main/java/edu/harvard/iq/dataverse/Dataset.java index cc5c241740e..d005ee5a970 100644 --- a/src/main/java/edu/harvard/iq/dataverse/Dataset.java +++ b/src/main/java/edu/harvard/iq/dataverse/Dataset.java @@ -10,6 +10,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.logging.Logger; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -41,6 +42,7 @@ @Index(columnList = "thumbnailfile_id")}, uniqueConstraints = @UniqueConstraint(columnNames = {"authority,protocol,identifier,doiseparator"})) public class Dataset extends DvObjectContainer { + private static final Logger logger = Logger.getLogger(Dataset.class.getCanonicalName()); // public static final String REDIRECT_URL = "/dataset.xhtml?persistentId="; public static final String TARGET_URL = "/citation?persistentId="; @@ -185,10 +187,12 @@ public String getGlobalId() { } public List getFiles() { + logger.info("getFiles() on dataset "+this.getId()); return files; } public void setFiles(List files) { + logger.info("setFiles() on dataset "+this.getId()); this.files = files; } diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 436a4b9a009..0c228a087ba 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -78,11 +78,14 @@ import java.util.HashSet; import javax.faces.model.SelectItem; import java.util.logging.Level; +import edu.harvard.iq.dataverse.datasetutility.TwoRavensHelper; +import edu.harvard.iq.dataverse.datasetutility.WorldMapPermissionHelper; import javax.faces.component.UIComponent; import javax.faces.component.UIInput; import javax.faces.event.AjaxBehaviorEvent; +import javax.faces.context.ExternalContext; import org.apache.commons.lang.StringEscapeUtils; import org.primefaces.component.tabview.TabView; @@ -148,6 +151,8 @@ public enum DisplayMode { @EJB GuestbookResponseServiceBean guestbookResponseService; @EJB + FileDownloadServiceBean fileDownloadService; + @EJB DataverseLinkingServiceBean dvLinkingService; @EJB DatasetLinkingServiceBean dsLinkingService; @@ -162,8 +167,11 @@ public enum DisplayMode { @Inject DatasetVersionUI datasetVersionUI; @Inject PermissionsWrapper permissionsWrapper; + @Inject FileDownloadHelper fileDownloadHelper; + @Inject TwoRavensHelper twoRavensHelper; + @Inject WorldMapPermissionHelper worldMapPermissionHelper; + - private final DateFormat displayDateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM); private Dataset dataset = new Dataset(); private EditMode editMode; @@ -186,6 +194,7 @@ public enum DisplayMode { private List