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 6330f85a9817105c7b9812c42171cf50a16ca761..a18c1ec9ae9bb7c76fa6c3dc3d4eb43e66304a85 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 @@ -22,6 +22,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.SingleSect import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync; /** @@ -38,12 +39,13 @@ public class ProteinSamplesSection extends SingleSectionPanel private IDisposableComponent sampleDisposableGrid; public ProteinSamplesSection(final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final TechId proteinReferenceID) + final TechId proteinReferenceID, Experiment experimentOrNull) { super("Samples"); + Long experimentID = experimentOrNull == null ? null : experimentOrNull.getId(); sampleDisposableGrid = - SampleAbundanceBrowserGrid.createGridForProteinSamples(viewContext, proteinReferenceID, - createGridId(proteinReferenceID)); + SampleAbundanceBrowserGrid.createGridForProteinSamples(viewContext, + proteinReferenceID, experimentID, createGridId(proteinReferenceID)); add(sampleDisposableGrid.getComponent()); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java index c0d92e92e882e12954b3eba9e9ac4f776186f742..77d8904cde895a9e0198d32bf8972d4d0fca1f2f 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java @@ -77,7 +77,7 @@ public class ProteinViewer extends { public String getId() { - return createWidgetID(proteinInfo.getId()); + return createWidgetID(experimentOrNull, proteinInfo.getId()); } public ITabItem create() @@ -106,9 +106,10 @@ public class ProteinViewer extends return StringUtils.abbreviate(info, 30); } - static String createWidgetID(TechId proteinReferenceID) + static String createWidgetID(Experiment experimentOrNull, TechId proteinReferenceID) { - return ID_PREFIX + proteinReferenceID.getId(); + Long experimentID = experimentOrNull == null ? null : experimentOrNull.getId(); + return ID_PREFIX + experimentID + "_" + proteinReferenceID.getId(); } private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; @@ -122,7 +123,7 @@ public class ProteinViewer extends private ProteinViewer(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, Experiment experimentOrNull, TechId proteinReferenceID) { - super(viewContext, "", createWidgetID(proteinReferenceID), false); + super(viewContext, "", createWidgetID(experimentOrNull, proteinReferenceID), false); this.viewContext = viewContext; this.experimentOrNull = experimentOrNull; this.proteinReferenceID = proteinReferenceID; @@ -151,7 +152,8 @@ public class ProteinViewer extends } else { add(propertyPanel, createBorderLayoutData(LayoutRegion.CENTER)); - proteinSamplesSection = new ProteinSamplesSection(viewContext, proteinReferenceID); + proteinSamplesSection = + new ProteinSamplesSection(viewContext, proteinReferenceID, experimentOrNull); add(proteinSamplesSection, createBorderLayoutData(LayoutRegion.SOUTH)); layout(); } 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 053d69249d76c5e4e675ab9c4b6213d88b8c7ed9..83a9df3cd3f43cf86a10463dd575b8dc7059850e 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 @@ -87,11 +87,12 @@ public class SampleAbundanceBrowserGrid public static IDisposableComponent createGridForProteinSamples( final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final TechId proteinReferenceID, final String gridId) + final TechId proteinReferenceID, Long experimentIDOrNull, final String gridId) { final ListSampleAbundanceByProteinCriteria criteria = new ListSampleAbundanceByProteinCriteria(); criteria.setProteinReferenceID(proteinReferenceID); + criteria.setExperimentID(experimentIDOrNull); 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 6eefaa1677b7f725ae506ddee00d79c80254f984..9cf36395a4abae89bebf929704acb87030199b89 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,8 +30,19 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.SampleWithPr public class ListSampleAbundanceByProteinCriteria extends DefaultResultSetConfig<String, SampleWithPropertiesAndAbundance> implements IsSerializable { + private TechId experimentID; private TechId proteinReferenceID; + public final TechId getExperimentID() + { + return experimentID; + } + + public final void setExperimentID(Long experimentID) + { + this.experimentID = experimentID == null ? null : new TechId(experimentID); + } + public final TechId getProteinReferenceID() { return 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 13350d8a51978654fd60877b8645307a41bde199..c7ce947019b0c52de8e4d98cfc4fb4f6f46d6a4a 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,20 +35,23 @@ class ListSampleAbundanceDataProvider implements IOriginalDataProvider<SampleWit private final String sessionToken; + private final TechId experimentID; + private final TechId proteinReferenceID; ListSampleAbundanceDataProvider(IPhosphoNetXServer server, String sessionToken, - TechId proteinReferenceID) + TechId experimentID, TechId proteinReferenceID) { this.server = server; this.sessionToken = sessionToken; + this.experimentID = experimentID; this.proteinReferenceID = proteinReferenceID; } public List<SampleWithPropertiesAndAbundance> getOriginalData() throws UserFailureException { - return server.listSamplesWithAbundanceByProtein(sessionToken, proteinReferenceID); + return server.listSamplesWithAbundanceByProtein(sessionToken, experimentID, 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 cbc836978bef5de5d8e13259d039ce0da8e7680d..96a748d55f2b32d1c20365b5acb8ecf04349dff2 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 @@ -154,7 +154,7 @@ public class PhosphoNetXClientService extends AbstractClientService implements { final String sessionToken = getSessionToken(); return listEntities(criteria, new ListSampleAbundanceDataProvider(server, sessionToken, - criteria.getProteinReferenceID())); + criteria.getExperimentID(), 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 e12e5502dc64661b561e9d1d9ab745929e55ce23..dd798d11f4bb063980b645920d8b8e7560879659 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 @@ -182,11 +182,12 @@ public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implem } public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinReferenceID) throws UserFailureException + String sessionToken, TechId experimentID, TechId proteinReferenceID) + throws UserFailureException { final Session session = getSessionManager().getSession(sessionToken); ISampleTable sampleTable = specificBOFactory.createSampleTable(session); - sampleTable.loadSamplesWithAbundance(proteinReferenceID); + sampleTable.loadSamplesWithAbundance(experimentID, 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 a4bc062abe4a96d2c7fd507c6f26ff2cd56c3d23..4222fd2b29f3eb93c047699de7ed28bd6cc83365 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 @@ -96,10 +96,11 @@ public class PhosphoNetXServerLogger extends AbstractServerLogger implements IPh } public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinReferenceID) throws UserFailureException + String sessionToken, TechId experimentID, TechId proteinReferenceID) + throws UserFailureException { - logAccess(sessionToken, "list_samples_with_abundance_by_protein", "PROTEIN_REFERENCE_ID(%s)", - proteinReferenceID); + logAccess(sessionToken, "list_samples_with_abundance_by_protein", + "EXPERIMENT_ID(%s) PROTEIN_REFERENCE_ID(%s)", experimentID, 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 63e7d88cf966ef675811748e6d57bb3f3f762850..f7006ad7ec9e3f95630c10ef9472a729da7de479 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 proteinReferenceID); + public void loadSamplesWithAbundance(TechId experimentID, 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 85e07e332e3ab4c8ed1ee4d2e80b9125b6fcd2cc..898e5efbda3b7133b8ec4894c9c3e397a7a58cde 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 @@ -59,15 +59,17 @@ class SampleTable extends AbstractBusinessObject implements ISampleTable return samples; } - public void loadSamplesWithAbundance(TechId proteinReferenceID) + public void loadSamplesWithAbundance(TechId experimentID, TechId proteinReferenceID) { samples = new ArrayList<SampleWithPropertiesAndAbundance>(); IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(); - ISampleDAO sampleDAO = getDaoFactory().getSampleDAO(); + IDAOFactory daoFactory = getDaoFactory(); + String experimentPermID = daoFactory.getExperimentDAO().getByTechId(experimentID).getPermId(); DataSet<SampleAbundance> sampleAbundances = - proteinQueryDAO.listSampleAbundanceByProtein(proteinReferenceID.getId()); + proteinQueryDAO.listSampleAbundanceByProtein(experimentPermID, proteinReferenceID.getId()); try { + ISampleDAO sampleDAO = daoFactory.getSampleDAO(); for (SampleAbundance sampleAbundance : sampleAbundances) { SampleWithPropertiesAndAbundance sample = new SampleWithPropertiesAndAbundance(); 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 6061c44940ef901e2bd6c3b226d364af402ffeff..39bd86b6d41bb7f97001b22918818394c220cf7c 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,12 +83,15 @@ public interface IProteinQueryDAO extends BaseQuery @Select("select * from peptides where prot_id = ?{1}") public DataSet<IdentifiedPeptide> listIdentifiedPeptidesByProtein(long proteinID); - @Select("select distinct a.id, perm_id, value " + @Select("select distinct a.id, samples.perm_id, value " + "from abundances as a left join proteins as p on a.prot_id = p.id " + + " left join data_sets as d on p.dase_id = d.id " + + " left join experiments as e on d.expe_id = e.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); + + "where e.perm_id = ?{1} and s.prre_id = ?{2}") + public DataSet<SampleAbundance> listSampleAbundanceByProtein(String experimentPermID, + 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 ab481b783889a83e69369133cf48c9088f98a7a8..ce73f84b4cea80913b8c9e5c93792c1593523330 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 @@ -81,6 +81,7 @@ public interface IPhosphoNetXServer extends IServer @Transactional @RolesAllowed(RoleSet.OBSERVER) public List<SampleWithPropertiesAndAbundance> listSamplesWithAbundanceByProtein( - String sessionToken, TechId proteinReferenceID) throws UserFailureException; + String sessionToken, TechId experimentID, TechId proteinReferenceID) + throws UserFailureException; }