Changeset 8481 for mauRepo/MolesManager


Ignore:
Timestamp:
02/08/12 11:49:42 (7 years ago)
Author:
mnagni
Message:

Complete - # 22428: CEDA Project - observationCollection
 http://team.ceda.ac.uk/trac/ceda/ticket/22428

Location:
mauRepo/MolesManager/trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/MolesManager/trunk/src/MolesManager/ceda_guid.py

    r8236 r8481  
    1414        self.ceda_observationcollection = None 
    1515        self.ceda_observation = None 
     16        self.ceda_project = None 
  • mauRepo/MolesManager/trunk/src/MolesManager/moles3epb.py

    r8476 r8481  
    6868                           Column('id', String, primary_key=True), \ 
    6969                           Column('ceda_observationcollection', Integer, ForeignKey('ceda_observationcollection.id')),  
    70                            Column('ceda_observation', Integer, ForeignKey('ceda_observation.id'))) 
     70                           Column('ceda_observation', Integer, ForeignKey('ceda_observation.id')), 
     71                           Column('ceda_project', Integer, ForeignKey('ceda_project.id'))) 
    7172        mapper(CedaGUID, guid_table) 
    7273        self._dbManager.metadata.create_all() 
     
    216217            return self._session.query(CedaGUID).filter(CedaGUID.ceda_observationcollection==instance.id).first() 
    217218        elif type(instance) == CEDA_Observation: 
    218             return self._session.query(CedaGUID).filter(CedaGUID.ceda_observation==instance.id).first()         
     219            return self._session.query(CedaGUID).filter(CedaGUID.ceda_observation==instance.id).first() 
     220        elif type(instance) == CEDA_Project: 
     221            return self._session.query(CedaGUID).filter(CedaGUID.ceda_project==instance.id).first()                 
    219222     
    220223    def observationCollectionHasObservation(self, obs_coll_id, obs_id): 
  • mauRepo/MolesManager/trunk/src/libs/migration/processor/dataEntity.py

    r8460 r8481  
    207207        deProcessor.assignDOI(ceda_observation, doi) 
    208208 
     209    def _assignObservationCollectionToProject(self, obsColl, ceda_observation): 
     210        if ceda_observation.inSupportOf is None: 
     211            return 
     212         
     213        for proj_coll in ceda_observation.inSupportOf.observationCollection: 
     214            if proj_coll.id == obsColl.id: 
     215                return 
     216         
     217        ceda_observation.inSupportOf.observationCollection.append(obsColl) 
     218 
    209219    def _processDeploymentMigration(self, deploymentMigration, single_deployment):                                       
    210220        deProcessor = DeploymentProcessor(self._dataEntityMigration, deploymentMigration, self.epbRepo) 
     
    256266                if not self.epbRepo.moles3EPB.observationCollectionHasObservation(getattr(obsColl, 'id'), getattr(ceda_observation, 'id')): 
    257267                    self.epbRepo.moles3EPB.updateCedaObject(obsColl, {'member': ceda_observation}) 
    258                                        
     268                 
     269                self._assignObservationCollectionToProject(obsColl, ceda_observation)                     
    259270            except Exception as ex: 
    260271                self._report.append(ex)                 
  • mauRepo/MolesManager/trunk/src/libs/migration/processor/deployment_data.py

    r8415 r8481  
    3434    createCEDA_Processing, createCEDA_Instrument, createCEDA_Project,\ 
    3535    findSummary, findDocumentationInMigrationDocument, createCI_Citation,\ 
    36     createMO_OnlineResource, findLinksInDeployment 
     36    createMO_OnlineResource, findLinksInDeployment, hasMOBeenProcessed,\ 
     37    getAtomDocumentHashByMO, calculateHash, hasMOSameHash 
    3738from ea_model.moles3_4.utilities.ceda_publicationstatevalue import CEDA_PublicationStateValue 
    3839from MolesManager.codelist import getCLValue 
     40from MolesManager.ceda_guid import CedaGUID 
     41import logging 
     42from logging import StreamHandler 
     43from ea_model.ceda_metadatamodel.ceda_project.ceda_project import CEDA_Project 
    3944 
    4045class DeploymentDataProcessor(object): 
     46    log = logging.getLogger('DeploymentDataProcessor') 
     47    log.addHandler(StreamHandler()) 
     48    log.setLevel(logging.INFO)  
    4149     
    4250    def __init__(self, deploymentMigration, epbRepo): 
     
    5260        self.epbRepo.migrationEPB.updateMigrationObject(dataProductionTool, {dataProductionToolField: associateWithCedaObservation.id}) 
    5361                                    
    54          
     62    def _createProject(self, activity):         
     63        i_abstract = findSummary(activity) 
     64        doc_link = findDocumentationInMigrationDocument(activity) 
     65        i_documentation = None 
     66        i_resource = None 
     67        if doc_link and len(doc_link) == 1: 
     68            i_documentation = createCI_Citation("Documentation resource") 
     69            i_resource = createMO_OnlineResource(doc_link[0]['href']) 
     70        project = createCEDA_Project(abstract=i_abstract, publication_state=getCLValue(CEDA_PublicationStateValue.cl_working), \ 
     71                                     documentation=i_documentation, project_resource=i_resource) 
     72        self._commitDeploymentMigration(project, activity, 'ceda_project_id') 
     73        return project 
     74                 
    5575    def createProject(self): 
    5676        project = None 
     
    5878            for link in self._links['ACTIVITY']: 
    5979                activity = self.epbRepo.migrationEPB.getDeploymentDataMigrationByName(self._deploymentMigration, link + '.atom') 
    60                 i_abstract = findSummary(activity) 
    61                 doc_link = findDocumentationInMigrationDocument(activity) 
    62                 i_documentation = None 
    63                 i_resource = None 
    64                 if doc_link and len(doc_link) == 1: 
    65                     i_documentation = createCI_Citation("Documentation resource") 
    66                     i_resource = createMO_OnlineResource(doc_link[0]['href']) 
    67                 project = createCEDA_Project(abstract=i_abstract, publication_state=getCLValue(CEDA_PublicationStateValue.cl_working), \ 
    68                                              documentation=i_documentation, project_resource=i_resource) 
    69                 self._commitDeploymentMigration(project, activity, 'ceda_project_id') 
     80                deploymentDataHasSameHash = hasMOSameHash(activity)     
     81                deploymentDataHasBeenProcessed = hasMOBeenProcessed(activity)                
     82                try : 
     83                    if activity.ceda_project_id is not None: 
     84                        #obsColl = self.epbRepo.moles3EPB.search(CEDA_ObservationCollection, self._dataEntityMigration.ceda_observation_coll_id)  
     85                        project = self.epbRepo.moles3EPB.search(CEDA_Project, activity.ceda_project_id) 
     86                    else: 
     87                        project = self._createProject(activity) 
     88                except Exception as ex: 
     89                    #self._report.append(ex) 
     90                    #return self._report 
     91                    pass  
     92                         
     93                #Is a first time process? 
     94                if not deploymentDataHasBeenProcessed: 
     95                    docHash = getAtomDocumentHashByMO(activity) 
     96                    self.epbRepo.migrationEPB.updateMigrationObject(activity, \ 
     97                        {'ceda_project_id': project.id, \ 
     98                         'doc_hash': docHash}) 
     99 
     100                #Has to updated the hash? 
     101                if not deploymentDataHasSameHash and deploymentDataHasBeenProcessed: 
     102                    docHash = getAtomDocumentHashByMO(activity) 
     103                    self.epbRepo.migrationEPB.updateMigrationObject(activity, \ 
     104                        {'doc_hash': docHash}) 
     105                 
     106                #Has a proper CEDAGUID? 
     107                if self.epbRepo.moles3EPB.retrieveGUIDFromInstance(project) is None: 
     108                    #Adds the CedaGUID 
     109                    ceda_guid = CedaGUID() 
     110                    ceda_guid.id = calculateHash(activity.deployment_data_id) 
     111                    setattr(ceda_guid, 'ceda_project', project.id) 
     112                    self.epbRepo.moles3EPB.persistInstance(ceda_guid) 
     113                    DeploymentDataProcessor.log.info("GUID for this Project: %s" % (ceda_guid.id))                     
    70114        return project 
    71115         
Note: See TracChangeset for help on using the changeset viewer.