source: ComponentRegistry/trunk/ComponentBrowserGui/src/main/flex/clarin/cmdi/componentregistry/editor/model/CMDModelFactory.as @ 264

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