Mercurial > hg > LGDataverses
diff src/main/java/edu/harvard/iq/dataverse/DatasetFieldValidator.java @ 10:a50cf11e5178
Rewrite LGDataverse completely upgrading to dataverse4.0
| author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
|---|---|
| date | Tue, 08 Sep 2015 17:00:21 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldValidator.java Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,47 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package edu.harvard.iq.dataverse; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import org.apache.commons.lang.StringUtils; + + +/** + * + * @author gdurand + */ +public class DatasetFieldValidator implements ConstraintValidator<ValidateDatasetFieldType, DatasetField> { + + @Override + public void initialize(ValidateDatasetFieldType constraintAnnotation) { + } + + @Override + public boolean isValid(DatasetField value, ConstraintValidatorContext context) { + context.disableDefaultConstraintViolation(); // we do this so we can have different messages depending on the different issue + + DatasetFieldType dsfType = value.getDatasetFieldType(); + //SEK Additional logic turns off validation for templates + if (isTemplateDatasetField(value)){ + return true; + } + if (((dsfType.isPrimitive() && dsfType.isRequired()) || (dsfType.isPrimitive() && value.isRequired())) + && StringUtils.isBlank(value.getValue())) { + context.buildConstraintViolationWithTemplate(dsfType.getDisplayName() + " is required.").addConstraintViolation(); + return false; + } + return true; + } + + private boolean isTemplateDatasetField(DatasetField dsf) { + if (dsf.getParentDatasetFieldCompoundValue() != null) { + return isTemplateDatasetField(dsf.getParentDatasetFieldCompoundValue().getParentDatasetField()); + } else { + return dsf.getTemplate() != null; + } + } +}
