aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/builder/NsdToscaMetadataBuilder.java
blob: e709993b4512156cbdcc349989f774a46e7fd9e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2020 Nordix Foundation
 *  ================================================================================
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *  SPDX-License-Identifier: Apache-2.0
 *  ============LICENSE_END=========================================================
 */

package org.openecomp.sdc.be.plugins.etsi.nfv.nsd.builder;

/**
 * Builder for the TOSCA.meta file in a NSD CSAR
 */
public class NsdToscaMetadataBuilder {

    public static final String CSAR_VERSION = "CSAR-Version";
    public static final String CREATED_BY = "Created-By";
    public static final String TOSCA_META_FILE_VERSION = "TOSCA-Meta-File-Version";
    public static final String ENTRY_DEFINITIONS = "Entry-Definitions";
    public static final String ETSI_ENTRY_CHANGE_LOG = "ETSI-Entry-Change-Log";
    public static final String ETSI_ENTRY_MANIFEST = "ETSI-Entry-Manifest";

    private static final String ATTRIBUTE_SEPARATOR = ": ";
    private static final String NEW_LINE = "\n";

    private final StringBuilder builder = new StringBuilder();
    private String csarVersion;
    private String createdBy;
    private String entryDefinitionsPath;
    private String toscaMetaVersion;
    private String entryManifest;
    private String changeLogPath;

    /**
     * Sets a value for the {@link #CSAR_VERSION} metadata entry.
     *
     * @param csarVersion the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withCsarVersion(final String csarVersion) {
        this.csarVersion = csarVersion;
        return this;
    }

    /**
     * Sets a value for the {@link #CREATED_BY} metadata entry.
     *
     * @param createdBy the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withCreatedBy(final String createdBy) {
        this.createdBy = createdBy;
        return this;
    }

    /**
     * Sets a value for the {@link #TOSCA_META_FILE_VERSION} metadata entry.
     *
     * @param toscaMetaVersion the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withToscaMetaVersion(final String toscaMetaVersion) {
        this.toscaMetaVersion = toscaMetaVersion;
        return this;
    }

    /**
     * Sets a value for the {@link #ENTRY_DEFINITIONS} metadata entry.
     *
     * @param entryDefinitionsPath the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withEntryDefinitions(final String entryDefinitionsPath) {
        this.entryDefinitionsPath = entryDefinitionsPath;
        return this;
    }

    /**
     * Sets a value for the {@link #ETSI_ENTRY_MANIFEST} metadata entry.
     *
     * @param entryManifest the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withEntryManifest(final String entryManifest) {
        this.entryManifest = entryManifest;
        return this;
    }

    /**
     * Sets a value for the {@link #ETSI_ENTRY_CHANGE_LOG} metadata entry.
     *
     * @param changeLogPath the value
     * @return the builder instance
     */
    public NsdToscaMetadataBuilder withEntryChangeLog(final String changeLogPath) {
        this.changeLogPath = changeLogPath;
        return this;
    }

    /**
     * Builds a string representing the TOSCA metadata content based on provided values.
     *
     * @return a string representing the TOSCA metadata content
     */
    public String build() {
        appendEntry(CSAR_VERSION, csarVersion);
        appendEntry(CREATED_BY, createdBy);
        appendEntry(TOSCA_META_FILE_VERSION, toscaMetaVersion);
        appendEntry(ENTRY_DEFINITIONS, entryDefinitionsPath);
        appendEntry(ETSI_ENTRY_MANIFEST, entryManifest);
        appendEntry(ETSI_ENTRY_CHANGE_LOG, changeLogPath);
        return builder.toString();
    }

    private void appendEntry(final String entry, final String value) {
        if (value != null) {
            builder.append(entry).append(ATTRIBUTE_SEPARATOR).append(value)
                .append(NEW_LINE);
        }
    }

}