Incorporate the ECOMP SDC Artefact Generator code
[aai/babel.git] / src / main / java / org / onap / aai / babel / csar / vnfcatalog / ConfigurationsToBabelArtifactConverter.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 European Software Marketing Ltd.
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.babel.csar.vnfcatalog;
22
23 import com.google.gson.Gson;
24 import java.util.List;
25 import org.onap.aai.babel.service.data.BabelArtifact;
26 import org.onap.aai.babel.service.data.BabelArtifact.ArtifactType;
27
28 /**
29  * This class is responsible for converting a collection of VendorImageConfigurations into an instance of a
30  * BabelArtifact.
31  */
32 class ConfigurationsToBabelArtifactConverter {
33     private ConfigurationsToBabelArtifactConverter() {}
34
35     /**
36      * This method converts a collection of VendorImageConfiguration objects into an instance of a BabelArtifact.
37      *
38      * <p>
39      * The method will convert the configurations objects into JSON and this will be stored in the BabelArtifact's
40      * payload property.
41      *
42      * <p>
43      * The method will return null if there are no configurations (null or empty) to process.
44      *
45      * @param configurations collection of VendorImageConfiguration objects into an instance of a BabelArtifact
46      * @return BabelArtifact instance representing the configurations or null if there are no configurations.
47      */
48     static BabelArtifact convert(List<VendorImageConfiguration> configurations) {
49         if (configurations != null && !configurations.isEmpty()) {
50             String payload = new Gson().toJson(configurations, configurations.getClass());
51             return new BabelArtifact("vnfVendorImageConfigurations", ArtifactType.VNFCATALOG, payload);
52         } else {
53             return null;
54         }
55     }
56 }