From f20cd35d924c20ca238fee95b8c477869ff44591 Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Thu, 2 Apr 2015 12:21:50 +0000 Subject: [PATCH] Fixing Non Parents found using the default transaction API SVN: 33782 --- .../reporting-plugins/newbrowserapi/script.py | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py index 720e0004284..4659107eed0 100644 --- a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py +++ b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py @@ -21,10 +21,30 @@ from java.io import File from java.io import FileOutputStream from java.lang import System from net.lingala.zip4j.core import ZipFile +from ch.systemsx.cisd.common.exceptions import UserFailureException +from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchCriteria +from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import MatchClause, SearchOperator, MatchClauseAttribute + import time import subprocess import os.path +def getSampleByIdentifierForUpdate(tr, identifier): + space = identifier.split("/")[1]; + code = identifier.split("/")[2]; + + criteria = SearchCriteria(); + criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.SPACE, space)); + criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, code)); + criteria.setOperator(SearchOperator.MATCH_ALL_CLAUSES); + + searchService = tr.getSearchService(); + found = list(searchService.searchForSamples(criteria)); + if len(found) == 1: + return tr.makeSampleMutable(found[0]); + else: + raise UserFailureException(identifier + " Not found by search service."); + def process(tr, parameters, tableBuilder): method = parameters.get("method"); @@ -178,7 +198,7 @@ def insertDataSet(tr, parameters, tableBuilder): metadata = parameters.get("metadata"); #java.util.LinkedHashMap<String, String> where the key is the name #Create Dataset - dataSetSample = tr.getSample(sampleIdentifier); + dataSetSample = getSampleByIdentifierForUpdate(tr, sampleIdentifier); dataSet = tr.createNewDataSet(dataSetType); dataSet.setSample(dataSetSample); @@ -248,7 +268,7 @@ def copySample(tr, parameters, tableBuilder): #Copy children and attach to Sample if sampleChildren != None: for sampleChildIdentifier in sampleChildren: - child = tr.getSample(sampleChildIdentifier); #Retrieve Sample child to copy + child = getSampleByIdentifierForUpdate(tr, sampleChildIdentifier); #Retrieve Sample child to copy copyChildCode = None try: #For autogenerated children that have the code as sufix @@ -316,7 +336,7 @@ def insertUpdateSample(tr, parameters, tableBuilder): sample = tr.createNewSample(sampleIdentifier, sampleType); #Create Sample given his id if method == "updateSample": - sample = tr.getSampleForUpdate(sampleIdentifier); #Retrieve Sample + sample = getSampleByIdentifierForUpdate(tr, sampleIdentifier); #Retrieve Sample #Obtain space space = None; @@ -362,7 +382,7 @@ def insertUpdateSample(tr, parameters, tableBuilder): #Add sample children if sampleChildren != None: for sampleChildIdentifier in sampleChildren: - child = tr.getSampleForUpdate(sampleChildIdentifier); #Retrieve Sample + child = getSampleByIdentifierForUpdate(tr, sampleChildIdentifier); #Retrieve Sample if child != None: #The new created ones will not be found childParents = child.getParentSampleIdentifiers(); childParents.add(sampleIdentifier); @@ -371,7 +391,7 @@ def insertUpdateSample(tr, parameters, tableBuilder): #Remove sample children if sampleChildrenRemoved != None: for sampleChildIdentifier in sampleChildrenRemoved: - child = tr.getSampleForUpdate(sampleChildIdentifier); #Retrieve Sample + child = getSampleByIdentifierForUpdate(tr, sampleChildIdentifier); #Retrieve Sample if child != None: #The new created ones will not be found childParents = child.getParentSampleIdentifiers(); childParents.remove(sampleIdentifier); -- GitLab