77
88import com .google .gson .Gson ;
99import 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 .*;
2411import edu .harvard .iq .dataverse .api .dto .DatasetDTO ;
2512import edu .harvard .iq .dataverse .api .imports .ImportUtil .ImportType ;
2613import 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