From fd2b69b3c623df1e6f471daa1d093424b9930fda Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Fri, 25 Jun 2010 07:30:04 +0000 Subject: [PATCH] [LMS-1588] stop using reporting plugin in openBIS to fetch image dataset metadata (ScreeningPlateImageParamsReportingPlugin) SVN: 16733 --- .../dss/etl/HCSImageDatasetLoaderFactory.java | 77 ------------------- ...eeningPlateImageParamsReportingPlugin.java | 1 + .../dataaccess/db/ScreeningDAOFactory.java | 4 +- .../server/logic/DatasetReportsLoader.java | 62 ++++++--------- .../logic/GenePlateLocationsLoader.java | 15 ++-- .../server/logic/PlateContentLoader.java | 14 +--- .../shared/basic/dto/ScreeningConstants.java | 3 - .../shared/imaging/HCSDatasetLoader.java | 5 ++ .../shared/imaging/IHCSDatasetLoader.java | 2 + 9 files changed, 45 insertions(+), 138 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java index ac0b35df322..82f7855d77b 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java @@ -17,20 +17,14 @@ package ch.systemsx.cisd.openbis.dss.etl; import java.io.File; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import javax.sql.DataSource; import net.lemnik.eodsql.QueryTool; -import ch.systemsx.cisd.bds.hcs.Geometry; -import ch.systemsx.cisd.bds.hcs.Location; -import ch.systemsx.cisd.common.io.FileBasedContent; import ch.systemsx.cisd.openbis.dss.etl.dataaccess.HCSImageDatasetLoader; -import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO; @@ -64,7 +58,6 @@ public class HCSImageDatasetLoaderFactory public static final IHCSImageDatasetLoader create(File datasetRootDir, String datasetCode) { return createImageDBLoader(datasetRootDir, datasetCode); - // return createBDSLoader(datasetRootDir); } private static HCSImageDatasetLoader createImageDBLoader(File datasetRootDir, String datasetCode) @@ -73,74 +66,4 @@ public class HCSImageDatasetLoaderFactory return new HCSImageDatasetLoader(query, datasetCode, repository); } - // remove when not needed - @SuppressWarnings("unused") - private static IHCSImageDatasetLoader createBDSLoader(File datasetRootDir) - { - final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader = - new ch.systemsx.cisd.bds.hcs.HCSDatasetLoader(datasetRootDir); - return adapt(loader); - } - - private static IHCSImageDatasetLoader adapt(final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader) - { - return new IHCSImageDatasetLoader() - { - - public void close() - { - loader.close(); - } - - public int getChannelCount() - { - return loader.getChannelCount(); - } - - public Geometry getPlateGeometry() - { - return loader.getPlateGeometry(); - } - - public Geometry getWellGeometry() - { - return loader.getWellGeometry(); - } - - public AbsoluteImageReference tryGetImage(String chosenChannel, - Location wellLocation, Location tileLocation, Size thumbnailSizeOrNull) - { - if (thumbnailSizeOrNull != null) - { - return null; - } - String absPath = - loader.tryGetStandardNodeAt(convertToNumber(chosenChannel), - wellLocation, tileLocation); - return new AbsoluteImageReference(new FileBasedContent(new File(absPath)), - null, null); - } - - private int convertToNumber(String chosenChannel) - { - return Integer.parseInt(chosenChannel) - 1; - } - - public List<String> getChannelsNames() - { - List<String> names = new ArrayList<String>(); - for (int i = 0; i < getChannelCount(); i++) - { - names.add(convertToName(i)); - } - return names; - } - - private String convertToName(int i) - { - return (i + 1) + ""; - } - - }; - } } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java index e7273040dae..99108406ddb 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java @@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; * * @author Tomasz Pylak */ +// TODO 2010-06-25, Piotr Buczek: remove public class ScreeningPlateImageParamsReportingPlugin extends AbstractDatastorePlugin implements IReportingPluginTask { 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 9a8095fdcf5..5a7c72404d6 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 @@ -58,8 +58,8 @@ public class ScreeningDAOFactory implements IScreeningDAOFactory { throw CheckedExceptionTunnel.wrapIfNecessary(ex); } - // TODO this is the same solution as in PhosphoNetX - is it ok to use connection here? - // shouldn't it be a data source passed here in constructor? + // TODO 2010-06-25, Piotr Buczek: this is the same solution as in PhosphoNetX - is it ok to + // use connection here? shouldn't it be a data source passed here in constructor? imagingQueryDAO = QueryTool.getQuery(connection, IImagingQueryDAO.class); if (operationLog.isInfoEnabled()) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/DatasetReportsLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/DatasetReportsLoader.java index f9c1c782696..4123343ed38 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/DatasetReportsLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/DatasetReportsLoader.java @@ -21,13 +21,13 @@ import java.util.List; import org.apache.commons.lang.StringEscapeUtils; +import ch.systemsx.cisd.bds.hcs.Geometry; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExternalDataTable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.plugin.screening.server.IScreeningBusinessObjectFactory; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.PlateImageParameters; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; +import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader; /** * Loads content of datasets by contacting DSS. @@ -43,52 +43,40 @@ public class DatasetReportsLoader ScreeningConstants.PLATE_IMAGE_ANALYSIS_REPORT_KEY, datastoreCode, datasets); } - public static List<PlateImageParameters> loadPlateImageParameters(List<String> datasets, - String datastoreCode, IExternalDataTable externalDataTable) - { - TableModel imageParamsReport = - externalDataTable.createReportFromDatasets( - ScreeningConstants.PLATE_IMAGE_PARAMS_REPORT_KEY, datastoreCode, datasets); - return asImageParams(imageParamsReport); - } - - private static List<PlateImageParameters> asImageParams(TableModel imageParamsReport) + public static List<PlateImageParameters> loadPlateImageParameters(List<String> datasetCodes, + IScreeningBusinessObjectFactory boFactory) { List<PlateImageParameters> paramsList = new ArrayList<PlateImageParameters>(); - for (TableModelRow tableModelRow : imageParamsReport.getRows()) + + for (String datasetCode : datasetCodes) { - paramsList.add(asImageParams(tableModelRow)); + final IHCSDatasetLoader loader = boFactory.createHCSDatasetLoader(datasetCode); + paramsList.add(createImageParameters(loader)); } return paramsList; } - private static PlateImageParameters asImageParams(TableModelRow tableModelRow) + // TODO 2010-06-25, Piotr Buczek: move + public static PlateImageParameters createImageParameters(IHCSDatasetLoader loader) { + final String datasetCode = loader.getDatasetPermId(); + final Geometry plateGeometry = loader.getPlateGeometry(); + final Geometry wellGeometry = loader.getWellGeometry(); + final List<String> channelsNames = loader.getChannelsNames(); + PlateImageParameters params = new PlateImageParameters(); - List<ISerializableComparable> values = tableModelRow.getValues(); - params.setDatasetCode(asText(values.get(0))); - params.setRowsNum(asNum(values.get(1))); - params.setColsNum(asNum(values.get(2))); - params.setTileRowsNum(asNum(values.get(3))); - params.setTileColsNum(asNum(values.get(4))); - String channelsNamesCsv = asText(values.get(5)); - String[] splittedChannelsNames = channelsNamesCsv.split(","); - List<String> channelNames = new ArrayList<String>(); - for (String val : splittedChannelsNames) + params.setDatasetCode(datasetCode); + params.setRowsNum(plateGeometry.getRows()); + params.setColsNum(plateGeometry.getColumns()); + params.setTileRowsNum(wellGeometry.getRows()); + params.setTileColsNum(wellGeometry.getColumns()); + List<String> escapedChannelNames = new ArrayList<String>(); + for (String name : channelsNames) { - channelNames.add(StringEscapeUtils.escapeCsv(val)); + escapedChannelNames.add(StringEscapeUtils.escapeCsv(name)); } - params.setChannelsNames(channelNames); + params.setChannelsNames(escapedChannelNames); return params; } - private static String asText(ISerializableComparable serializableComparable) - { - return serializableComparable.toString(); - } - - private static int asNum(ISerializableComparable serializableComparable) - { - return (int) ((IntegerTableCell) serializableComparable).getNumber(); - } } 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 4b329d1e26f..9dc330f9c6d 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 @@ -52,6 +52,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.PlateMaterials import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellContent; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation; +import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader; /** * @author Tomasz Pylak @@ -90,7 +91,6 @@ public class GenePlateLocationsLoader this.businessObjectFactory = businessObjectFactory; this.daoFactory = daoFactory; this.externalDataTable = businessObjectFactory.createExternalDataTable(session); - } private List<WellContent> getPlateLocations(PlateMaterialsSearchCriteria materialCriteria) @@ -200,16 +200,13 @@ public class GenePlateLocationsLoader List<ExternalDataPE> usedDatasets) { List<String> datasetCodes = extractDatasetCodes(usedDatasets); - if (datasetCodes.size() == 0) + List<PlateImageParameters> imageParameters = new ArrayList<PlateImageParameters>(); + for (String datasetCode : datasetCodes) { - return new HashMap<String, PlateImageParameters>(); + final IHCSDatasetLoader loader = + businessObjectFactory.createHCSDatasetLoader(datasetCode); + imageParameters.add(DatasetReportsLoader.createImageParameters(loader)); } - - // NOTE: assumes that all datasets are from the same datastore - String datastoreCode = usedDatasets.get(0).getDataStore().getCode(); - List<PlateImageParameters> imageParameters = - DatasetReportsLoader.loadPlateImageParameters(datasetCodes, datastoreCode, - externalDataTable); return asDatasetToParamsMap(imageParameters); } 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 b94e4c7bcb3..e223a890322 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 @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.server.logic; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import ch.systemsx.cisd.common.exceptions.UserFailureException; @@ -33,7 +32,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCrite import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; @@ -48,6 +46,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.PlateImages; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellMetadata; +import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader; /** * Loads content of the plate. @@ -273,14 +272,9 @@ public class PlateContentLoader private PlateImageParameters loadImageParams(ExternalDataPE dataset, IExternalDataTable externalDataTable) { - DataStorePE dataStore = dataset.getDataStore(); - String datasetCode = dataset.getCode(); - List<String> datasets = Arrays.asList(datasetCode); - List<PlateImageParameters> imageParamsReports = - DatasetReportsLoader.loadPlateImageParameters(datasets, dataStore.getCode(), - externalDataTable); - assert imageParamsReports.size() == 1; - return imageParamsReports.get(0); + final IHCSDatasetLoader loader = + businessObjectFactory.createHCSDatasetLoader(dataset.getCode()); + return DatasetReportsLoader.createImageParameters(loader); } private static List<WellMetadata> createWells(List<Sample> wellSamples) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/ScreeningConstants.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/ScreeningConstants.java index a54cb3e547a..f28f5180052 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/ScreeningConstants.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/ScreeningConstants.java @@ -35,9 +35,6 @@ public class ScreeningConstants // ---- required DSS plugins - // id of the DSS screening reporting plugin to get the images parameters - public static final String PLATE_IMAGE_PARAMS_REPORT_KEY = "plate-image-params-reporter"; - // id of the DSS screening reporting plugin to get the images of the plate public static final String PLATE_IMAGE_ANALYSIS_REPORT_KEY = "default-plate-image-analysis-merger"; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java index 11b03d9d39b..5b27abff787 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java @@ -79,6 +79,11 @@ public class HCSDatasetLoader implements IHCSDatasetLoader return dataset; } + public String getDatasetPermId() + { + return dataset.getPermId(); + } + public Geometry getWellGeometry() { return new Geometry(getDataset().getFieldNumberOfRows(), getDataset() diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java index 80756fb4bde..16fa7369b7d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java @@ -29,6 +29,8 @@ public interface IHCSDatasetLoader /** has to be called at the end */ void close(); + String getDatasetPermId(); + Geometry getPlateGeometry(); Geometry getWellGeometry(); -- GitLab