Changeset 1742 for TI02-CSML/branches


Ignore:
Timestamp:
23/11/06 09:55:08 (13 years ago)
Author:
domlowe
Message:

collections of features working

Location:
TI02-CSML/branches/CSML2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/branches/CSML2/csParser.py

    r1739 r1742  
    6363    def toXML(self, csmlfrag): 
    6464    #process self... and convert  to XML  
     65        if hasattr(self, 'CONTENT'): 
     66                if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
    6567        for item in self.__dict__: 
    6668            if item in self.ATTRIBUTES: 
     
    7173            if GML(item) in self.ATTRIBUTES: 
    7274                csmlfrag.set(GML(item), self.__dict__[item])        
    73           
    7475    # self.CHILDREN (recursive - calls the toXML method of children 
    7576        for att in self.__dict__: 
     
    7879                    if child == att:                         
    7980                        #found a match. 
    80                         if type(self.CHILDREN[child][0]) is list: 
    81                             ename = self._getReverseSubsType(type(self.__dict__[att]).__name__) 
    82                         else:  
     81                        if type(self.CHILDREN[child][0]) is not list: 
    8382                            ename=self.CHILDREN[child][0]#Element Name 
    8483                        etype = self.CHILDREN[child][1] #Element Type 
    8584                        if type(self.__dict__[att])  is list: 
    8685                            for item in self.__dict__[att]: 
     86                                ename = self._getReverseSubsType(type(item).__name__) 
    8787                                frag=ET.Element(ename) 
    88                                 if self.CONTENT is not None: 
    89                                     frag.text=self.CONTENT 
    9088                                item.toXML(frag) 
    9189                                csmlfrag.append(frag) 
    9290                        else: 
    9391                            frag=ET.Element(ename) 
    94                             if self.CONTENT is not None: 
    95                                     frag.text=self.CONTENT 
    9692                            self.__dict__[att].toXML(frag) 
    9793                            csmlfrag.append(frag) 
     94             
    9895        return csmlfrag 
    9996         
    10097    def fromXML(self,csmlfrag): 
     98        ######## output for testing purposes ############### 
     99        if hasattr(self, 'CHILDREN'): 
     100            print "ELEMENT %s"%csmlfrag.tag 
     101            for child in self.CHILDREN: 
     102                print child        
     103         ####################################### 
    101104        # deal with attributes, e.g. gml id's 
     105        if csmlfrag.text is not None: 
     106                self.CONTENT = csmlfrag.text 
    102107        for item in csmlfrag.items(): 
    103108            if item[0] in self.ATTRIBUTES: 
     
    105110        # self.CHILDREN (recursive - calls the fromXML method of children 
    106111        for frag in csmlfrag[:]: 
    107             if frag.text is not None: 
    108                 self.CONTENT = frag.text 
     112            print "ELEMENT %s"%csmlfrag.tag 
    109113            for child in self.CHILDREN: 
     114                print child 
    110115                ename = self.CHILDREN[child][0] #Element Name                     
    111116                if frag.tag == ename: 
     
    150155        AbstractFeature.__init__(self,**kwargs) 
    151156        self.CHILDREN=merge(self.CHILDREN,{'members':[[CSML('GridFeature'),CSML('PointFeature')], 'AbstractFeature']}) 
    152         #CHOICE mechanism  used to declare that any element name can go here so long as it is of a type that  
    153         #inherits from AbstractFeature - .i.e. a GridFeature, a PointFeature etc. 
     157 
     158#class TimePosition(AbstractGML): 
     159    #def __init__(self, **kwargs): 
     160        #AbstractGML.__init__(self,**kwargs) 
     161        #self.CHILDREN = {'':[CSML(''), '']}     
     162 
     163class TimePosition(AbstractGML): 
     164    def __init__(self, **kwargs): 
     165        AbstractGML.__init__(self,**kwargs) 
     166        self.CHILDREN = {'':[CSML(''), '']}     
     167         
     168class ReferenceableGridCoverage(AbstractGML): 
     169    def __init__(self, **kwargs): 
     170        AbstractGML.__init__(self,**kwargs) 
     171        self.CHILDREN = {'':[CSML(''), '']}     
     172 
     173class Phenomenon(AbstractGML): 
     174    def __init__(self, **kwargs): 
     175        AbstractGML.__init__(self,**kwargs) 
     176        self.CHILDREN = {'':[CSML(''), '']}     
    154177         
    155178class GridFeature(AbstractFeature, csElement): 
     
    157180        AbstractFeature.__init__(self,**kwargs) 
    158181        #dummy child for now: 
    159         self.CHILDREN=merge(self.CHILDREN,{'test':[CSML('TestElement'), 'csString']}) 
    160         #self.CHILDREN={'time':[GML('time'), GML('TimePosition')], 'value':[CSML('value'), 'ReferenceableGridCoverage'], 'parameter':[CSML('parameter'), SWE('Phenomenon')]}  
     182        #self.CHILDREN=merge(self.CHILDREN,{'test':[CSML('TestElement'), 'csString']}) 
     183        self.CHILDREN={'time':[GML('time'), GML('TimePosition')], 'value':[CSML('value'), 'ReferenceableGridCoverage'], 'parameter':[CSML('parameter'), 'Phenomenon']}  
    161184 
    162185class AbstractFileExtract(AbstractGML, csElement): 
     
    175198        AbstractFeatureCollection.__init__(self,**kwargs) 
    176199     
     200     
    177201    def _getSubstitutionType(self,tag): 
     202        print tag 
     203        print 'returning..' 
    178204        if tag==CSML('GridFeature'): 
     205            print 'GF' 
    179206            return 'GridFeature' 
    180207        elif tag==CSML('PointFeature'): 
     208            print 'PF' 
    181209            return 'PointFeature' 
    182         else: return 'AbstractFeature' 
     210        else:  
     211            print 'AF' 
     212            return 'AbstractFeature' 
    183213     
    184214    def _getReverseSubsType(self, typename): 
     215        print 'REVERSE' 
     216        print typename 
    185217        if typename== 'GridFeature': 
    186218            return CSML('GridFeature') 
  • TI02-CSML/branches/CSML2/test.xml

    r1739 r1742  
    1414        <featureCollection> 
    1515            <GridFeature gml:id="feature1"> 
    16                 <TestElement>testblahtestbanana</TestElement> 
    1716                <time></time> 
    1817                <value></value> 
    1918                <parameter></parameter> 
    2019            </GridFeature> 
     20            <GridFeature>more test blah</GridFeature> 
    2121    </featureCollection> 
    2222</Dataset> 
Note: See TracChangeset for help on using the changeset viewer.