Skip to content

Commit

Permalink
some intermediate fixes for the datasetpage.
Browse files Browse the repository at this point in the history
  • Loading branch information
landreev committed Oct 22, 2015
1 parent fa73991 commit a129c9a
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 28 deletions.
32 changes: 20 additions & 12 deletions src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,17 @@ public FileMetadata findFileMetadataByDatasetVersionIdAndDataFileId(Long dataset
return (FileMetadata) query.getSingleResult();
}

public List<FileMetadata> findFileMetadataByDatasetAndVersionExperimental(Dataset owner, DatasetVersion version) {
/*
* This is an experimental method for populating the versions of
* the datafile with the filemetadatas, optimized for making as few db
* queries as possible.
* It should only be used to retrieve filemetadata for the DatasetPage!
* It is not guaranteed to adequately perform anywhere else.
*/
public void findFileMetadataOptimizedExperimental(Dataset owner) { //, DatasetVersion version) {
List<DataFile> dataFiles = new ArrayList<>();
List<DataTable> dataTables = new ArrayList<>();
List<FileMetadata> retList = new ArrayList<>();
//List<FileMetadata> retList = new ArrayList<>();

Map<Long, AuthenticatedUser> userMap = new HashMap<>();
Map<Long, Integer> filesMap = new HashMap<>();
Expand Down Expand Up @@ -373,7 +380,7 @@ public List<FileMetadata> findFileMetadataByDatasetAndVersionExperimental(Datase
fileResults = null;

// and now, file metadatas:

/*
List<Object[]> metadataResults = em.createNativeQuery("select id, datafile_id, DESCRIPTION, LABEL, RESTRICTED from FileMetadata where datasetversion_id = "+version.getId()).getResultList();
for (Object[] result : metadataResults) {
Expand Down Expand Up @@ -422,23 +429,22 @@ public List<FileMetadata> findFileMetadataByDatasetAndVersionExperimental(Datase
}
metadataResults = null;
*/

// TODO:
// combine the 2 queries above - do it all in one step... (or not??)

for (DatasetVersion otherVersion : owner.getVersions()) {
if (otherVersion.getId().equals(version.getId())) {
continue;
}
i = 0;
for (DatasetVersion version : owner.getVersions()) {
//if (otherVersion.getId().equals(version.getId())) {
// continue;
//}

// otherwise:

otherVersion.setFileMetadatas(retrieveFileMetadataForVersion(owner, otherVersion, filesMap));
version.setFileMetadatas(retrieveFileMetadataForVersion(owner, version, filesMap));

}


return retList;
//return retList;
}

private List<FileMetadata> retrieveFileMetadataForVersion(Dataset dataset, DatasetVersion version, Map<Long, Integer> filesMap) {
Expand Down Expand Up @@ -489,6 +495,8 @@ private List<FileMetadata> retrieveFileMetadataForVersion(Dataset dataset, Datas

metadataResults = null;

Collections.sort(retList, FileMetadata.compareByLabel);

return retList;
}

Expand Down
41 changes: 28 additions & 13 deletions src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,9 @@ public void setFileMetadatasSearch(List<FileMetadata> fileMetadatasSearch) {
this.fileMetadatasSearch = fileMetadatasSearch;
}

public void updateFileSearch(){
this.fileMetadatasSearch = datafileService.findFileMetadataByDatasetVersionIdLabelSearchTerm(dataset.getLatestVersion().getId(), this.fileLabelSearchTerm, "", "");
public void updateFileSearch(){
// temporarily disabling the search functionality:
//this.fileMetadatasSearch = datafileService.findFileMetadataByDatasetVersionIdLabelSearchTerm(dataset.getLatestVersion().getId(), this.fileLabelSearchTerm, "", "");
}


Expand Down Expand Up @@ -905,8 +906,8 @@ private void updateDatasetFieldInputLevels() {
}

public void handleChange() {
logger.info("handle change");
logger.info("new value " + selectedTemplate.getId());
logger.fine("handle change");
logger.fine("new value " + selectedTemplate.getId());
}

public void handleChangeButton() {
Expand Down Expand Up @@ -1165,15 +1166,27 @@ public String init() {
if (persistentId != null) {
logger.fine("initializing DatasetPage with persistent ID " + persistentId);
// Set Working Version and Dataset by PersistentID
retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionByPersistentId(persistentId, version);
dataset = datasetService.findByGlobalId(persistentId);
if (dataset != null) {
logger.info("retrived dataset, id="+dataset.getId());
}
retrieveDatasetVersionResponse = datasetVersionService.selectRequestedVersion(dataset.getVersions(), version);
//retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionByPersistentId(persistentId, version);
this.workingVersion = retrieveDatasetVersionResponse.getDatasetVersion();
logger.info("retreived version: id: " + workingVersion.getId() + ", state: " + this.workingVersion.getVersionState());

} else if (dataset.getId() != null) {
// Set Working Version and Dataset by Datasaet Id and Version
retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionById(dataset.getId(), version);
dataset = datasetService.find(dataset.getId());
//retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionById(dataset.getId(), version);
retrieveDatasetVersionResponse = datasetVersionService.selectRequestedVersion(dataset.getVersions(), version);
this.workingVersion = retrieveDatasetVersionResponse.getDatasetVersion();
logger.info("retreived version: id: " + workingVersion.getId() + ", state: " + this.workingVersion.getVersionState());

} else if (versionId != null) {
// TODO: 4.2.1 - this method is broken as of now!
// Set Working Version and Dataset by DatasaetVersion Id
retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionByVersionId(versionId);
//retrieveDatasetVersionResponse = datasetVersionService.retrieveDatasetVersionByVersionId(versionId);

} else if (retrieveDatasetVersionResponse == null) {
return "/404.xhtml";
Expand All @@ -1183,9 +1196,8 @@ public String init() {
return "/404.xhtml";
}

this.workingVersion = retrieveDatasetVersionResponse.getDatasetVersion();
logger.fine("retreived version: id: " + workingVersion.getId() + ", state: " + this.workingVersion.getVersionState());
this.dataset = this.workingVersion.getDataset();

//this.dataset = this.workingVersion.getDataset();

// end: Set the workingVersion and Dataset
// ---------------------------------------
Expand Down Expand Up @@ -1223,8 +1235,8 @@ public String init() {
// an attempt to retreive both the filemetadatas and datafiles early on, so that
// we don't have to do so later (possibly, many more times than necessary):

workingVersion.setFileMetadatas(datafileService.findFileMetadataByDatasetAndVersionExperimental(dataset, workingVersion));

datafileService.findFileMetadataOptimizedExperimental(dataset);
ownerId = dataset.getOwner().getId();
datasetNextMajorVersion = this.dataset.getNextMajorVersionString();
datasetNextMinorVersion = this.dataset.getNextMinorVersionString();
Expand All @@ -1235,7 +1247,7 @@ public String init() {
setReleasedVersionTabList(resetReleasedVersionTabList());
//SEK - lazymodel may be needed for datascroller in future release
// lazyModel = new LazyFileMetadataDataModel(workingVersion.getId(), datafileService );
fileMetadatasSearch = dataset.getLatestVersion().getFileMetadatasSorted();
fileMetadatasSearch = workingVersion.getFileMetadatas(); // no need to call getFileMetadatasSorted() - the datafileService method already sorted it for us. -- 4.2.1
// populate MapLayerMetadata
this.loadMapLayerMetadataLookup(); // A DataFile may have a related MapLayerMetadata object

Expand Down Expand Up @@ -2488,8 +2500,11 @@ public void startMultipleFileDownload (){

//public String startFileDownload(FileMetadata fileMetadata, String format) {
public void startFileDownload(FileMetadata fileMetadata, String format) {
logger.fine("starting file download for filemetadata "+fileMetadata.getId()+", datafile "+fileMetadata.getDataFile().getId());
createSilentGuestbookEntry(fileMetadata, format);
logger.fine("created guestbook entry for filemetadata "+fileMetadata.getId()+", datafile "+fileMetadata.getDataFile().getId());
callDownloadServlet(format, fileMetadata.getDataFile().getId());
logger.fine("issued file download redirect for filemetadata "+fileMetadata.getId()+", datafile "+fileMetadata.getDataFile().getId());
}

private String downloadFormat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ private void msg(String s){
* @param version
* @return boolean
*/
private boolean isVersionAskingForDraft(String version){
public boolean isVersionAskingForDraft(String version){

if (version == null){
return false;
Expand Down Expand Up @@ -544,7 +544,52 @@ public RetrieveDatasetVersionResponse retrieveDatasetVersionByPersistentId(Strin

}


public RetrieveDatasetVersionResponse selectRequestedVersion(List<DatasetVersion> versions, String versionTag) {

Long[] versionNumbers = parseVersionNumber(versionTag);
Long majorVersion = null;
Long minorVersion = null;

if (versionNumbers != null && versionNumbers.length == 2) {
majorVersion = versionNumbers[0];
minorVersion = versionNumbers[1];
}

for (DatasetVersion version : versions) {
DatasetVersion chosenVersion;

if (this.isVersionAskingForDraft(versionTag)) {

if (version.isDraft()) {
return new RetrieveDatasetVersionResponse(version, versionTag);
}

} else if (majorVersion != null && minorVersion != null) {
if (majorVersion.equals(version.getVersionNumber()) && minorVersion.equals(version.getMinorVersionNumber()) && (version.isReleased() || version.isDeaccessioned())) {
return new RetrieveDatasetVersionResponse(version, versionTag);
}
} else if (majorVersion != null) {
if (majorVersion.equals(version.getVersionNumber()) && version.isReleased()) {
return new RetrieveDatasetVersionResponse(version, versionTag);
}
//
} else {

if (version.isReleased()) {
// grab the first released version:
return new RetrieveDatasetVersionResponse(version, versionTag);
} else if (version.isDeaccessioned()) {
// grab the first (latest!) deaccessioned version
return new RetrieveDatasetVersionResponse(version, versionTag);
} else if (version.isDraft()) {
// draft is the last choice:
return new RetrieveDatasetVersionResponse(version, versionTag);
}
}
}

return null;
}

/**
* Find a DatasetVersion using the persisentID and version string
Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/dataset.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@
</p:tab>
<!-- 4.2.1: see above -->
<p:tab id="versionsTab" title="#{bundle['file.dataFilesTab.versions']}" rendered="#{empty DatasetPage.editMode}">
<ui:include src="dataset-versions.xhtml"></ui:include>
<!-- ui:include src="dataset-versions.xhtml"></ui:include -->
</p:tab>
</p:tabView>
</div>
Expand Down

0 comments on commit a129c9a

Please sign in to comment.