aboutsummaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/elements/DataType.java
blob: d5d770b5d2d19b7d2912040a346795d7520563ed (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
package org.openecomp.sdc.toscaparser.api.elements;

import java.util.ArrayList;
import java.util.LinkedHashMap;

public class DataType extends StatefulEntityType {
	
	LinkedHashMap<String,Object> customDef; 
	
	public DataType(String _dataTypeName,LinkedHashMap<String,Object> _customDef) {
		super(_dataTypeName,DATATYPE_NETWORK_PREFIX,_customDef);
		
		customDef = _customDef;
	}
	
	public DataType getParentType() {
        // Return a datatype this datatype is derived from
		if(defs != null) {
			String ptype = derivedFrom(defs);
	        if(ptype != null) {
	            return new DataType(ptype,customDef);
	        }
		}
        return null;
	}

	public String getValueType() {
        // Return 'type' section in the datatype schema
		if(defs != null) {
			return (String)entityValue(defs,"type");
		}
		return null;
	}

	public ArrayList<PropertyDef> getAllPropertiesObjects() {
        //Return all properties objects defined in type and parent type
		ArrayList<PropertyDef> propsDef = getPropertiesDefObjects();
        DataType ptype = getParentType();
        while(ptype != null) {
            propsDef.addAll(ptype.getPropertiesDefObjects());
            ptype = ptype.getParentType();
        }
        return propsDef;
	}
	
	public LinkedHashMap<String,PropertyDef> getAllProperties() {
        // Return a dictionary of all property definition name-object pairs
		LinkedHashMap<String,PropertyDef> pno = new LinkedHashMap<>();
		for(PropertyDef pd: getAllPropertiesObjects()) {
			pno.put(pd.getName(),pd);
		}
        return pno;
	}

	public Object getAllPropertyValue(String name) {
        // Return the value of a given property name
		LinkedHashMap<String,PropertyDef> propsDef = getAllProperties();
        if(propsDef != null && propsDef.get(name) != null) {
            return propsDef.get(name).getPDValue();
        }
        return null;
	}
	
	public LinkedHashMap<String,Object> getDefs() {
		return defs;
	}

}

/*python

from toscaparser.elements.statefulentitytype import StatefulEntityType


class DataType(StatefulEntityType):
    '''TOSCA built-in and user defined complex data type.'''

    def __init__(self, datatypename, custom_def=None):
        super(DataType, self).__init__(datatypename,
                                       self.DATATYPE_NETWORK_PREFIX,
                                       custom_def)
        self.custom_def = custom_def

    @property
    def parent_type(self):
        '''Return a datatype this datatype is derived from.'''
        ptype = self.derived_from(self.defs)
        if ptype:
            return DataType(ptype, self.custom_def)
        return None

    @property
    def value_type(self):
        '''Return 'type' section in the datatype schema.'''
        return self.entity_value(self.defs, 'type')

    def get_all_properties_objects(self):
        '''Return all properties objects defined in type and parent type.'''
        props_def = self.get_properties_def_objects()
        ptype = self.parent_type
        while ptype:
            props_def.extend(ptype.get_properties_def_objects())
            ptype = ptype.parent_type
        return props_def

    def get_all_properties(self):
        '''Return a dictionary of all property definition name-object pairs.'''
        return {prop.name: prop
                for prop in self.get_all_properties_objects()}

    def get_all_property_value(self, name):
        '''Return the value of a given property name.'''
        props_def = self.get_all_properties()
        if props_def and name in props_def.key():
            return props_def[name].value
*/