2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.model
.validation
;
11 import java
.util
.HashSet
;
13 import java
.util
.UUID
;
15 import javax
.persistence
.Column
;
16 import javax
.persistence
.Entity
;
17 import javax
.persistence
.EnumType
;
18 import javax
.persistence
.Enumerated
;
19 import javax
.persistence
.OneToMany
;
20 import javax
.validation
.Validator
;
21 import javax
.xml
.bind
.annotation
.XmlAccessType
;
22 import javax
.xml
.bind
.annotation
.XmlAccessorType
;
23 import javax
.xml
.bind
.annotation
.XmlElement
;
24 import javax
.xml
.bind
.annotation
.XmlElementWrapper
;
25 import javax
.xml
.bind
.annotation
.XmlRootElement
;
26 import javax
.xml
.bind
.annotation
.XmlType
;
27 import javax
.xml
.bind
.annotation
.adapters
.XmlJavaTypeAdapter
;
29 import org
.apache
.log4j
.Logger
;
30 import org
.hibernate
.annotations
.Cascade
;
31 import org
.hibernate
.annotations
.CascadeType
;
32 import org
.hibernate
.annotations
.Fetch
;
33 import org
.hibernate
.annotations
.FetchMode
;
34 import org
.hibernate
.annotations
.Type
;
35 import org
.hibernate
.search
.annotations
.FieldBridge
;
37 import eu
.etaxonomy
.cdm
.hibernate
.search
.UuidBridge
;
38 import eu
.etaxonomy
.cdm
.jaxb
.UUIDAdapter
;
39 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
40 import eu
.etaxonomy
.cdm
.validation
.CRUDEventType
;
43 * An {@code EntityValidationResult} models the result of validating one entity, that is,
44 * the outcome of calling {@link Validator#validate(Object, Class...)}. More than one
45 * constraint {@link EntityConstraintViolation} may be violated while validating the
48 * @see EntityValidationResult
50 * @author ayco_holleman
54 @XmlAccessorType(XmlAccessType
.FIELD
)
56 @XmlType(name
= "EntityValidationResult", propOrder
= {
58 "ValidatedEntityUuid",
59 "ValidatedEntityClass",
60 "UserFriendlyDescription",
61 "UserFriendlyTypeName",
63 "ConstraintViolations"
66 @XmlRootElement(name
= "EntityValidationResult")
68 public class EntityValidationResult
extends CdmBase
{
70 private static final long serialVersionUID
= 9120571815593117363L;
72 @SuppressWarnings("unused")
73 private static final Logger logger
= Logger
.getLogger(EntityValidationResult
.class);
76 public static EntityValidationResult
newInstance(){
77 return new EntityValidationResult();
80 @XmlElement(name
= "ValidatedEntityId")
81 private int validatedEntityId
;
83 @XmlElement(name
= "ValidatedEntityUuid")
84 @XmlJavaTypeAdapter(UUIDAdapter
.class)
85 @Type(type
= "uuidUserType")
86 @Column(length
=36) //TODO needed? Type UUID will always assure that is exactly 36
87 @FieldBridge(impl
= UuidBridge
.class) //TODO required?
88 private UUID validatedEntityUuid
;
90 @XmlElement(name
= "ValidatedEntityClass")
91 private String validatedEntityClass
;
93 @XmlElement(name
= "UserFriendlyDescription")
94 private String userFriendlyDescription
;
96 @XmlElement(name
= "UserFriendlyTypeName")
97 private String userFriendlyTypeName
;
99 @XmlElement(name
= "CrudEventType")
100 @Enumerated(EnumType
.STRING
)
101 private CRUDEventType crudEventType
;
103 @XmlElementWrapper(name
= "EntityConstraintViolations")
104 @OneToMany(mappedBy
= "entityValidationResult")
105 @Cascade({ CascadeType
.ALL
})
106 @Fetch(value
= FetchMode
.JOIN
)
107 private Set
<EntityConstraintViolation
> entityConstraintViolations
;
110 protected EntityValidationResult(){
115 public int getValidatedEntityId(){
116 return validatedEntityId
;
120 public void setValidatedEntityId(int validatedEntityId
){
121 this.validatedEntityId
= validatedEntityId
;
125 public UUID
getValidatedEntityUuid(){
126 return validatedEntityUuid
;
130 public void setValidatedEntityUuid(UUID validatedEntityUuid
){
131 this.validatedEntityUuid
= validatedEntityUuid
;
135 public String
getValidatedEntityClass(){
136 return validatedEntityClass
;
140 public void setValidatedEntityClass(String validatedEntityClass
){
141 this.validatedEntityClass
= validatedEntityClass
;
145 public String
getUserFriendlyTypeName(){
146 return userFriendlyTypeName
;
150 public void setUserFriendlyTypeName(String userFriendlyTypeName
){
151 this.userFriendlyTypeName
= userFriendlyTypeName
;
155 public CRUDEventType
getCrudEventType(){
156 return crudEventType
;
160 public void setCrudEventType(CRUDEventType crudEventType
){
161 this.crudEventType
= crudEventType
;
165 public String
getUserFriendlyDescription(){
166 return userFriendlyDescription
;
170 public void setUserFriendlyDescription(String userFriendlyDescription
){
171 this.userFriendlyDescription
= userFriendlyDescription
;
175 public Set
<EntityConstraintViolation
> getEntityConstraintViolations(){
176 if (entityConstraintViolations
== null) {
177 entityConstraintViolations
= new HashSet
<EntityConstraintViolation
>();
179 return entityConstraintViolations
;
183 public void addEntityConstraintViolation(EntityConstraintViolation ecv
){
185 getEntityConstraintViolations().add(ecv
);
190 public void removeEntityConstraintViolation(EntityConstraintViolation ecv
){
192 getEntityConstraintViolations().remove(ecv
);