Reformat catalog-model
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / tosca / constraints / EqualConstraint.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.openecomp.sdc.be.model.tosca.constraints;
21
22 import java.io.Serializable;
23 import javax.validation.constraints.NotNull;
24 import org.openecomp.sdc.be.model.PropertyConstraint;
25 import org.openecomp.sdc.be.model.tosca.ToscaType;
26 import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintFunctionalException;
27 import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintValueDoNotMatchPropertyTypeException;
28 import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException;
29 import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException;
30
31 @SuppressWarnings("serial")
32 public class EqualConstraint extends AbstractPropertyConstraint implements Serializable {
33
34     @NotNull
35     private String constraintValue;
36     private Object typed;
37
38     public EqualConstraint(String constraintValue) {
39         super();
40         this.constraintValue = constraintValue;
41     }
42
43     public String getConstraintValue() {
44         return constraintValue;
45     }
46
47     @Override
48     public void initialize(ToscaType propertyType) throws ConstraintValueDoNotMatchPropertyTypeException {
49         if (propertyType.isValidValue(constraintValue)) {
50             typed = propertyType.convert(constraintValue);
51         } else {
52             throw new ConstraintValueDoNotMatchPropertyTypeException(
53                 "constraintValue constraint has invalid value <" + constraintValue + "> property type is <" + propertyType.toString() + ">");
54         }
55     }
56
57     @Override
58     public void validate(Object propertyValue) throws ConstraintViolationException {
59         if (propertyValue == null) {
60             if (typed != null) {
61                 fail(null);
62             }
63         } else if (typed == null) {
64             fail(propertyValue);
65         } else if (typed instanceof Comparable && typed != propertyValue) {
66             fail(propertyValue);
67         } else if (!typed.equals(propertyValue)) {
68             fail(propertyValue);
69         }
70     }
71
72     @Override
73     public ConstraintType getConstraintType() {
74         return null;
75     }
76
77     @Override
78     public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException {
79     }
80
81     private void fail(Object propertyValue) throws ConstraintViolationException {
82         throw new ConstraintViolationException(
83             "Equal constraint violation, the reference is <" + constraintValue + "> but the value to compare is <" + propertyValue + ">");
84     }
85
86     @Override
87     public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) {
88         return getErrorMessage(toscaType, e, propertyName, "%s property value must be %s", constraintValue);
89     }
90 }