Changeset 5536


Ignore:
Timestamp:
08/07/14 15:04:10 (10 years ago)
Author:
Twan Goosen
Message:

Added validation of resources to the vc validator called on creation/update.
Refs #61

Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/service/impl/ReferenceValidator.java

    r5534 r5536  
    4949    }
    5050
    51     private final static ReferenceValidator validator = new ReferenceValidator();
    52 
    53     public static boolean validate(String value) {
     51    public boolean validate(String value) {
    5452        final Validatable<String> validatable = new Validatable<>(value);
    55         validator.validate(validatable);
     53        validate(validatable);
    5654        return validatable.isValid();
    5755    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/service/impl/VirtualCollectionValidatorImpl.java

    r5417 r5536  
    99import eu.clarin.cmdi.virtualcollectionregistry.model.Resource;
    1010import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     11import java.util.ArrayList;
    1112import java.util.HashSet;
     13import java.util.List;
    1214import java.util.Set;
    1315import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
     
    2628@Scope(value = SCOPE_PROTOTYPE)
    2729public class VirtualCollectionValidatorImpl implements VirtualCollectionValidator {
     30
    2831    private final Set<Creator> uniqueCreators = new HashSet<Creator>(16);
    2932    private final Set<String> uniqueResourceRefs = new HashSet<String>(512);
     
    5760                if (vc.getResources().isEmpty()) {
    5861                    throw new VirtualCollectionRegistryUsageException(
    59                         "extensional collection must contain on or " +
    60                         "more resources");
     62                            "extensional collection must contain on or "
     63                            + "more resources");
    6164                }
    6265                if (vc.getGeneratedBy() != null) {
    6366                    throw new VirtualCollectionRegistryUsageException(
    6467                            "extensional collection must not contain GeneratedBy");
     68                }
     69                final List<String> invalidRefs = getInvalidReferences(vc);
     70                if (!invalidRefs.isEmpty()) {
     71                    throw new VirtualCollectionRegistryUsageException(
     72                            String.format(
     73                                    "one or more references are not valid: %s",
     74                                    invalidRefs));
    6575                }
    6676                break;
     
    8898        }
    8999
    90         if ((vc.getReproducibilityNotice() != null) &&
    91                 (vc.getReproducibility() == null)) {
     100        if ((vc.getReproducibilityNotice() != null)
     101                && (vc.getReproducibility() == null)) {
    92102            throw new VirtualCollectionRegistryUsageException(
    93103                    "reproducibility notice without reproducubility");
     
    115125    }
    116126
     127    private List<String> getInvalidReferences(VirtualCollection vc) {
     128        final ReferenceValidator referenceValidator = new ReferenceValidator();
     129        final List<String> invalidRefs = new ArrayList<>();
     130        for (Resource resource : vc.getResources()) {
     131            if (!referenceValidator.validate(resource.getRef())) {
     132                invalidRefs.add(resource.getRef());
     133            }
     134        }
     135        return invalidRefs;
     136    }
     137
    117138    private void reset() {
    118139        uniqueCreators.clear();
Note: See TracChangeset for help on using the changeset viewer.