Implement PNFD Model driven conversion
[sdc.git] / openecomp-be / lib / openecomp-tosca-converter-lib / openecomp-tosca-converter-api / src / main / java / org / openecomp / core / converter / pnfd / model / Transformation.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  *
16  *  SPDX-License-Identifier: Apache-2.0
17  *  ============LICENSE_END=========================================================
18  */
19
20 package org.openecomp.core.converter.pnfd.model;
21
22 import java.util.List;
23 import java.util.Objects;
24 import lombok.Getter;
25 import lombok.Setter;
26 import org.apache.commons.collections.CollectionUtils;
27
28 /**
29  * Represents a transformation from the PNFD transformation descriptor.
30  */
31 @Getter
32 @Setter
33 public class Transformation {
34
35     private String name;
36     private String description;
37     private TransformationBlock block;
38     private ConversionQuery conversionQuery;
39     private List<ConversionDefinition> conversionDefinitionList;
40
41     /**
42      * Checks if the instance contains all necessary information to be used.
43      *
44      * @return {code true} if the instance is valid, {code false} otherwise
45      */
46     public boolean isValid() {
47         return block != null && conversionQuery != null && !CollectionUtils.isEmpty(conversionDefinitionList);
48     }
49
50     @Override
51     public boolean equals(Object o) {
52         if (this == o) {
53             return true;
54         }
55         if (o == null || getClass() != o.getClass()) {
56             return false;
57         }
58         Transformation that = (Transformation) o;
59         //if there is no query, compares by block and name.
60         if (conversionQuery != null && conversionQuery.getQuery() == null && that.conversionQuery.getQuery() == null) {
61             return block == that.block &&
62                 Objects.equals(name, that.name);
63         }
64         //transformations with the same block and query will override themselves.
65         return block == that.block &&
66             Objects.equals(conversionQuery, that.conversionQuery);
67     }
68
69     @Override
70     public int hashCode() {
71         return Objects.hash(block, conversionQuery);
72     }
73 }