source: mauRepo/MolesManager/trunk/src/libs/migration/processor/loadResources.py @ 8015

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

implemented a prototype for the cedaObservation.
Further implementation for the Moles2 migration

Line 
1'''
2Created on 15 Nov 2011
3
4@author: mnagni
5'''
6from libs.migration.processor.commons import docStatus, base, getCollectionRefs,\
7    getResource, findMolesCreationDate, findID, stringToTimestamp,\
8    getResourceRefs
9from libs.migration.db.classes import ObservationCollectionMigration,\
10    ObservationMigration
11from libs.migration.exception.exceptions import NoCreationDate
12from libs.commons_db import getObjectId, doInsertOrUpdate
13
14class LoadResources(object):
15   
16    def __init__(self, session):
17        self._session = session
18           
19    def _loadDataEntities(self, base):
20        baseDE = '%s/%s' % (base, 'data_entities')
21        refs = getCollectionRefs(baseDE)
22        for ref in refs:
23            owner = ref.get('name')
24            if owner.startswith('.'):
25                continue         
26            self._loadDataEntityOwner(baseDE, owner)
27
28    def _loadDeployments(self, base):
29        baseDE = '%s/%s' % (base, 'deployments')
30        refs = getCollectionRefs(baseDE)
31        for ref in refs:
32            owner = ref.get('name') 
33            if owner.startswith('.'):
34                continue                       
35            self._loadDeploymentsOwner(baseDE, owner)
36           
37    def _loadDeploymentsOwner(self, base, owner):
38        baseOwner = '%s/%s' % (base, owner)
39        refs = getResourceRefs(baseOwner)         
40        for ref in refs:
41            deName = ref.get('name')
42            res = getResource(baseOwner, deName)
43            exist_path = '%s/%s' % (baseOwner, deName)
44           
45            try:
46                deCreationDate = findMolesCreationDate(res)           
47                if deCreationDate is None:
48                    raise NoCreationDate(exist_path)
49            except NoCreationDate as ex:
50                print ex
51                continue
52           
53            deID = findID(res) 
54            if deID is None:
55                print (exist_path)
56
57                                 
58            isUpdate = True
59            coll = getObjectId(ObservationMigration, deID, self._session)
60            if coll is None:               
61                coll = ObservationMigration()
62                coll.depl_id = deID
63                isUpdate = False
64           
65            coll.depl_name = deName
66            coll.depl_creation = stringToTimestamp(deCreationDate) 
67            coll.exist_path = baseOwner           
68            doInsertOrUpdate([coll], self._session, isUpdate)
69            self._session.commit()           
70           
71    def _loadDataEntityOwner(self, base, owner):
72        baseOwner = '%s/%s' % (base, owner)
73        refs = getResourceRefs(baseOwner) 
74        for ref in refs:
75            deName = ref.get('name')
76            res = getResource(baseOwner, deName) 
77            exist_path = '%s/%s' % (baseOwner, deName) 
78           
79            try:
80                deCreationDate = findMolesCreationDate(res)           
81                if deCreationDate is None:
82                    raise NoCreationDate(exist_path)
83            except NoCreationDate as ex:
84                print ex
85                continue
86           
87            deID = findID(res)
88            if deID is None:
89                print (exist_path)
90
91                     
92            isUpdate = True
93            coll = getObjectId(ObservationCollectionMigration, deID, self._session)
94            if coll is None:               
95                coll = ObservationCollectionMigration()
96                coll.data_ent_id = deID
97                isUpdate = False
98           
99            coll.data_ent_name = deName           
100            coll.data_ent_creation = stringToTimestamp(deCreationDate) 
101            coll.exist_path = baseOwner           
102            doInsertOrUpdate([coll], self._session, isUpdate)
103            self._session.commit()
104           
105    def process(self):
106        '''
107            docStatus = ('published', 'working', 'Published')
108        '''
109        for status in docStatus:           
110            baseStatus = '%s/%s' % (base, status)
111            self._loadDataEntities(baseStatus)           
112            self._loadDeployments(baseStatus)                       
Note: See TracBrowser for help on using the repository browser.