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

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