Project

General

Profile

Download (1.97 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/ 
9

    
10
package eu.etaxonomy.cdm.validation.constraint;
11

    
12
import javax.validation.ConstraintValidator;
13
import javax.validation.ConstraintValidatorContext;
14

    
15
import eu.etaxonomy.cdm.model.name.Rank;
16
import eu.etaxonomy.cdm.model.taxon.Taxon;
17
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
18
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
19
import eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks;
20

    
21
public class ChildTaxaMustNotSkipRanksValidator implements
22
		ConstraintValidator<ChildTaxaMustNotSkipRanks, TaxonRelationship> {
23

    
24
	public void initialize(ChildTaxaMustNotSkipRanks childTaxaMustNotSkipRanks) { }
25

    
26
	public boolean isValid(TaxonRelationship taxonRelationship, ConstraintValidatorContext constraintContext) {
27
		boolean valid = true;
28
		if(taxonRelationship.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
29
			Taxon parent = taxonRelationship.getToTaxon();
30
			Taxon child = taxonRelationship.getFromTaxon();
31
			
32
			
33
			if(parent.getName().getRank().isSupraGeneric() && child.getName().getRank().isLower(Rank.GENUS())) {
34
				valid = false;
35
				constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipGenus.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("rank").addError();				
36
			} else if(parent.getName().getRank().isHigher(Rank.SPECIES()) && child.getName().getRank().isLower(Rank.SPECIES())) {
37
				valid = false;
38
				constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipSpecies.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("rank").addError();
39
			}
40
		}
41
		
42
		return valid;		
43
	}
44
}
(4-4/11)