1 package eu
.etaxonomy
.cdm
.validation
.constraint
;
3 import javax
.validation
.ConstraintValidator
;
4 import javax
.validation
.ConstraintValidatorContext
;
6 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
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
;
14 public class NoDuplicateNamesValidator
implements
15 ConstraintValidator
<NoDuplicateNames
,NonViralName
> {
17 private INameService nameService
;
20 public void setNameService(INameService nameService
) {
21 this.nameService
= nameService
;
24 public void initialize(NoDuplicateNames noDuplicateNames
) { }
26 public boolean isValid(NonViralName name
, ConstraintValidatorContext constraintContext
) {
30 Pager
<TaxonNameBase
> matchingNonViralNames
= nameService
.searchNames(name
.getGenusOrUninomial(),
31 name
.getInfraGenericEpithet(),
32 name
.getSpecificEpithet(),
33 name
.getInfraSpecificEpithet(),
35 null,null, null, null);
36 if(matchingNonViralNames
.getCount() > 0) {
37 if(matchingNonViralNames
.getCount() == 1 && matchingNonViralNames
.getRecords().get(0).equals(name
)) {