diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java index 97248a938d60e84eea8d06f04dc51db3fbf75f88..4af7433834f46d06ac25307e678b2523863d881d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java @@ -24,6 +24,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader; @@ -34,7 +35,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoade */ public interface IScreeningBusinessObjectFactory { - public IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId); + public IHCSDatasetLoader createHCSDatasetLoader(final ExternalDataPE dataSet); public ISampleBO createSampleBO(final Session session); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java index 94b91bfaad93e41958373e687fa7523561521535..75439defbcc4ca03608575a03f7f47d0ed4daaea 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.plugin.AbstractPluginBusinessObjectFactory; import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.IScreeningDAOFactory; @@ -52,9 +53,10 @@ public final class ScreeningBusinessObjectFactory extends AbstractPluginBusiness { } - public final IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId) + public IHCSDatasetLoader createHCSDatasetLoader(ExternalDataPE dataSet) { - return new HCSDatasetLoader(specificDAOFactory.getImagingQueryDAO(datasetPermId), datasetPermId); + String dssCode = dataSet.getDataStore().getCode(); + return new HCSDatasetLoader(specificDAOFactory.getImagingQueryDAO(dssCode), dataSet.getCode()); } public final ISampleBO createSampleBO(final Session session) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java index bf74bea5e8ed588481fcf304e5aab6e81882b413..f3b0d4d128628edf4ac7537214758cad02639cd6 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java @@ -25,5 +25,5 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImag */ public interface IScreeningDAOFactory { - public IImagingQueryDAO getImagingQueryDAO(String datasetPermId); + public IImagingQueryDAO getImagingQueryDAO(String dssCode); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java index f8abfc1f196b5812d220033507a1e1df75005345..c7dbaaafb5a94b1994897712f88cc4ef068a996c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java @@ -42,8 +42,9 @@ public class ScreeningDAOFactory implements IScreeningDAOFactory LogFactory.getLogger(LogCategory.OPERATION, ScreeningDAOFactory.class); private final IDataSourceProvider dataSourceProvider; - - private final Map<DataSource, IImagingQueryDAO> daos = new HashMap<DataSource, IImagingQueryDAO>(); + + private final Map<DataSource, IImagingQueryDAO> daos = + new HashMap<DataSource, IImagingQueryDAO>(); public ScreeningDAOFactory(IDataSourceProvider dataSourceProvider) { @@ -51,13 +52,14 @@ public class ScreeningDAOFactory implements IScreeningDAOFactory if (operationLog.isInfoEnabled()) { operationLog.info("DAO factory for Screening created. Data source provider: " - + dataSourceProvider.getClass()); + + dataSourceProvider.getClass().getName()); } } - public IImagingQueryDAO getImagingQueryDAO(String datasetPermId) + public IImagingQueryDAO getImagingQueryDAO(String dssCode) { - DataSource dataSource = dataSourceProvider.getDataSourceByDataSetCode(datasetPermId, TECHNOLOGY); + DataSource dataSource = + dataSourceProvider.getDataSourceByDataStoreServerCode(dssCode, TECHNOLOGY); IImagingQueryDAO dao = daos.get(dataSource); if (dao == null) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java index 3db21a5002b51faff378d3b3d195823f69bc5b8a..6423a27e8aef2be967d758c899ba0519e0a1d153 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java @@ -197,27 +197,33 @@ public class GenePlateLocationsLoader } private Map<String/* dataset code */, PlateImageParameters> loadImagesReport( - List<ExternalDataPE> usedDatasets) + List<ExternalDataPE> usedDataSets) { - List<String> datasetCodes = extractDatasetCodes(usedDatasets); List<PlateImageParameters> imageParameters = new ArrayList<PlateImageParameters>(); - for (String datasetCode : datasetCodes) + List<ExternalDataPE> distinctDataSets = getDistinctDataSets(usedDataSets); + for (ExternalDataPE dataSet : distinctDataSets) { final IHCSDatasetLoader loader = - businessObjectFactory.createHCSDatasetLoader(datasetCode); + businessObjectFactory.createHCSDatasetLoader(dataSet); imageParameters.add(PlateImageParametersFactory.create(loader)); } return asDatasetToParamsMap(imageParameters); } - - private static List<String> extractDatasetCodes(List<ExternalDataPE> usedDatasets) + + private List<ExternalDataPE> getDistinctDataSets(List<ExternalDataPE> usedDataSets) { - Set<String> codes = new HashSet<String>(); - for (ExternalDataPE dataset : usedDatasets) + List<ExternalDataPE> result = new ArrayList<ExternalDataPE>(); + Set<String> dataSetCodes = new HashSet<String>(); + for (ExternalDataPE dataSet : usedDataSets) { - codes.add(dataset.getCode()); + String code = dataSet.getCode(); + if (dataSetCodes.contains(code) == false) + { + dataSetCodes.add(code); + result.add(dataSet); + } } - return new ArrayList<String>(codes); + return result; } private static Map<String/* dataset code */, PlateImageParameters> asDatasetToParamsMap( diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateContentLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateContentLoader.java index 08f94ca9fb703d10eddbe2c66fa3049c31b44ad0..aedef42cfdd1b789f780af424b24e60bae53a824 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateContentLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateContentLoader.java @@ -273,7 +273,7 @@ public class PlateContentLoader IExternalDataTable externalDataTable) { final IHCSDatasetLoader loader = - businessObjectFactory.createHCSDatasetLoader(dataset.getCode()); + businessObjectFactory.createHCSDatasetLoader(dataset); return PlateImageParametersFactory.create(loader); }