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 ac0b35df322c5cca53aa3e8037ae6163c2584cdd..82f7855d77b5aa290327c515790627bb79e64bfa 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 e7273040dae8b7f10d3af33836d919270ffb43f9..99108406ddba27132d01bb0130babc9518a9e1e1 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 9a8095fdcf54ba1675a25e34a4b9c5af26e54de5..5a7c72404d685d93660790a7239b79052905ff29 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 f9c1c7826968ec2ff6b8f4cc7c8569d09f1380b7..4123343ed380955a1cae0a1ce0ad9e84c520afa6 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 4b329d1e26f778833d40b038c52d1fb4e8fd206e..9dc330f9c6dd840b40249f2f971c363efd1a228f 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 b94e4c7bcb33cbe80fd14f8c915fe51846b25bfc..e223a89032234e9fc4495534bc264bca00a546d1 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 a54cb3e547a11b01692537affb727fb1e498368a..f28f51800529c96c5141bf1c198c7ecff536e54d 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 11b03d9d39bb76548585bcc961320d5a6313c035..5b27abff787f8aa0b4ac094ff5c413787e5b0f48 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 80756fb4bdedc40daf690585fe298d3a08d13a96..16fa7369b7dff1b6b994d88c66945a9523d053b0 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();