Skip to content

Commit

Permalink
Revert "use a set to ensure uniqueness #8236"
Browse files Browse the repository at this point in the history
This reverts commit 291dbbe.

The original, non-set approach actually works.
  • Loading branch information
pdurbin committed Dec 1, 2021
1 parent 9cf1d53 commit bb2f3cc
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions src/main/java/edu/harvard/iq/dataverse/DataversePage.java
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@ public void updateOptionsRadio(Long mdbId, Long dsftId) {


public String save() {
Set<DataverseFieldTypeInputLevel> setDFTIL = new HashSet<>();
List<DataverseFieldTypeInputLevel> listDFTIL = new ArrayList<>();
if (editMode != null && ( editMode.equals(EditMode.INFO) || editMode.equals(EditMode.CREATE))) {

List<MetadataBlock> selectedBlocks = new ArrayList<>();
Expand All @@ -611,6 +611,7 @@ public String save() {
// so we skip looking at parents (which get set automatically with their children)
if (!dsft.isHasChildren() && dsft.isRequiredDV()) {
boolean addRequiredInputLevels = false;
boolean parentAlreadyAdded = false;

if (!dsft.isHasParent() && dsft.isInclude()) {
addRequiredInputLevels = !dsft.isRequired();
Expand All @@ -620,17 +621,28 @@ public String save() {
}

if (addRequiredInputLevels) {
setDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,true, true));
listDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,true, true));

//also add the parent as required
//also add the parent as required (if it hasn't been added already)
if (dsft.isHasParent()) {
setDFTIL.add(new DataverseFieldTypeInputLevel(dsft.getParentDatasetFieldType(), dataverse,true, true));
DataverseFieldTypeInputLevel parentToAdd = new DataverseFieldTypeInputLevel(dsft.getParentDatasetFieldType(), dataverse, true, true);
for (DataverseFieldTypeInputLevel dataverseFieldTypeInputLevel : listDFTIL) {
if (dataverseFieldTypeInputLevel.getDatasetFieldType().getId() == parentToAdd.getDatasetFieldType().getId()) {
parentAlreadyAdded = true;
break;
}
}
if (!parentAlreadyAdded) {
// Only add the parent once. There's a UNIQUE (dataverse_id, datasetfieldtype_id)
// constraint on the dataversefieldtypeinputlevel table we need to avoid.
listDFTIL.add(parentToAdd);
}
}
}
}
if ((!dsft.isHasParent() && !dsft.isInclude())
|| (dsft.isHasParent() && !dsft.getParentDatasetFieldType().isInclude())) {
setDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,false, false));
listDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,false, false));
}
}
}
Expand All @@ -646,9 +658,6 @@ public String save() {

}

List<DataverseFieldTypeInputLevel> listDFTIL = new ArrayList<>();
listDFTIL.addAll(setDFTIL);

Command<Dataverse> cmd = null;
//TODO change to Create - for now the page is expecting INFO instead.
Boolean create;
Expand Down

0 comments on commit bb2f3cc

Please sign in to comment.