summaryrefslogtreecommitdiffstats
path: root/yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/PluginBuilder.java
blob: 489d1f7944160349d2a800c0707236e5fdff15fc (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
/*
Copyright 2023 Huawei Technologies

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.
*/

package org.onap.modeling.yangkit.compiler;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;

import java.util.ArrayList;
import java.util.List;


public class PluginBuilder {
    private final String name;
    private final List<ParameterBuilder> parameters = new ArrayList<>();

    /**
     * the constructor.
     *
     * @param name the plugin name
     */
    public PluginBuilder(String name) {
        this.name = name;
    }

    /**
     * get the plugin name.
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * get all parameters of plugin.
     *
     * @return the list of parameters
     */
    public List<ParameterBuilder> getParameters() {
        return parameters;
    }

    /**
     * add parameter into plugin.
     *
     * @param para parameter
     */
    public void addParameter(ParameterBuilder para) {
        parameters.add(para);
    }

    /**
     * parse plugin from json.
     *
     * @param jsonElement json element
     * @return plugin builder
     */
    public static PluginBuilder parse(JsonElement jsonElement) {
        String name = jsonElement.getAsJsonObject().get("name").getAsString();
        PluginBuilder pluginBuilder = new PluginBuilder(name);
        JsonElement parasElement = jsonElement.getAsJsonObject().get("parameter");
        if (parasElement != null) {
            JsonArray paras = parasElement.getAsJsonArray();
            for (int i = 0; i < paras.size(); i++) {
                JsonElement paraElement = paras.get(i);
                ParameterBuilder parameterBuilder = ParameterBuilder.parse(paraElement);
                pluginBuilder.addParameter(parameterBuilder);
            }
        }
        return pluginBuilder;
    }
}