Skip to content

Commit

Permalink
use a set to ensure uniqueness #8236
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed Nov 19, 2021
1 parent 247eb5a commit 291dbbe
Showing 1 changed file with 8 additions and 17 deletions.
25 changes: 8 additions & 17 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() {
List<DataverseFieldTypeInputLevel> listDFTIL = new ArrayList<>();
Set<DataverseFieldTypeInputLevel> setDFTIL = new HashSet<>();
if (editMode != null && ( editMode.equals(EditMode.INFO) || editMode.equals(EditMode.CREATE))) {

List<MetadataBlock> selectedBlocks = new ArrayList<>();
Expand All @@ -611,7 +611,6 @@ 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 @@ -621,28 +620,17 @@ public String save() {
}

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

//also add the parent as required (if it hasn't been added already)
//also add the parent as required
if (dsft.isHasParent()) {
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);
}
setDFTIL.add(new DataverseFieldTypeInputLevel(dsft.getParentDatasetFieldType(), dataverse,true, true));
}
}
}
if ((!dsft.isHasParent() && !dsft.isInclude())
|| (dsft.isHasParent() && !dsft.getParentDatasetFieldType().isInclude())) {
listDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,false, false));
setDFTIL.add(new DataverseFieldTypeInputLevel(dsft, dataverse,false, false));
}
}
}
Expand All @@ -658,6 +646,9 @@ 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 291dbbe

Please sign in to comment.