2 * ============LICENSE_START==========================================
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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============================================
21 package org.onap.aai.champcore.model;
23 import com.fasterxml.jackson.annotation.JsonProperty;
24 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
25 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
27 @JsonDeserialize(builder = ChampConnectionConstraint.Builder.class)
28 public final class ChampConnectionConstraint {
30 private final String sourceType;
31 private final String targetType;
32 private final ChampConnectionMultiplicity cardinality;
34 private ChampConnectionConstraint() {
35 throw new RuntimeException("Cannot call ConnectionConstraint() constructor");
38 private ChampConnectionConstraint(Builder builder) {
39 this.sourceType = builder.sourceType;
40 this.targetType = builder.targetType;
41 this.cardinality = builder.multiplicity;
44 public String getSourceType() { return sourceType; }
45 public String getTargetType() { return targetType; }
46 public ChampConnectionMultiplicity getMultiplicity() { return cardinality; }
48 @JsonPOJOBuilder(buildMethodName = "build", withPrefix = "")
49 public static class Builder {
50 private final String sourceType;
51 private final String targetType;
53 private ChampConnectionMultiplicity multiplicity = ChampConnectionMultiplicity.MANY;
55 public Builder(@JsonProperty("sourceType") String sourceType, @JsonProperty("targetType") String targetType) {
56 this.sourceType = sourceType;
57 this.targetType = targetType;
60 public Builder multiplicity(ChampConnectionMultiplicity multiplicity) {
61 this.multiplicity = multiplicity;
65 public ChampConnectionConstraint build() {
66 return new ChampConnectionConstraint(this);
71 public int hashCode() {
72 return 31 * (getSourceType().hashCode() + getTargetType().hashCode());
76 public boolean equals(Object o) {
77 if (o instanceof ChampConnectionConstraint) {
78 final ChampConnectionConstraint connConstraint = (ChampConnectionConstraint) o;
80 if (connConstraint.getSourceType().equals(getSourceType()) &&
81 connConstraint.getTargetType().equals(getTargetType()) &&
82 connConstraint.getMultiplicity().equals(getMultiplicity())) return true;
89 public String toString() {
90 return "{sourceType: " + getSourceType() +
91 ", targetType: " + getTargetType() +
92 ", multiplicity: " + getMultiplicity()