From 76b1846a62fd7f7fc53cfef716ec0e16dd5c0672 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 2 Sep 2009 07:12:38 +0000 Subject: [PATCH] SE-127 some bugs (but not all) in samples table of protein details view fixed SVN: 12357 --- .../application/ProteinSamplesSection.java | 6 ++-- .../SampleAbundanceBrowserGrid.java | 6 ++-- .../ListSampleAbundanceByProteinCriteria.java | 10 +++--- .../ListSampleAbundanceDataProvider.java | 9 +++--- .../web/server/PhosphoNetXClientService.java | 2 +- .../phosphonetx/server/PhosphoNetXServer.java | 4 +-- .../server/PhosphoNetXServerLogger.java | 6 ++-- .../server/business/ISampleTable.java | 2 +- .../server/business/SampleTable.java | 32 +++++-------------- .../server/dataaccess/IProteinQueryDAO.java | 10 ++++-- .../shared/IPhosphoNetXServer.java | 2 +- 11 files changed, 39 insertions(+), 50 deletions(-) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSamplesSection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSamplesSection.java index 0d7b2f5c3e3..6330f85a981 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSamplesSection.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSamplesSection.java @@ -38,12 +38,12 @@ public class ProteinSamplesSection extends SingleSectionPanel private IDisposableComponent sampleDisposableGrid; public ProteinSamplesSection(final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final TechId proteinID) + final TechId proteinReferenceID) { super("Samples"); sampleDisposableGrid = - SampleAbundanceBrowserGrid.createGridForProteinSamples(viewContext, proteinID, - createGridId(proteinID)); + SampleAbundanceBrowserGrid.createGridForProteinSamples(viewContext, proteinReferenceID, + createGridId(proteinReferenceID)); add(sampleDisposableGrid.getComponent()); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java index b4701b88583..053d69249d7 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java @@ -86,12 +86,12 @@ public class SampleAbundanceBrowserGrid private final IViewContext<IPhosphoNetXClientServiceAsync> phosphoViewContext; public static IDisposableComponent createGridForProteinSamples( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, final TechId proteinID, - final String gridId) + final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, + final TechId proteinReferenceID, final String gridId) { final ListSampleAbundanceByProteinCriteria criteria = new ListSampleAbundanceByProteinCriteria(); - criteria.setProteinID(proteinID); + criteria.setProteinReferenceID(proteinReferenceID); ISampleAbundanceCriteriaProvider criteriaProvider = new SampleAbundanceCriteriaProvider(viewContext, criteria); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java index 592ec020411..6eefaa1677b 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java @@ -30,15 +30,15 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.SampleWithPr public class ListSampleAbundanceByProteinCriteria extends DefaultResultSetConfig<String, SampleWithPropertiesAndAbundance> implements IsSerializable { - private TechId proteinID; + private TechId proteinReferenceID; - public final TechId getProteinID() + public final TechId getProteinReferenceID() { - return proteinID; + return proteinReferenceID; } - public final void setProteinID(TechId proteinID) + public final void setProteinReferenceID(TechId proteinReferenceID) { - this.proteinID = proteinID; + this.proteinReferenceID = proteinReferenceID; } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/ListSampleAbundanceDataProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/ListSampleAbundanceDataProvider.java index e8701aec368..13350d8a519 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/ListSampleAbundanceDataProvider.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/ListSampleAbundanceDataProvider.java @@ -35,19 +35,20 @@ class ListSampleAbundanceDataProvider implements IOriginalDataProvider<SampleWit private final String sessionToken; - private final TechId proteinID; + private final TechId proteinReferenceID; - ListSampleAbundanceDataProvider(IPhosphoNetXServer server, String sessionToken, TechId proteinID) + ListSampleAbundanceDataProvider(IPhosphoNetXServer server, String sessionToken, + TechId proteinReferenceID) { this.server = server; this.sessionToken = sessionToken; - this.proteinID = proteinID; + this.proteinReferenceID = proteinReferenceID; } public List<SampleWithPropertiesAndAbundance> getOriginalData() throws UserFailureException { - return server.listSamplesWithAbundanceByProtein(sessionToken, proteinID); + return server.listSamplesWithAbundanceByProtein(sessionToken, proteinReferenceID); } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java index b2696ff2588..a605154b033 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java @@ -144,7 +144,7 @@ public class PhosphoNetXClientService extends AbstractClientService implements { final String sessionToken = getSessionToken(); return listEntities(criteria, new ListSampleAbundanceDataProvider(server, sessionToken, - criteria.getProteinID())); + criteria.getProteinReferenceID())); } public String prepareExportSamplesWithAbundance( 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 663bcbaebaa..0f964cb130b 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 @@ -187,11 +187,11 @@ public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implem } public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinID) throws UserFailureException + String sessionToken, TechId proteinReferenceID) throws UserFailureException { final Session session = getSessionManager().getSession(sessionToken); ISampleTable sampleTable = specificBOFactory.createSampleTable(session); - sampleTable.loadSamplesWithAbundance(proteinID); + sampleTable.loadSamplesWithAbundance(proteinReferenceID); return sampleTable.getSamples(); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerLogger.java index 025e9d0e986..a3e35f953f3 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerLogger.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/PhosphoNetXServerLogger.java @@ -83,10 +83,10 @@ public class PhosphoNetXServerLogger extends AbstractServerLogger implements IPh } public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinID) throws UserFailureException + String sessionToken, TechId proteinReferenceID) throws UserFailureException { - logAccess(sessionToken, "list_samples_with_abundance_by_protein", "PROTEIN_ID(%s)", - proteinID); + logAccess(sessionToken, "list_samples_with_abundance_by_protein", "PROTEIN_REFERENCE_ID(%s)", + proteinReferenceID); return null; } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ISampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ISampleTable.java index cbf5d9da684..63e7d88cf96 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ISampleTable.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/ISampleTable.java @@ -29,7 +29,7 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.SampleWithPr public interface ISampleTable { - public void loadSamplesWithAbundance(TechId proteinID); + public void loadSamplesWithAbundance(TechId proteinReferenceID); public List<SampleWithPropertiesAndAbundance> getSamples(); 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 4db06a266bf..85e07e332e3 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 @@ -27,7 +27,6 @@ import org.apache.commons.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; @@ -47,10 +46,12 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable { private List<SampleWithPropertiesAndAbundance> samples = new ArrayList<SampleWithPropertiesAndAbundance>(); + private SampleIDProvider sampleIDProvider; SampleTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, Session session) { super(daoFactory, specificDAOFactory, session); + sampleIDProvider = new SampleIDProvider(daoFactory.getSampleDAO()); } public List<SampleWithPropertiesAndAbundance> getSamples() @@ -58,13 +59,13 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable return samples; } - public void loadSamplesWithAbundance(TechId proteinID) + public void loadSamplesWithAbundance(TechId proteinReferenceID) { samples = new ArrayList<SampleWithPropertiesAndAbundance>(); IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); ISampleDAO sampleDAO = getDaoFactory().getSampleDAO(); DataSet<SampleAbundance> sampleAbundances = - proteinQueryDAO.listSampleAbundanceByProtein(proteinID.getId()); + proteinQueryDAO.listSampleAbundanceByProtein(proteinReferenceID.getId()); try { for (SampleAbundance sampleAbundance : sampleAbundances) @@ -72,12 +73,8 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable SampleWithPropertiesAndAbundance sample = new SampleWithPropertiesAndAbundance(); sample.setAbundance(sampleAbundance.getAbundance()); String samplePermID = sampleAbundance.getSamplePermID(); - SamplePE samplePE = sampleDAO.tryToFindByPermID(samplePermID); - if (samplePE == null) - { - throw new IllegalStateException("No sample with following permanent ID found: " - + samplePermID); - } + long sampleID = sampleIDProvider.getSampleIDOrParentSampleID(samplePermID); + SamplePE samplePE = sampleDAO.getByTechId(new TechId(sampleID)); fillSampleData(sample, samplePE); samples.add(sample); } @@ -95,20 +92,7 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable result.setIdentifier(StringEscapeUtils.escapeHtml(samplePE.getIdentifier())); result.setSampleType(SampleTypeTranslator.translate(samplePE.getSampleType(), new HashMap<PropertyTypePE, PropertyType>())); - setProperties(result, samplePE); - } - - private static void setProperties(final SampleWithPropertiesAndAbundance result, - final SamplePE samplePE) - { - if (samplePE.isPropertiesInitialized()) - { - result.setProperties(EntityPropertyTranslator.translate(samplePE.getProperties(), - new HashMap<PropertyTypePE, PropertyType>())); - } else - { - result.setProperties(new ArrayList<IEntityProperty>()); - } + result.setProperties(EntityPropertyTranslator.translate(samplePE.getProperties(), + new HashMap<PropertyTypePE, PropertyType>())); } - } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IProteinQueryDAO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IProteinQueryDAO.java index 5c73ea7bf19..232314502d4 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IProteinQueryDAO.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/dataaccess/IProteinQueryDAO.java @@ -83,8 +83,12 @@ public interface IProteinQueryDAO extends BaseQuery @Select("select * from peptides where prot_id = ?{1}") public DataSet<IdentifiedPeptide> listIdentifiedPeptidesByProtein(long proteinID); - @Select("select a.id, perm_id, value from abundances as a join samples as s on a.samp_id = s.id " - + "where a.prot_id = ?{1}") - public DataSet<SampleAbundance> listSampleAbundanceByProtein(long proteinID); + @Select("select distinct a.id, perm_id, value " + + "from abundances as a left join proteins as p on a.prot_id = p.id " + + " left join identified_proteins as i on i.prot_id = p.id " + + " left join sequences as s on i.sequ_id = s.id " + + " left join samples on a.samp_id = samples.id " + + "where s.prre_id = ?{1}") + public DataSet<SampleAbundance> listSampleAbundanceByProtein(long proteinReferenceID); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IPhosphoNetXServer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IPhosphoNetXServer.java index 732f465312b..342e5af0953 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IPhosphoNetXServer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IPhosphoNetXServer.java @@ -74,6 +74,6 @@ public interface IPhosphoNetXServer extends IServer @Transactional @RolesAllowed(RoleSet.OBSERVER) public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinID) throws UserFailureException; + String sessionToken, TechId proteinReferenceID) throws UserFailureException; } -- GitLab