Update license date and text
[aai/champ.git] / champ-lib / champ-core / src / main / java / org / onap / aai / champcore / model / ChampConnectionConstraint.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
4  * ===================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2018 Amdocs
7  * ===================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  */
21 package org.onap.aai.champcore.model;
22
23 import com.fasterxml.jackson.annotation.JsonProperty;
24 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
25 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
26
27 @JsonDeserialize(builder = ChampConnectionConstraint.Builder.class)
28 public final class ChampConnectionConstraint {
29
30         private final String sourceType;
31         private final String targetType;
32         private final ChampConnectionMultiplicity cardinality;
33
34         private ChampConnectionConstraint() {
35                 throw new RuntimeException("Cannot call ConnectionConstraint() constructor");
36         }
37         
38         private ChampConnectionConstraint(Builder builder) {
39                 this.sourceType = builder.sourceType;
40                 this.targetType = builder.targetType;
41                 this.cardinality = builder.multiplicity;
42         }
43         
44         public String getSourceType() { return sourceType; }
45         public String getTargetType() { return targetType; }
46         public ChampConnectionMultiplicity getMultiplicity() { return cardinality; }
47
48         @JsonPOJOBuilder(buildMethodName = "build", withPrefix = "")
49         public static class Builder {
50                 private final String sourceType;
51                 private final String targetType;
52
53                 private ChampConnectionMultiplicity multiplicity = ChampConnectionMultiplicity.MANY;
54                 
55                 public Builder(@JsonProperty("sourceType") String sourceType, @JsonProperty("targetType") String targetType) {
56                         this.sourceType = sourceType;
57                         this.targetType = targetType;
58                 }
59
60                 public Builder multiplicity(ChampConnectionMultiplicity multiplicity) {
61                         this.multiplicity = multiplicity;
62                         return this;
63                 }
64
65                 public ChampConnectionConstraint build() {
66                         return new ChampConnectionConstraint(this);
67                 }
68         }
69
70         @Override
71         public int hashCode() {
72                 return 31 * (getSourceType().hashCode() + getTargetType().hashCode());
73         }
74
75         @Override
76         public boolean equals(Object o) {
77                 if (o instanceof ChampConnectionConstraint) {
78                         final ChampConnectionConstraint connConstraint = (ChampConnectionConstraint) o;
79
80                         if (connConstraint.getSourceType().equals(getSourceType()) &&
81                                 connConstraint.getTargetType().equals(getTargetType()) &&
82                                 connConstraint.getMultiplicity().equals(getMultiplicity())) return true;
83                 }
84
85                 return false;
86         }
87
88         @Override
89         public String toString() {
90                 return "{sourceType: " + getSourceType() +
91                                 ", targetType: " + getTargetType() +
92                                 ", multiplicity: " + getMultiplicity()
93                                 + "}";
94         }
95 }