source: mauRepo/MolesManager/trunk/src/libs/migration/processor/deployment_data.py @ 8325

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/mauRepo/MolesManager/trunk/src/libs/migration/processor/deployment_data.py@8325
Revision 8325, 6.1 KB checked in by mnagni, 7 years ago (diff)

Great improvement on how SA alchemy session is managed

Line 
1'''
2Created on 13 Feb 2012
3
4@author: mnagni
5'''
6from libs.migration.processor.commons import findSubTypeInDPT,\
7    createCEDA_Processing, createCEDA_Instrument, createCEDA_Project,\
8    findSummary, findDocumentationInMigrationDocument, createCI_Citation,\
9    createMO_OnlineResource, hasAtomDocumentSameHash
10from libs.migration.MigrationEPB import MigrationEPB
11from MolesManager.moles3epb import Moles3EPB
12from ea_model.moles3_4.utilities.mo_publicationstatevalue import MO_PublicationStateValue
13from libs.migration.processor.EPBRepo import EPBRepo
14
15class DeploymentDataProcessor(object):
16   
17    def __init__(self, deploymentMigration):
18        self._deploymentMigration = deploymentMigration
19       
20    def _commitDeploymentMigration(self, associateWithCedaObservation, dataProductionTool, dataProductionToolField):
21        EPBRepo.moles3EPB.persistInstance(associateWithCedaObservation)
22        EPBRepo.migrationEPB.updateMigrationObject(dataProductionTool, {dataProductionToolField: associateWithCedaObservation.id})
23                                   
24       
25    def createProject(self, links):
26        project = None
27        if links.has_key('ACTIVITY'):
28            for link in links['ACTIVITY']:
29                activity = EPBRepo.migrationEPB.getDeploymentDataMigrationByName(self._deploymentMigration, link + '.atom')
30                i_abstract = findSummary(activity)
31                doc_link = findDocumentationInMigrationDocument(activity)
32                i_documentation = None
33                i_resource = None
34                if doc_link and len(doc_link) == 1:
35                    i_documentation = createCI_Citation("Documentation resource")
36                    i_resource = createMO_OnlineResource(doc_link[0]['href'])
37                project = createCEDA_Project(abstract=i_abstract, publication_state=MO_PublicationStateValue.cl_working, \
38                                             documentation=i_documentation, project_resource=i_resource)
39                self._commitDeploymentMigration(project, activity, 'ceda_project_id')
40        return project
41       
42    def createProcess(self, links):
43        associateWithCedaObservation = None
44        hasCedaProcessing = False
45        hasCedaComposite = False
46        hasCedaAcquisition = False
47        for dpt in links['DPT']:
48            dataProductionTool = EPBRepo.migrationEPB.getDeploymentDataMigrationByName(self._deploymentMigration, dpt + '.atom')
49           
50            #has the document changed?           
51            #if hasAtomDocumentSameHash(dataProductionTool):
52            #    dataProductionTool.doc_hash = getAtomDocumentHashByMO(self._deploymentMigration)
53            #    self._migrationSessions.migrationSession.commit()
54            #    continue
55           
56            subType = findSubTypeInDPT(dataProductionTool)
57           
58            if subType == 'model':
59                #MigrationEPB.loadAttributes(dataProductionTool, 'ceda_processing_id')
60                if dataProductionTool.ceda_processing_id is None:
61                    associateWithCedaObservation = createCEDA_Processing()
62                    self._commitDeploymentMigration(associateWithCedaObservation, dataProductionTool, 'ceda_processing_id')
63                    if not (hasCedaComposite or hasCedaProcessing):
64                        hasCedaProcessing = True
65                        hasCedaComposite = False
66                        hasCedaAcquisition = False
67                else:
68                    #should update
69                    pass 
70            else: 
71                #MigrationEPB.loadAttributes(dataProductionTool, 'ceda_instrument_id')
72                if dataProductionTool.ceda_instrument_id is None:
73                    associateWithCedaObservation = createCEDA_Instrument()
74                    self._commitDeploymentMigration(associateWithCedaObservation, dataProductionTool, 'ceda_instrument_id')
75                else:
76                    #should update
77                    pass
78               
79               
80        #if not a DPT.subType == 'model' then....
81        for obs in links['OBS']:
82            observationStation = EPBRepo.migrationEPB.getDeploymentDataMigrationByName(self._deploymentMigration, obs + '.atom')
83 
84            #has the document changed?           
85            #if hasAtomDocumentSameHash(observationStation):
86            #    observationStation.doc_hash = getAtomDocumentHashByMO(self._deploymentMigration)
87            #    self._migrationSessions.migrationSession.commit()
88            #    continue                       
89           
90            subType = findSubTypeInDPT(observationStation)
91            if subType == 'satellite':
92                #MigrationEPB.loadAttributes(dataProductionTool, 'ceda_compositeprocess_id')               
93                if dataProductionTool.ceda_compositeprocess_id is None:
94                    associateWithCedaObservation = createCEDA_Processing()
95                    self._commitDeploymentMigration(associateWithCedaObservation, dataProductionTool, 'ceda_compositeprocess_id')   
96                    if not hasCedaComposite:
97                        hasCedaProcessing = True
98                        hasCedaComposite = False
99                        hasCedaAcquisition = False
100                else:
101                    #should update
102                    pass
103            else:
104                #MigrationEPB.loadAttributes(dataProductionTool, 'ceda_acquisition_id')               
105                if dataProductionTool.ceda_acquisition_id is None:
106                    pass
107                    '''
108                    associateWithCedaObservation = createCEDA_Acquisition()
109                    self._commitDeploymentMigration(associateWithCedaObservation, dataProductionTool, 'ceda_acquisition_id')
110                    '''               
111                else:
112                    #should update
113                    pass
114                    if not (hasCedaComposite or hasCedaProcessing or hasCedaAcquisition):
115                        hasCedaProcessing = True
116                        hasCedaComposite = False
117                        hasCedaAcquisition = True                           
118        return associateWithCedaObservation                           
119       
Note: See TracBrowser for help on using the repository browser.