From b93c02a3363dc81ccbbe1abb981adeaf34bfb8da Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 8 Dec 2009 14:52:07 +0000 Subject: [PATCH] LMS-1290 revert changes made since revision 13672 SVN: 13747 --- .../phosphonetx/server/PhosphoNetXServer.java | 45 +++------ .../server/business/DataSetProteinTable.java | 46 ++++------ .../server/business/ErrorModel.java | 26 ++---- .../server/business/ProteinDetailsBO.java | 85 +++++++---------- .../server/business/ProteinInfoTable.java | 92 +++++-------------- .../server/business/ProteinSequenceTable.java | 47 ++++------ .../server/business/ProteinSummaryTable.java | 48 +++++----- .../server/business/SampleTable.java | 36 +++----- .../dataaccess/IPhosphoNetXDAOFactory.java | 16 +--- .../dataaccess/db/PhosphoNetXDAOFactory.java | 50 ++-------- .../java/phosphonetx-applicationContext.xml | 1 - .../source/java/service.properties | 4 - .../server/PhosphoNetXServerTest.java | 3 +- .../server/business/ErrorModelTest.java | 3 +- .../server/business/ProteinInfoTableTest.java | 5 +- .../business/ProteinSummaryTableTest.java | 3 +- 16 files changed, 161 insertions(+), 349 deletions(-) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServer.java index 7fb1a68590c..677886ca746 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServer.java @@ -108,27 +108,21 @@ public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implem { Session session = getSession(sessionToken); String experimentPermID = getExperimentPermIDFor(experimentID); - final IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAOFromPool(); + IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAO(); + DataSet<String> samplePermIDs = + dao.listAbundanceRelatedSamplePermIDsByExperiment(experimentPermID); try { - DataSet<String> samplePermIDs = - dao.listAbundanceRelatedSamplePermIDsByExperiment(experimentPermID); - try + IAbundanceColumnDefinitionTable table = + specificBOFactory.createAbundanceColumnDefinitionTable(session); + for (String samplePermID : samplePermIDs) { - IAbundanceColumnDefinitionTable table = - specificBOFactory.createAbundanceColumnDefinitionTable(session); - for (String samplePermID : samplePermIDs) - { - table.add(samplePermID); - } - return table.getSortedAndAggregatedDefinitions(treatmentTypeOrNull); - } finally - { - samplePermIDs.close(); + table.add(samplePermID); } + return table.getSortedAndAggregatedDefinitions(treatmentTypeOrNull); } finally { - specificDAOFactory.returnProteinQueryDAOToPool(dao); + samplePermIDs.close(); } } @@ -158,20 +152,13 @@ public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implem TechId proteinReferenceID) throws UserFailureException { Session session = getSession(sessionToken); + IProteinQueryDAO proteinQueryDAO = specificDAOFactory.getProteinQueryDAO(); ProteinByExperiment proteinByExperiment = new ProteinByExperiment(); - final IProteinQueryDAO proteinQueryDAO = specificDAOFactory.getProteinQueryDAOFromPool(); - final ProteinReference proteinReference; - try - { - proteinReference = proteinQueryDAO.tryToGetProteinReference(proteinReferenceID.getId()); - } finally - { - specificDAOFactory.returnProteinQueryDAOToPool(proteinQueryDAO); - } + ProteinReference proteinReference = + proteinQueryDAO.tryToGetProteinReference(proteinReferenceID.getId()); if (proteinReference == null) { - throw new UserFailureException("No protein reference found for ID: " - + proteinReferenceID); + throw new UserFailureException("No protein reference found for ID: " + proteinReferenceID); } AccessionNumberBuilder builder = new AccessionNumberBuilder(proteinReference.getAccessionNumber()); @@ -199,10 +186,8 @@ public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implem final Session session = getSession(sessionToken); IProteinSequenceTable sequenceTable = specificBOFactory.createProteinSequenceTable(session); sequenceTable.loadByReference(proteinReferenceID); - IDataSetProteinTable dataSetProteinTable = - specificBOFactory.createDataSetProteinTable(session); - dataSetProteinTable.load(getExperimentPermIDFor(experimentId), proteinReferenceID, - sequenceTable); + IDataSetProteinTable dataSetProteinTable = specificBOFactory.createDataSetProteinTable(session); + dataSetProteinTable.load(getExperimentPermIDFor(experimentId), proteinReferenceID, sequenceTable); return dataSetProteinTable.getDataSetProteins(); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/DataSetProteinTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/DataSetProteinTable.java index 995562e8b33..de3f83c4db3 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/DataSetProteinTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/DataSetProteinTable.java @@ -50,37 +50,25 @@ class DataSetProteinTable extends AbstractBusinessObject implements IDataSetProt public void load(String experimentPermID, TechId proteinReferenceID, IProteinSequenceTable sequenceTable) { - final ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); - final IProteinQueryDAO proteinQueryDAO = - getSpecificDAOFactory().getProteinQueryDAOFromPool(); - try + IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); + ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); + DataSet<IdentifiedProtein> proteins = + proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, + proteinReferenceID.getId()); + dataSetProteins = new ArrayList<DataSetProtein>(); + for (IdentifiedProtein protein : proteins) { - final DataSet<IdentifiedProtein> proteins = - proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, - proteinReferenceID.getId()); - try - { - dataSetProteins = new ArrayList<DataSetProtein>(); - for (IdentifiedProtein protein : proteins) - { - errorModel.setFalseDiscoveryRateFor(protein); - DataSetProtein dataSetProtein = new DataSetProtein(); - dataSetProtein.setDataSetID(new TechId(protein.getDataSetID())); - dataSetProtein.setDataSetPermID(protein.getDataSetPermID()); - dataSetProtein.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); - dataSetProtein.setPeptideCount(protein.getPeptideCount()); - dataSetProtein.setProteinID(new TechId(protein.getProteinID())); - dataSetProtein.setSequenceName(sequenceTable.getShortName(protein.getDatabaseID())); - dataSetProteins.add(dataSetProtein); - } - } finally - { - proteins.close(); - } - } finally - { - getSpecificDAOFactory().returnProteinQueryDAOToPool(proteinQueryDAO); + errorModel.setFalseDiscoveryRateFor(protein); + DataSetProtein dataSetProtein = new DataSetProtein(); + dataSetProtein.setDataSetID(new TechId(protein.getDataSetID())); + dataSetProtein.setDataSetPermID(protein.getDataSetPermID()); + dataSetProtein.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); + dataSetProtein.setPeptideCount(protein.getPeptideCount()); + dataSetProtein.setProteinID(new TechId(protein.getProteinID())); + dataSetProtein.setSequenceName(sequenceTable.getShortName(protein.getDatabaseID())); + dataSetProteins.add(dataSetProtein); } + proteins.close(); } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModel.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModel.java index 8e0db8c2655..945ecc7b86a 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModel.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModel.java @@ -69,27 +69,15 @@ class ErrorModel if (calculator == null) { calculator = new ProbabilityToFDRCalculator(); - final IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAOFromPool(); - try + IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAO(); + DataSet<ProbabilityFDRMapping> mappings = dao.getProbabilityFDRMapping(dataSetID); + for (ProbabilityFDRMapping probabilityFDRMapping : mappings) { - final DataSet<ProbabilityFDRMapping> mappings = - dao.getProbabilityFDRMapping(dataSetID); - try - { - for (ProbabilityFDRMapping probabilityFDRMapping : mappings) - { - double probability = probabilityFDRMapping.getProbability(); - double falseDiscoveryRate = probabilityFDRMapping.getFalseDiscoveryRate(); - calculator.add(probability, falseDiscoveryRate); - } - } finally - { - mappings.close(); - } - } finally - { - specificDAOFactory.returnProteinQueryDAOToPool(dao); + double probability = probabilityFDRMapping.getProbability(); + double falseDiscoveryRate = probabilityFDRMapping.getFalseDiscoveryRate(); + calculator.add(probability, falseDiscoveryRate); } + mappings.close(); calculator.init(); calculators.put(dataSetID, calculator); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinDetailsBO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinDetailsBO.java index 8ae15ff9eb1..20ce913bf62 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinDetailsBO.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinDetailsBO.java @@ -54,74 +54,53 @@ class ProteinDetailsBO extends AbstractBusinessObject implements IProteinDetails public void loadByExperimentAndReference(TechId experimentID, TechId proteinReferenceID) { String experimentPermID = getExperimentPermIDFor(experimentID); - final IProteinQueryDAO proteinQueryDAO = - getSpecificDAOFactory().getProteinQueryDAOFromPool(); + IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); + DataSet<IdentifiedProtein> proteins = + proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, + proteinReferenceID.getId()); try { - final DataSet<IdentifiedProtein> proteins = - proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, - proteinReferenceID.getId()); - try + if (proteins.size() == 1) { - if (proteins.size() == 1) + ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); + IdentifiedProtein protein = proteins.get(0); + errorModel.setFalseDiscoveryRateFor(protein); + details = new ProteinDetails(); + details.setSequence(protein.getSequence()); + details.setDatabaseNameAndVersion(protein.getDatabaseNameAndVersion()); + details.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); + String dataSetPermID = protein.getDataSetPermID(); + details.setDataSetPermID(dataSetPermID); + DataPE ds = getDaoFactory().getExternalDataDAO().tryToFindDataSetByCode(dataSetPermID); + if (ds != null) { - ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); - IdentifiedProtein protein = proteins.get(0); - errorModel.setFalseDiscoveryRateFor(protein); - details = new ProteinDetails(); - details.setSequence(protein.getSequence()); - details.setDatabaseNameAndVersion(protein.getDatabaseNameAndVersion()); - details.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); - String dataSetPermID = protein.getDataSetPermID(); - details.setDataSetPermID(dataSetPermID); - DataPE ds = - getDaoFactory().getExternalDataDAO().tryToFindDataSetByCode( - dataSetPermID); - if (ds != null) - { - details.setDataSetTechID(ds.getId()); - details.setDataSetTypeCode(ds.getDataSetType().getCode()); - } - details.setPeptides(loadPeptides(protein)); - details.setProteinID(new TechId(protein.getProteinID())); + details.setDataSetTechID(ds.getId()); + details.setDataSetTypeCode(ds.getDataSetType().getCode()); } - } finally - { - proteins.close(); + details.setPeptides(loadPeptides(protein)); + details.setProteinID(new TechId(protein.getProteinID())); } } finally { - getSpecificDAOFactory().returnProteinQueryDAOToPool(proteinQueryDAO); + proteins.close(); } } private List<Peptide> loadPeptides(IdentifiedProtein protein) { - final IProteinQueryDAO proteinQueryDAO = - getSpecificDAOFactory().getProteinQueryDAOFromPool(); - try - { - final DataSet<IdentifiedPeptide> identifiedPeptides = - proteinQueryDAO.listIdentifiedPeptidesByProtein(protein.getProteinID()); - try - { - final List<Peptide> peptides = new ArrayList<Peptide>(); - for (IdentifiedPeptide identifiedPeptide : identifiedPeptides) - { - Peptide peptide = new Peptide(); - peptide.setSequence(identifiedPeptide.getSequence()); - peptide.setCharge(identifiedPeptide.getCharge()); - peptides.add(peptide); - } - return peptides; - } finally - { - identifiedPeptides.close(); - } - } finally + IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); + DataSet<IdentifiedPeptide> identifiedPeptides = + proteinQueryDAO.listIdentifiedPeptidesByProtein(protein.getProteinID()); + List<Peptide> peptides = new ArrayList<Peptide>(); + for (IdentifiedPeptide identifiedPeptide : identifiedPeptides) { - getSpecificDAOFactory().returnProteinQueryDAOToPool(proteinQueryDAO); + Peptide peptide = new Peptide(); + peptide.setSequence(identifiedPeptide.getSequence()); + peptide.setCharge(identifiedPeptide.getCharge()); + peptides.add(peptide); } + identifiedPeptides.close(); + return peptides; } private String getExperimentPermIDFor(TechId experimentId) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTable.java index d96357e3bba..22c16518f60 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTable.java @@ -21,14 +21,9 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; import net.lemnik.eodsql.DataSet; -import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor; -import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; @@ -49,9 +44,6 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.ProteinWithAbundan */ class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTable { - private static final ExecutorService executor = - new NamingThreadPoolExecutor("ProteinInfoTableQuery").daemonize(); - private List<ProteinInfo> infos; ProteinInfoTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, @@ -72,50 +64,17 @@ class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTab public void load(List<AbundanceColumnDefinition> definitions, TechId experimentID, double falseDiscoveryRate, AggregateFunction function, boolean aggregateOnOriginal) { - final IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); - final String permID = experimentDAO.getByTechId(experimentID).getPermId(); - final CoverageCalculator coverageCalculator; - final Collection<ProteinWithAbundances> proteins; - final DataSet<ProteinReferenceWithPeptideSequence> proteinReferencesWithPeptides; - final DataSet<ProteinReferenceWithProbability> proteinReferencesWithProbability; - final IProteinQueryDAO dao1 = getSpecificDAOFactory().getProteinQueryDAOFromPool(); - final IProteinQueryDAO dao2OrNull = getSpecificDAOFactory().tryGetProteinQueryDAOFromPool(); - try - { - if (dao2OrNull != null) - { - // Run 2nd query in a separate thread in parallel to the 1st one - final Future<DataSet<ProteinReferenceWithPeptideSequence>> proteinReferencesWithPeptidesFuture = - getProteinReferencesWithPeptideAsynchronously(dao1, permID); - proteinReferencesWithProbability = dao2OrNull.listProteinsByExperiment(permID); - proteinReferencesWithPeptides = - ConcurrencyUtilities.tryGetResult(proteinReferencesWithPeptidesFuture, - ConcurrencyUtilities.NO_TIMEOUT); - } else - { - // Run queries sequentially in the current thread - proteinReferencesWithPeptides = dao1.listProteinsWithPeptidesByExperiment(permID); - proteinReferencesWithProbability = dao1.listProteinsByExperiment(permID); - } - coverageCalculator = setUpCoverageCalculator(proteinReferencesWithPeptides); - proteins = - setUpAbundanceManager(proteinReferencesWithProbability, falseDiscoveryRate) - .getProteinsWithAbundances(); - } finally - { - getSpecificDAOFactory().returnProteinQueryDAOToPool(dao1); - if (dao2OrNull != null) - { - getSpecificDAOFactory().returnProteinQueryDAOToPool(dao2OrNull); - } - } + IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); + String permID = experimentDAO.getByTechId(experimentID).getPermId(); + CoverageCalculator coverageCalculator = setUpCoverageCalculator(permID); + AbundanceManager abundanceManager = setUpAbundanceManager(permID, falseDiscoveryRate); + Collection<ProteinWithAbundances> proteins = abundanceManager.getProteinsWithAbundances(); infos = new ArrayList<ProteinInfo>(proteins.size()); for (ProteinWithAbundances protein : proteins) { ProteinInfo proteinInfo = new ProteinInfo(); proteinInfo.setId(new TechId(protein.getId())); - AccessionNumberBuilder builder = - new AccessionNumberBuilder(protein.getAccessionNumber()); + AccessionNumberBuilder builder = new AccessionNumberBuilder(protein.getAccessionNumber()); proteinInfo.setCoverage(coverageCalculator.calculateCoverageFor(protein.getId())); proteinInfo.setAccessionNumber(builder.getAccessionNumber()); proteinInfo.setDescription(protein.getDescription()); @@ -130,8 +89,7 @@ class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTab double[] values = protein.getAbundancesForSample(sampleID); if (values != null && values.length > 0 && aggregateOnOriginal == false) { - values = new double[] - { function.aggregate(values) }; + values = new double[] {function.aggregate(values)}; } abundanceValues = concatenate(abundanceValues, values); } @@ -146,14 +104,17 @@ class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTab } } - private AbundanceManager setUpAbundanceManager( - DataSet<ProteinReferenceWithProbability> proteinReferences, double falseDiscoveryRate) + private AbundanceManager setUpAbundanceManager(String experimentPermID, + double falseDiscoveryRate) { AbundanceManager abundanceManager = new AbundanceManager(getDaoFactory().getSampleDAO()); + IProteinQueryDAO dao = getSpecificDAOFactory().getProteinQueryDAO(); ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); + DataSet<ProteinReferenceWithProbability> resultSet = + dao.listProteinsByExperiment(experimentPermID); try { - for (ProteinReferenceWithProbability protein : proteinReferences) + for (ProteinReferenceWithProbability protein : resultSet) { if (errorModel.passProtein(protein, falseDiscoveryRate)) { @@ -162,35 +123,24 @@ class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTab } } finally { - proteinReferences.close(); + resultSet.close(); } return abundanceManager; } - - private Future<DataSet<ProteinReferenceWithPeptideSequence>> getProteinReferencesWithPeptideAsynchronously( - final IProteinQueryDAO dao, final String experimentPermID) - { - return executor.submit(new Callable<DataSet<ProteinReferenceWithPeptideSequence>>() - { - public DataSet<ProteinReferenceWithPeptideSequence> call() throws Exception - { - return dao.listProteinsWithPeptidesByExperiment(experimentPermID); - } - }); - } - - private CoverageCalculator setUpCoverageCalculator( - DataSet<ProteinReferenceWithPeptideSequence> proteinReferences) + + private CoverageCalculator setUpCoverageCalculator(String experimentPermID) { + IProteinQueryDAO dao = getSpecificDAOFactory().getProteinQueryDAO(); + DataSet<ProteinReferenceWithPeptideSequence> resultSet = dao.listProteinsWithPeptidesByExperiment(experimentPermID); try { - return new CoverageCalculator(proteinReferences); + return new CoverageCalculator(resultSet); } finally { - proteinReferences.close(); + resultSet.close(); } } - + private static double[] concatenate(double[] array1OrNull, double[] array2OrNull) { if (array1OrNull == null || array1OrNull.length == 0) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSequenceTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSequenceTable.java index 5bc51e8d584..ffd31325cb7 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSequenceTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSequenceTable.java @@ -72,37 +72,26 @@ class ProteinSequenceTable extends AbstractBusinessObject implements IProteinSeq public void loadByReference(TechId proteinReferenceID) { - final IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAOFromPool(); - try + IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); + DataSet<Sequence> sequences = + proteinQueryDAO.listProteinSequencesByProteinReference(proteinReferenceID.getId()); + proteinSequences = new ArrayList<ProteinSequence>(sequences.size()); + databaseIDToShortNameMap = new HashMap<Long, String>(); + int number = 0; + for (Sequence sequence : sequences) { - final DataSet<Sequence> sequences = - proteinQueryDAO.listProteinSequencesByProteinReference(proteinReferenceID.getId()); - try - { - proteinSequences = new ArrayList<ProteinSequence>(sequences.size()); - databaseIDToShortNameMap = new HashMap<Long, String>(); - int number = 0; - for (Sequence sequence : sequences) - { - ProteinSequence proteinSequence = new ProteinSequence(); - proteinSequence.setId(new TechId(sequence.getId())); - String shortName = createShortName(number++); - proteinSequence.setShortName(shortName); - proteinSequence.setSequence(sequence.getSequence()); - long databaseID = sequence.getDatabaseID(); - proteinSequence.setDatabaseID(new TechId(databaseID)); - proteinSequence.setDatabaseNameAndVersion(sequence.getDatabaseNameAndVersion()); - proteinSequences.add(proteinSequence); - databaseIDToShortNameMap.put(databaseID, shortName); - } - } finally - { - sequences.close(); - } - } finally - { - getSpecificDAOFactory().returnProteinQueryDAOToPool(proteinQueryDAO); + ProteinSequence proteinSequence = new ProteinSequence(); + proteinSequence.setId(new TechId(sequence.getId())); + String shortName = createShortName(number++); + proteinSequence.setShortName(shortName); + proteinSequence.setSequence(sequence.getSequence()); + long databaseID = sequence.getDatabaseID(); + proteinSequence.setDatabaseID(new TechId(databaseID)); + proteinSequence.setDatabaseNameAndVersion(sequence.getDatabaseNameAndVersion()); + proteinSequences.add(proteinSequence); + databaseIDToShortNameMap.put(databaseID, shortName); } + sequences.close(); } private String createShortName(int number) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTable.java index ec08d8e6c53..f15ea14ce74 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTable.java @@ -88,43 +88,37 @@ class ProteinSummaryTable extends AbstractBusinessObject implements IProteinSumm public void load(TechId experimentID) { - final IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); - final String permID = experimentDAO.getByTechId(experimentID).getPermId(); - final ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); - final IProteinQueryDAO dao = getSpecificDAOFactory().getProteinQueryDAOFromPool(); + IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); + String permID = experimentDAO.getByTechId(experimentID).getPermId(); + IProteinQueryDAO dao = getSpecificDAOFactory().getProteinQueryDAO(); + ErrorModel errorModel = new ErrorModel(getSpecificDAOFactory()); + DataSet<ProteinReferenceWithProbabilityAndPeptide> resultSet = + dao.listProteinsWithProbabilityAndPeptidesByExperiment(permID); + List<Counter> counters = new ArrayList<Counter>(FDR_LEVELS.length); + for (double fdrLevel : FDR_LEVELS) + { + counters.add(new Counter(fdrLevel)); + } try { - final DataSet<ProteinReferenceWithProbabilityAndPeptide> resultSet = - dao.listProteinsWithProbabilityAndPeptidesByExperiment(permID); - final List<Counter> counters = new ArrayList<Counter>(FDR_LEVELS.length); - for (double fdrLevel : FDR_LEVELS) - { - counters.add(new Counter(fdrLevel)); - } - try + for (ProteinReferenceWithProbabilityAndPeptide protein : resultSet) { - for (ProteinReferenceWithProbabilityAndPeptide protein : resultSet) - { - long dataSetID = protein.getDataSetID(); - double probability = protein.getProbability(); - double fdr = errorModel.calculateFalsDiscoveryRate(dataSetID, probability); - for (Counter counter : counters) - { - counter.handle(fdr, protein); - } - } - summaries = new ArrayList<ProteinSummary>(counters.size()); + long dataSetID = protein.getDataSetID(); + double probability = protein.getProbability(); + double fdr = errorModel.calculateFalsDiscoveryRate(dataSetID, probability); for (Counter counter : counters) { - summaries.add(counter.getProteinSummary()); + counter.handle(fdr, protein); } - } finally + } + summaries = new ArrayList<ProteinSummary>(counters.size()); + for (Counter counter : counters) { - resultSet.close(); + summaries.add(counter.getProteinSummary()); } } finally { - getSpecificDAOFactory().returnProteinQueryDAOToPool(dao); + resultSet.close(); } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleTable.java index 8431a210fd4..898e5efbda3 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleTable.java @@ -62,33 +62,27 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable public void loadSamplesWithAbundance(TechId experimentID, TechId proteinReferenceID) { samples = new ArrayList<SampleWithPropertiesAndAbundance>(); - final IDAOFactory daoFactory = getDaoFactory(); - final String experimentPermID = daoFactory.getExperimentDAO().getByTechId(experimentID).getPermId(); - final IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAOFromPool(); + IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); + IDAOFactory daoFactory = getDaoFactory(); + String experimentPermID = daoFactory.getExperimentDAO().getByTechId(experimentID).getPermId(); + DataSet<SampleAbundance> sampleAbundances = + proteinQueryDAO.listSampleAbundanceByProtein(experimentPermID, proteinReferenceID.getId()); try { - final DataSet<SampleAbundance> sampleAbundances = - proteinQueryDAO.listSampleAbundanceByProtein(experimentPermID, proteinReferenceID.getId()); - try + ISampleDAO sampleDAO = daoFactory.getSampleDAO(); + for (SampleAbundance sampleAbundance : sampleAbundances) { - ISampleDAO sampleDAO = daoFactory.getSampleDAO(); - for (SampleAbundance sampleAbundance : sampleAbundances) - { - SampleWithPropertiesAndAbundance sample = new SampleWithPropertiesAndAbundance(); - sample.setAbundance(sampleAbundance.getAbundance()); - String samplePermID = sampleAbundance.getSamplePermID(); - long sampleID = sampleIDProvider.getSampleIDOrParentSampleID(samplePermID); - SamplePE samplePE = sampleDAO.getByTechId(new TechId(sampleID)); - fillSampleData(sample, samplePE); - samples.add(sample); - } - } finally - { - sampleAbundances.close(); + SampleWithPropertiesAndAbundance sample = new SampleWithPropertiesAndAbundance(); + sample.setAbundance(sampleAbundance.getAbundance()); + String samplePermID = sampleAbundance.getSamplePermID(); + long sampleID = sampleIDProvider.getSampleIDOrParentSampleID(samplePermID); + SamplePE samplePE = sampleDAO.getByTechId(new TechId(sampleID)); + fillSampleData(sample, samplePE); + samples.add(sample); } } finally { - getSpecificDAOFactory().returnProteinQueryDAOToPool(proteinQueryDAO); + sampleAbundances.close(); } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IPhosphoNetXDAOFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IPhosphoNetXDAOFactory.java index 2b49f2c9b17..670a00f1c6b 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IPhosphoNetXDAOFactory.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IPhosphoNetXDAOFactory.java @@ -23,19 +23,5 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.dataaccess; */ public interface IPhosphoNetXDAOFactory { - /** - * Retrieves a {@link IProteinQueryDAO} from the pool. - */ - public IProteinQueryDAO getProteinQueryDAOFromPool(); - - /** - * Retrieves a {@link IProteinQueryDAO} from the pool or <code>null</code> if none is currently - * available. - */ - public IProteinQueryDAO tryGetProteinQueryDAOFromPool(); - - /** - * Returns the given <var>proteinQueryDAO</var> to the pool. - */ - public void returnProteinQueryDAOToPool(IProteinQueryDAO proteinQueryDAO); + public IProteinQueryDAO getProteinQueryDAO(); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/db/PhosphoNetXDAOFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/db/PhosphoNetXDAOFactory.java index 10f7fc1b068..63fe09c0b92 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/db/PhosphoNetXDAOFactory.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/db/PhosphoNetXDAOFactory.java @@ -16,9 +16,8 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.dataaccess.db; +import java.sql.Connection; import java.sql.SQLException; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; import net.lemnik.eodsql.QueryTool; @@ -43,57 +42,28 @@ public class PhosphoNetXDAOFactory implements IPhosphoNetXDAOFactory private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, PhosphoNetXDAOFactory.class); - private final BlockingQueue<IProteinQueryDAO> availableProteinQueryObjects = - new LinkedBlockingQueue<IProteinQueryDAO>(); + private IProteinQueryDAO proteinQueryDAO; - public PhosphoNetXDAOFactory(DatabaseConfigurationContext context, - int numberOfParallelQueriesHint) + public PhosphoNetXDAOFactory(DatabaseConfigurationContext context) { - final int numberOfParallelQueries = - (numberOfParallelQueriesHint <= 0) ? Runtime.getRuntime().availableProcessors() - : numberOfParallelQueriesHint; DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context, DATABASE_VERSION); - for (int i = 0; i < numberOfParallelQueries; ++i) - { - availableProteinQueryObjects.add(createQuery(context)); - } - if (operationLog.isInfoEnabled()) - { - operationLog.info("DAO factory for PhosphoNetX created."); - } - } - - private IProteinQueryDAO createQuery(DatabaseConfigurationContext context) - { + Connection connection = null; try { - return QueryTool.getQuery(context.getDataSource().getConnection(), - IProteinQueryDAO.class); + connection = context.getDataSource().getConnection(); } catch (SQLException ex) { throw CheckedExceptionTunnel.wrapIfNecessary(ex); } - } - - public IProteinQueryDAO getProteinQueryDAOFromPool() - { - try - { - return availableProteinQueryObjects.take(); - } catch (InterruptedException ex) + proteinQueryDAO = QueryTool.getQuery(connection, IProteinQueryDAO.class); + if (operationLog.isInfoEnabled()) { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); + operationLog.info("DAO factory for PhosphoNetX created."); } } - public IProteinQueryDAO tryGetProteinQueryDAOFromPool() + public IProteinQueryDAO getProteinQueryDAO() { - return availableProteinQueryObjects.poll(); + return proteinQueryDAO; } - - public void returnProteinQueryDAOToPool(IProteinQueryDAO proteinQueryDAO) - { - availableProteinQueryObjects.add(proteinQueryDAO); - } - } diff --git a/rtd_phosphonetx/source/java/phosphonetx-applicationContext.xml b/rtd_phosphonetx/source/java/phosphonetx-applicationContext.xml index be242ac6f94..3af8c91f361 100644 --- a/rtd_phosphonetx/source/java/phosphonetx-applicationContext.xml +++ b/rtd_phosphonetx/source/java/phosphonetx-applicationContext.xml @@ -32,7 +32,6 @@ <bean id="phosphonetx-dao-factory" class="ch.systemsx.cisd.openbis.plugin.phosphonetx.server.dataaccess.db.PhosphoNetXDAOFactory"> <constructor-arg ref="phosphonetx-db-configuration-context"/> - <constructor-arg value="${phosphonetx.number-of-parallel-queries}"/> </bean> <bean id="phosphonetx-bo-factory" diff --git a/rtd_phosphonetx/source/java/service.properties b/rtd_phosphonetx/source/java/service.properties index 5f9578be35d..67190951302 100644 --- a/rtd_phosphonetx/source/java/service.properties +++ b/rtd_phosphonetx/source/java/service.properties @@ -35,10 +35,6 @@ phosphonetx.database.owner-password = phosphonetx.database.admin-user = phosphonetx.database.admin-password = phosphonetx.script-folder = source -# Provide here the number of long-running queries that should be executed in parallel on the database -# 0 means: use number of CPUs in the system (which assumes that the database and the application -# server are running on the same host). -phosphonetx.number-of-parallel-queries = 0 crowd.service.host = crowd.systemsx.ch crowd.service.port = 8443 diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerTest.java index 4d1a7ea859e..a794e34a8c0 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerTest.java @@ -70,9 +70,8 @@ public class PhosphoNetXServerTest extends AbstractServerTestCase context.checking(new Expectations() { { - allowing(phosphoNetXDAOFactory).getProteinQueryDAOFromPool(); + allowing(phosphoNetXDAOFactory).getProteinQueryDAO(); will(returnValue(proteinDAO)); - allowing(phosphoNetXDAOFactory).returnProteinQueryDAOToPool(proteinDAO); } }); } diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModelTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModelTest.java index f027d67255b..3aace8dbac0 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModelTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ErrorModelTest.java @@ -56,9 +56,8 @@ public class ErrorModelTest extends AssertJUnit context.checking(new Expectations() { { - allowing(specificDAOFactory).getProteinQueryDAOFromPool(); + allowing(specificDAOFactory).getProteinQueryDAO(); will(returnValue(proteinQueryDAO)); - allowing(specificDAOFactory).returnProteinQueryDAOToPool(proteinQueryDAO); atMost(1).of(proteinQueryDAO).getProbabilityFDRMapping(DATA_SET1_ID); MockDataSet<ProbabilityFDRMapping> dataSet1 = new MockDataSet<ProbabilityFDRMapping>(); diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTableTest.java index 23bf9ae0c6a..350d680a55a 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTableTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinInfoTableTest.java @@ -75,11 +75,8 @@ public class ProteinInfoTableTest extends AbstractServerTestCase context.checking(new Expectations() { { - allowing(specificDAOFactory).getProteinQueryDAOFromPool(); + allowing(specificDAOFactory).getProteinQueryDAO(); will(returnValue(proteinDAO)); - allowing(specificDAOFactory).tryGetProteinQueryDAOFromPool(); - will(returnValue(proteinDAO)); - allowing(specificDAOFactory).returnProteinQueryDAOToPool(proteinDAO); } }); table = new ProteinInfoTable(daoFactory, specificDAOFactory, SESSION); diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTableTest.java index 9dadc30a08b..fd86e373abf 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTableTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ProteinSummaryTableTest.java @@ -62,9 +62,8 @@ public class ProteinSummaryTableTest extends AbstractServerTestCase context.checking(new Expectations() { { - allowing(specificDAOFactory).getProteinQueryDAOFromPool(); + allowing(specificDAOFactory).getProteinQueryDAO(); will(returnValue(proteinDAO)); - allowing(specificDAOFactory).returnProteinQueryDAOToPool(proteinDAO); } }); table = new ProteinSummaryTable(daoFactory, specificDAOFactory, SESSION); -- GitLab