Skip to content

Commit 8fb0ab7

Browse files
committed
fix harvest with missing cvv that broke tests
1 parent 7054b64 commit 8fb0ab7

1 file changed

Lines changed: 7 additions & 14 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/api/imports/ImportServiceBean.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,7 @@
77

88
import com.google.gson.Gson;
99
import com.google.gson.GsonBuilder;
10-
import edu.harvard.iq.dataverse.Dataset;
11-
import edu.harvard.iq.dataverse.DatasetField;
12-
import edu.harvard.iq.dataverse.DatasetFieldConstant;
13-
import edu.harvard.iq.dataverse.DatasetFieldServiceBean;
14-
import edu.harvard.iq.dataverse.DatasetFieldType;
15-
import edu.harvard.iq.dataverse.DatasetFieldValue;
16-
import edu.harvard.iq.dataverse.DatasetServiceBean;
17-
import edu.harvard.iq.dataverse.DatasetVersion;
18-
import edu.harvard.iq.dataverse.Dataverse;
19-
import edu.harvard.iq.dataverse.DataverseContact;
20-
import edu.harvard.iq.dataverse.DataverseServiceBean;
21-
import edu.harvard.iq.dataverse.EjbDataverseEngine;
22-
import edu.harvard.iq.dataverse.GlobalId;
23-
import edu.harvard.iq.dataverse.MetadataBlockServiceBean;
10+
import edu.harvard.iq.dataverse.*;
2411
import edu.harvard.iq.dataverse.api.dto.DatasetDTO;
2512
import edu.harvard.iq.dataverse.api.imports.ImportUtil.ImportType;
2613
import edu.harvard.iq.dataverse.dataset.DatasetTypeServiceBean;
@@ -762,6 +749,8 @@ private void validateVersionMetadata(DatasetVersion version, PrintWriter log) th
762749
*/
763750
private boolean validateVersionMetadata(DatasetVersion version, boolean sanitize, PrintWriter cleanupLog) throws ImportException {
764751
boolean fixed = false;
752+
boolean allowHarvestingMissingCVV = version.getDataset().getHarvestedFrom() != null ? version.getDataset().getHarvestedFrom().getAllowHarvestingMissingCVV() : false;
753+
765754
Set<ConstraintViolation> invalidViolations = version.validate();
766755
if (!invalidViolations.isEmpty()) {
767756
for (ConstraintViolation v : invalidViolations) {
@@ -772,6 +761,10 @@ private boolean validateVersionMetadata(DatasetVersion version, boolean sanitize
772761

773762
msg += "Missing required field: " + f.getDatasetFieldType().getDisplayName() + ";";
774763
if (sanitize) {
764+
if (allowHarvestingMissingCVV && f.getDatasetFieldType().isControlledVocabulary()) {
765+
ControlledVocabularyValue ccv = new ControlledVocabularyValue(null, DatasetField.NA_VALUE, f.getDatasetFieldType());
766+
f.setControlledVocabularyValues(List.of(ccv));
767+
}
775768
msg += " populated with '" + DatasetField.NA_VALUE + "'";
776769
f.setSingleValue(DatasetField.NA_VALUE);
777770
fixed = true;

0 commit comments

Comments
 (0)