Merged in changes from cate-development branch and upgraded to spring 3.0.0.RC1
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / validation / constraint / NoDuplicateNamesValidator.java
1 package eu.etaxonomy.cdm.validation.constraint;
2
3 import javax.validation.ConstraintValidator;
4 import javax.validation.ConstraintValidatorContext;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7
8 import eu.etaxonomy.cdm.api.service.INameService;
9 import eu.etaxonomy.cdm.api.service.pager.Pager;
10 import eu.etaxonomy.cdm.model.name.NonViralName;
11 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
12 import eu.etaxonomy.cdm.validation.annotation.NoDuplicateNames;
13
14 public class NoDuplicateNamesValidator implements
15 ConstraintValidator<NoDuplicateNames,NonViralName> {
16
17 private INameService nameService;
18
19 @Autowired
20 public void setNameService(INameService nameService) {
21 this.nameService = nameService;
22 }
23
24 public void initialize(NoDuplicateNames noDuplicateNames) { }
25
26 public boolean isValid(NonViralName name, ConstraintValidatorContext constraintContext) {
27 if(name == null) {
28 return true;
29 } else {
30 Pager<TaxonNameBase> matchingNonViralNames = nameService.searchNames(name.getGenusOrUninomial(),
31 name.getInfraGenericEpithet(),
32 name.getSpecificEpithet(),
33 name.getInfraSpecificEpithet(),
34 name.getRank(),
35 null,null, null, null);
36 if(matchingNonViralNames.getCount() > 0) {
37 if(matchingNonViralNames.getCount() == 1 && matchingNonViralNames.getRecords().get(0).equals(name)) {
38 return true;
39 } else {
40 return false;
41 }
42 } else {
43 return true;
44 }
45
46 }
47 }
48 }