summaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/api/EntityTemplate.java
blob: a6f9868edec4c23db67badf3c7f5d8cdfd40e522 (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
package org.openecomp.sdc.toscaparser.api;

import static com.google.common.collect.ImmutableList.toImmutableList;

import java.util.List;
import java.util.Map;
import java.util.Objects;

import org.openecomp.sdc.toscaparser.api.elements.StatefulEntityType;
import org.openecomp.sdc.toscaparser.jython.JyEntityTemplate;

import com.google.common.base.MoreObjects;
import com.google.common.base.MoreObjects.ToStringHelper;

public abstract class EntityTemplate {

    private final JyEntityTemplate jyEntityTemplate;
    private final StatefulEntityType statefulEntityType;

    public EntityTemplate(JyEntityTemplate jyEntityTemplate) {
        this.jyEntityTemplate = Objects.requireNonNull(jyEntityTemplate);
        StatefulEntityTypeFactory statefulEntityTypeFactory = new StatefulEntityTypeFactory();
        statefulEntityType = statefulEntityTypeFactory.create(jyEntityTemplate.getJyTypeDefinition());
    }

    public String getName() {
        return jyEntityTemplate.getJyName();
    }
    
    public String getDescription() {
        return jyEntityTemplate.getJyDescription();
    }

    public StatefulEntityType getTypeDefinition() {
        return statefulEntityType;
    }

    public List<Property> getProperties() {
        return jyEntityTemplate.getJyProperties()
                .stream()
                .map(Property::new)
                .collect(toImmutableList());
    }

    public List<Capability> getCapabilities() {
        return jyEntityTemplate.getJyCapabilities()
                .stream()
                .map(Capability::new)
                .collect(toImmutableList());
    }
    
    public List<Map<String, Map<String, Object>>> getRequirements() {
        return jyEntityTemplate.getJyRequirements();
    }

    protected ToStringHelper toStringHelper() {
        return MoreObjects.toStringHelper(this)
                .add("name", getName())
                .add("description", getDescription())
                .add("typeDefinition", getTypeDefinition())
                .add("properties", getProperties())
                .add("capabilities", getCapabilities())
                .add("requirements", getRequirements());
    }

    @Override
    public String toString() {
        return toStringHelper().toString();
    }
}