Project

General

Profile

Download (2.86 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.common.CdmBase;
16
import eu.etaxonomy.cdm.model.name.NonViralName;
17
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
18
import eu.etaxonomy.cdm.model.taxon.Taxon;
19
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
20
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
21
import eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent;
22

    
23
public class ChildTaxaMustDeriveNameFromParentValidator implements
24
		ConstraintValidator<ChildTaxaMustDeriveNameFromParent, TaxonRelationship> {
25

    
26
	public void initialize(ChildTaxaMustDeriveNameFromParent childTaxaMustDeriveNameFromParent) { }
27

    
28
	public boolean isValid(TaxonRelationship taxonRelationship, ConstraintValidatorContext constraintContext) {
29
		boolean valid = true;
30
		if(taxonRelationship.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
31
			Taxon parent = taxonRelationship.getToTaxon();
32
			Taxon child = taxonRelationship.getFromTaxon();
33
			TaxonNameBase parentName = CdmBase.deproxy(parent.getName(), TaxonNameBase.class);
34
			TaxonNameBase childName = CdmBase.deproxy(child.getName(), TaxonNameBase.class);
35
			if(parentName instanceof NonViralName && childName instanceof NonViralName) {
36
				if(((NonViralName)childName).getRank().isSpecies()) {
37
					System.out.println("Comparing " + ((NonViralName)parentName).getGenusOrUninomial() + " to" + ((NonViralName)childName).getGenusOrUninomial());
38
				    if(!((NonViralName)parentName).getGenusOrUninomial().equals(((NonViralName)childName).getGenusOrUninomial())) {
39
					valid = false;
40
					constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("genusOrUninomial").addError();
41
				}
42
				if(((NonViralName)parentName).getRank().isSpecies() || ((NonViralName)parentName).getRank().isInfraSpecific()) {
43
					System.out.println("Comparing " + ((NonViralName)parentName).getSpecificEpithet() + " to" + ((NonViralName)childName).getSpecificEpithet());
44
					if(!((NonViralName)parentName).getSpecificEpithet().equals(((NonViralName)childName).getSpecificEpithet())) {
45
						valid = false;
46
						constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("specificEpithet").addError();
47
					}	
48
				}
49
				}
50
			}
51
		}
52
		
53
		return valid;		
54
	}
55
}
(3-3/10)