source: ComponentRegistry/branches/ComponentRegistry-1.12.0/ComponentBrowserGui/src/main/flex/clarin/cmdi/componentregistry/editor/model/CMDModelFactory.as @ 1988

Last change on this file since 1988 was 1988, checked in by twagoo, 12 years ago

Created branch for ComponentRegistry-1.12.0
Bumped trunk to 1.13.0

File size: 4.7 KB
Line 
1package clarin.cmdi.componentregistry.editor.model {
2        import clarin.cmdi.componentregistry.common.ComponentMD;
3        import clarin.cmdi.componentregistry.common.ItemDescription;
4        import clarin.cmdi.componentregistry.editor.ValueSchemeItem;
5       
6        import mx.collections.ArrayCollection;
7        import mx.collections.XMLListCollection;
8
9        public final class CMDModelFactory {
10                public function CMDModelFactory() {
11                }
12
13                public static function createModel(xml:XML, description:ItemDescription):CMDSpec {
14                        var result:CMDSpec = new CMDSpec(xml.@isProfile == "true");
15                        result.headerName = xml.Header.Name;
16                        result.headerId = xml.Header.ID;
17                        result.headerDescription = xml.Header.Description;
18                        result.groupName = description.groupName;
19                        result.domainName = description.domainName;
20                        var components:XMLList = xml.elements(ComponentMD.CMD_COMPONENT);
21                        for each (var component:XML in components) {
22                                var cmdComp:CMDComponent = createComponent(component);
23                                result.cmdComponents.addItem(cmdComp);
24                        }
25                        return result;
26                }
27
28                private static function createComponent(xml:XML):CMDComponent {
29                        var result:CMDComponent = new CMDComponent();
30                        result.name = xml.@name;
31                        result.componentId = xml.@ComponentId;
32                        result.conceptLink = xml.@ConceptLink;
33                        result.filename = xml.@filename;
34                        if (xml.hasOwnProperty("@CardinalityMin"))
35                                result.cardinalityMin = xml.@CardinalityMin;
36                        if (xml.hasOwnProperty("@CardinalityMax"))
37                                result.cardinalityMax = xml.@CardinalityMax;
38                        result.attributeList = createAttributeList(xml);
39                        var elements:XMLList = xml.elements(ComponentMD.CMD_ELEMENT);
40                        for each (var element:XML in elements) {
41                                var cmdElement:CMDComponentElement = createComponentElement(element);
42                                result.cmdElements.addItem(cmdElement);
43                        }
44                        var components:XMLList = xml.elements(ComponentMD.CMD_COMPONENT);
45                        for each (var component:XML in components) {
46                                var cmdComponent:CMDComponent = createComponent(component);
47                                result.cmdComponents.addItem(cmdComponent);
48                        }
49                        return result;
50                }
51
52                private static function createComponentElement(xml:XML):CMDComponentElement {
53                        var result:CMDComponentElement = new CMDComponentElement();
54                        result.name = xml.@name;
55                        result.conceptLink = xml.@ConceptLink;
56                        result.documentation = xml.@Documentation;
57                        result.displayPriority = xml.@DisplayPriority;
58                        if (xml.hasOwnProperty("@CardinalityMin"))
59                                result.cardinalityMin = xml.@CardinalityMin;
60                        if (xml.hasOwnProperty("@CardinalityMax"))
61                                result.cardinalityMax = xml.@CardinalityMax;
62                        if (xml.hasOwnProperty("@Multilingual"))
63                                result.multilingual = xml.@Multilingual;
64                        result.attributeList = createAttributeList(xml);
65                        if (xml.hasOwnProperty(ComponentMD.VALUE_SCHEME)) {
66                                if (xml.ValueScheme.hasOwnProperty(ComponentMD.PATTERN)) {
67                                        result.valueSchemePattern = xml.ValueScheme.pattern;
68                                } else if (xml.ValueScheme.hasOwnProperty(ComponentMD.ENUMERATION)) {
69                                        var xmlList:XMLListCollection = new XMLListCollection(xml.ValueScheme.enumeration.*);
70                                        var valueSchemeItems:ArrayCollection = new ArrayCollection();
71                                        for each (var xml:XML in xmlList) {
72                                                valueSchemeItems.addItem(new ValueSchemeItem(String(xml.text()), String(xml.@AppInfo), String(xml.@ConceptLink)));
73                                        }
74                                        result.valueSchemeEnumeration = valueSchemeItems;
75                                }
76                        } else if (xml.hasOwnProperty("@ValueScheme")) {
77                                result.valueSchemeSimple = xml.@ValueScheme;
78                        } else {
79                                result.valueSchemeSimple = "";
80                        }
81                        return result;
82                }
83
84                private static function createAttributeList(xml:XML):ArrayCollection {
85                        var result:ArrayCollection = new ArrayCollection();
86                        if (xml.hasOwnProperty(ComponentMD.ATTRIBUTE_LIST)) {
87                                var attributes:XMLList = xml.AttributeList.descendants(ComponentMD.ATTRIBUTE);
88                                for each (var attribute:XML in attributes) {
89                                        var cmdAttribute:CMDAttribute = createAttribute(attribute);
90                                        result.addItem(cmdAttribute);
91                                }
92                        }
93                        return result;
94                }
95
96                private static function createAttribute(xml:XML):CMDAttribute {
97                        var result:CMDAttribute = new CMDAttribute();
98                        result.name = xml.Name;
99                        result.conceptLink = xml.ConceptLink;
100                        if (xml.hasOwnProperty(ComponentMD.TYPE)) {
101                                result.valueSchemeSimple = xml.Type;
102                        } else {
103                                if (xml.ValueScheme.hasOwnProperty(ComponentMD.PATTERN)) {
104                                        result.valueSchemePattern = xml.ValueScheme.pattern;
105                                } else if (xml.ValueScheme.hasOwnProperty(ComponentMD.ENUMERATION)) {
106                                        var xmlList:XMLListCollection = new XMLListCollection(xml.ValueScheme.enumeration.*);
107                                        var valueSchemeItems:ArrayCollection = new ArrayCollection();
108                                        for each (var xml:XML in xmlList) {
109                                                valueSchemeItems.addItem(new ValueSchemeItem(String(xml.text()), String(xml.@AppInfo), String(xml.@ConceptLink)));
110                                        }
111                                        result.valueSchemeEnumeration = valueSchemeItems;
112                                }
113                        }
114                        return result;
115                }
116
117        }
118}
Note: See TracBrowser for help on using the repository browser.