Skip to content

Commit

Permalink
Fix disconnect of dataset version on edit files when templates are used
Browse files Browse the repository at this point in the history
  • Loading branch information
sekmiller committed Dec 11, 2015
1 parent 5986dba commit 9883aaa
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 53 deletions.
34 changes: 7 additions & 27 deletions src/main/java/edu/harvard/iq/dataverse/Dataset.java
Original file line number Diff line number Diff line change
Expand Up @@ -219,25 +219,11 @@ private DatasetVersion createNewDatasetVersion(Template template) {
DatasetVersion dsv = new DatasetVersion();
dsv.setVersionState(DatasetVersion.VersionState.DRAFT);
dsv.setFileMetadatas(new ArrayList());
DatasetVersion latestVersion = null;
DatasetVersion latestVersion;

//if the latest version has values get them copied over
if (!(template == null)) {
if (!template.getDatasetFields().isEmpty()) {
dsv.setDatasetFields(dsv.copyDatasetFields(template.getDatasetFields()));
}
if (template.getTermsOfUseAndAccess() != null){
TermsOfUseAndAccess terms= template.getTermsOfUseAndAccess().copyTermsOfUseAndAccess();
terms.setDatasetVersion(dsv);
dsv.setTermsOfUseAndAccess(terms);
} else {
TermsOfUseAndAccess terms = new TermsOfUseAndAccess();
terms.setDatasetVersion(dsv);
terms.setLicense(TermsOfUseAndAccess.License.CC0);
terms.setDatasetVersion(dsv);
dsv.setTermsOfUseAndAccess(terms);
}

if (template != null) {
dsv.updateDefaultValuesFromTemplate(template);
} else {
latestVersion = getLatestVersionForCopy();
if (latestVersion.getDatasetFields() != null && !latestVersion.getDatasetFields().isEmpty()) {
Expand Down Expand Up @@ -284,6 +270,7 @@ private DatasetVersion createNewDatasetVersion(Template template) {
return dsv;
}


public DatasetVersion getEditVersion() {
return getEditVersion(null);
}
Expand All @@ -299,20 +286,13 @@ public DatasetVersion getEditVersion(Template template) {
}
}

public DatasetVersion getCreateVersion() {
public DatasetVersion getCreateVersion() {
DatasetVersion dsv = new DatasetVersion();
dsv.setVersionState(DatasetVersion.VersionState.DRAFT);
dsv.setDataset(this);
dsv.setDatasetFields(dsv.initDatasetFields());
dsv.setFileMetadatas(new ArrayList());
TermsOfUseAndAccess terms = new TermsOfUseAndAccess();
terms.setDatasetVersion(dsv);
terms.setLicense(TermsOfUseAndAccess.License.CC0);
terms.setTermsOfAccess("");
dsv.setTermsOfUseAndAccess(terms);
dsv.setDataset(this);
dsv.initDefaultValues();
this.setVersions(new ArrayList());
getVersions().add(0, dsv);

return dsv;
}

Expand Down
29 changes: 3 additions & 26 deletions src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -860,35 +860,12 @@ public void updateSelectedTemplate(ValueChangeEvent event) {

selectedTemplate = (Template) event.getNewValue();
if (selectedTemplate != null) {
/*
If the user added files to the dataset prior to
changing versions we want to capture them and
reattach to the new version
*/
//First get files from current version
List<FileMetadata> addedFiles = new ArrayList();
if (!workingVersion.getFileMetadatas().isEmpty()){
for (FileMetadata fmd: workingVersion.getFileMetadatas() ){
addedFiles.add(fmd);
}
}
//then create new working version from the selected template
workingVersion = dataset.getEditVersion(selectedTemplate);
//Finally reattach the files to the new working version
if(!addedFiles.isEmpty()){
for(FileMetadata fmd : addedFiles){
workingVersion.getFileMetadatas().add(fmd);
fmd.setDatasetVersion(workingVersion);
}
}
workingVersion.updateDefaultValuesFromTemplate(selectedTemplate);
updateDatasetFieldInputLevels();
} else {
dataset = new Dataset();
dataset.setOwner(dataverseService.find(ownerId));
workingVersion = dataset.getCreateVersion();
} else {
workingVersion.initDefaultValues();
updateDatasetFieldInputLevels();

dataset.setIdentifier(datasetService.generateIdentifierSequence(protocol, authority, separator));
}
resetVersionUI();
}
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,35 @@ public boolean isMinorUpdate() {
}
return true;
}

public void updateDefaultValuesFromTemplate(Template template) {
if (!template.getDatasetFields().isEmpty()) {
this.setDatasetFields(this.copyDatasetFields(template.getDatasetFields()));
}
if (template.getTermsOfUseAndAccess() != null) {
TermsOfUseAndAccess terms = template.getTermsOfUseAndAccess().copyTermsOfUseAndAccess();
terms.setDatasetVersion(this);
this.setTermsOfUseAndAccess(terms);
} else {
TermsOfUseAndAccess terms = new TermsOfUseAndAccess();
terms.setDatasetVersion(this);
terms.setLicense(TermsOfUseAndAccess.License.CC0);
terms.setDatasetVersion(this);
this.setTermsOfUseAndAccess(terms);
}
}

public void initDefaultValues() {
//first clear then initialize - in case values were present
// from template or user entry
this.setDatasetFields(new ArrayList());
this.setDatasetFields(this.initDatasetFields());
TermsOfUseAndAccess terms = new TermsOfUseAndAccess();
terms.setDatasetVersion(this);
terms.setLicense(TermsOfUseAndAccess.License.CC0);
this.setTermsOfUseAndAccess(terms);

}

public DatasetVersion getMostRecentlyReleasedVersion() {
if (this.isReleased()) {
Expand Down

0 comments on commit 9883aaa

Please sign in to comment.