Changeset 1606 for TI02-CSML


Ignore:
Timestamp:
19/10/06 08:51:03 (13 years ago)
Author:
domlowe
Message:

changed molesWriter.py so that classes are generated by a function call rather than defined explicitly - this should make it easier to add new classes in future

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml2MolesStuff/molesWriter.py

    r1597 r1606  
    44import csml.parser_extra #note this is only used for pretty printing - there's no dependency on the CSML parser 
    55 
    6 class molesElement: 
     6class molesElement(object): 
    77    def __init__(self, **kwargs): 
    88        for kw in kwargs: 
     
    4444        return molesFrag 
    4545 
    46              
    47 #all the other classes inherit from the molesElement class - only the names change. Must be a use for MetaClasses here... 
    48 class dgMetadataID(molesElement): 
    49     pass 
    5046 
    51 class dgMetadataRecord(molesElement):     
    52     pass 
    53                      
    54 class dataModelID(molesElement): 
    55     pass 
    56                  
    57 class dgDataGranule(molesElement): 
    58     pass 
    59  
    60 class dgDataEntity(molesElement): 
    61     pass 
    62               
    6347class dgMetadata(molesElement):     
    6448    def __init__(self, **kwargs): 
     
    6953        return molesFrag 
    7054 
     55 
     56class MolesDoc(object): 
     57    def __init__(self): 
     58        pass 
     59     
     60    def _create_a_class(self,name, base_class): 
     61        aNewClass=type(name, (base_class,),{}) 
     62        return aNewClass 
     63 
     64    def _createClasses(self): 
     65        self.dataModelID=self._create_a_class('dataModelID', molesElement,) 
     66        self.dgDataGranule=self._create_a_class('dgDataGranule', molesElement) 
     67        self.dgDataEntity=self._create_a_class('dgDataGranule', molesElement) 
     68        self.dgMetadataRecord=self._create_a_class('dgMetadataRecord', molesElement) 
     69        self.dgMetadataID=self._create_a_class('dgMetadataID', molesElement) 
     70 
    7171def main(): 
     72    #create classes: 
     73    M=MolesDoc() 
     74    M._createClasses() 
     75     
    7276    #create your moles doc by setting attributes. 
    73     dgMID=dgMetadataID(schemeIdentifier='NDG-B0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_HadCM3_500Yr') 
    74     dmID= dataModelID(schemeIdentifier='NDG-A0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_500YrRun_wholerun_annual_atmos') 
    75     dmID2= dataModelID(schemeIdentifier='NDG-A0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_500YrRun_wholerun_annual_oceanls') 
    76     DG1 = dgDataGranule(dataModelID=dmID) 
    77     DG2 = dgDataGranule(dataModelID=dmID2) 
    78     dgDE= dgDataEntity(dgDataGranule=[DG1,DG2]) 
    79     dgMR=dgMetadataRecord(dgMetadataID=dgMID, dgDataEntity=dgDE) 
     77    dgMID=M.dgMetadataID(schemeIdentifier='NDG-B0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_HadCM3_500Yr') 
     78    dmID= M.dataModelID(schemeIdentifier='NDG-A0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_500YrRun_wholerun_annual_atmos') 
     79    dmID2= M.dataModelID(schemeIdentifier='NDG-A0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_500YrRun_wholerun_annual_oceanls') 
     80    DG1 = M.dgDataGranule(dataModelID=dmID) 
     81    DG2 = M.dgDataGranule(dataModelID=dmID2) 
     82    dgDE= M.dgDataEntity(dgDataGranule=[DG1,DG2]) 
     83    dgMR=M.dgMetadataRecord(dgMetadataID=dgMID, dgDataEntity=dgDE) 
    8084    dgMeta=dgMetadata(dgMetadataRecord=dgMR) 
    8185 
Note: See TracChangeset for help on using the changeset viewer.