Catalog alignment
[sdc.git] / common-be / src / main / java / org / openecomp / sdc / be / csar / pnf / PnfSoftwareInformation.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.sdc.be.csar.pnf;
21
22 import lombok.AccessLevel;
23 import lombok.AllArgsConstructor;
24 import lombok.Getter;
25 import lombok.Setter;
26 import org.apache.commons.collections.CollectionUtils;
27
28 import java.util.LinkedHashSet;
29 import java.util.Set;
30
31 /**
32  * Represents the Pnf software information non-mano yaml
33  */
34 @Getter
35 @Setter
36 public class PnfSoftwareInformation {
37
38     private String description;
39     private String provider;
40     private String version;
41     @Setter(AccessLevel.NONE)
42     private Set<PnfSoftwareVersion> softwareVersionSet = new LinkedHashSet<>();
43
44     /**
45      * Adds a {@link PnfSoftwareVersion} instance to the software version set
46      * @param softwareVersion the pnf software version to add
47      */
48     public void addToSoftwareVersionSet(final PnfSoftwareVersion softwareVersion) {
49         softwareVersionSet.add(softwareVersion);
50     }
51
52     public Set<PnfSoftwareVersion> getSoftwareVersionSet() {
53         return new LinkedHashSet<>(softwareVersionSet);
54     }
55
56     /**
57      * Stores the software information yaml field names.
58      */
59     @AllArgsConstructor
60     @Getter
61     public enum PnfSoftwareInformationField {
62         DESCRIPTION("description"),
63         PROVIDER("provider"),
64         VERSION("version"),
65         PNF_SOFTWARE_INFORMATION("pnf_software_information");
66
67         private final String fieldName;
68
69     }
70
71     public boolean isValid() {
72         if(CollectionUtils.isEmpty(softwareVersionSet)) {
73             return false;
74         }
75
76         return softwareVersionSet.stream().allMatch(PnfSoftwareVersion::isValid);
77     }
78
79 }