From bffbc5898435a13fd2e3891e031abca0865af17f Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Thu, 24 Jun 2010 18:11:07 +0000
Subject: [PATCH] [LMS-1588] added access to the imaging db from openBIS

SVN: 16731
---
 screening/dist/etc/service.properties         |   2 -
 screening/dist/server/service.properties      |  11 ++
 screening/etc/service.properties              |   2 -
 .../dss/etl/AbsoluteImageReference.java       |   2 +-
 .../etl/AbstractHCSImageFileExtractor.java    |   2 +-
 .../dss/etl/AbstractImageReference.java       |   2 +-
 .../openbis/dss/etl/HCSDatasetUploader.java   |  16 +--
 ...java => HCSImageDatasetLoaderFactory.java} |  24 ++--
 .../dss/etl/HCSImageFileExtractor.java        |   2 +-
 ...oader.java => IHCSImageDatasetLoader.java} |  18 +--
 .../dss/etl/PlateStorageProcessor.java        |   8 +-
 .../dss/etl/RelativeImageReference.java       |   2 +-
 .../ScreeningContainerDatasetInfoHelper.java  |  28 ++---
 .../BDSImagingDatabaseMigrator.java           |   8 +-
 .../bdsmigration/BDSImagingDbUploader.java    |  16 +--
 ...Loader.java => HCSImageDatasetLoader.java} |  83 ++------------
 .../dss/etl/dataaccess/IFeatureVectorDAO.java |  51 ---------
 .../AbstractFeatureVectorMigrator.java        |  12 +-
 .../featurevector/CanonicalFeatureVector.java |   4 +-
 .../CsvFeatureVectorMigrator.java             |   4 +-
 .../CsvToCanonicalFeatureVector.java          |   4 +-
 .../FeatureVectorStorageProcessor.java        |   8 +-
 .../featurevector/FeatureVectorUploader.java  |  14 +--
 .../etl/genedata/FeatureStorageProcessor.java |   8 +-
 .../GenedataFeatureVectorMigrator.java        |   4 +-
 ...enedataFormatToCanonicalFeatureVector.java |   4 +-
 .../server/images/ImageChannelsUtils.java     |  11 +-
 ...eeningPlateImageParamsReportingPlugin.java |  10 +-
 .../server/DssServiceRpcScreening.java        |  33 +++---
 .../IScreeningBusinessObjectFactory.java      |   3 +
 .../ScreeningBusinessObjectFactory.java       |  17 +++
 .../dataaccess/IScreeningDAOFactory.java      |  32 ++++++
 .../dataaccess/db/ScreeningDAOFactory.java    |  79 +++++++++++++
 .../screening/shared/ResourceNames.java       |   5 +-
 .../shared/imaging/HCSDatasetLoader.java      | 108 ++++++++++++++++++
 .../shared/imaging/IHCSDatasetLoader.java}    |  28 +++--
 .../imaging}/dataaccess/ColorComponent.java   |   2 +-
 .../FeatureVectorDataObjectBinding.java       |   2 +-
 .../imaging/dataaccess/IImagingQueryDAO.java} |   4 +-
 .../dataaccess/ImgAcquiredImageDTO.java       |   2 +-
 .../imaging}/dataaccess/ImgChannelDTO.java    |   2 +-
 .../dataaccess/ImgChannelStackDTO.java        |   2 +-
 .../imaging}/dataaccess/ImgContainerDTO.java  |   2 +-
 .../imaging}/dataaccess/ImgDatasetDTO.java    |   2 +-
 .../imaging}/dataaccess/ImgFeatureDefDTO.java |   2 +-
 .../dataaccess/ImgFeatureValuesDTO.java       |   2 +-
 .../imaging}/dataaccess/ImgImageDTO.java      |   2 +-
 .../imaging}/dataaccess/ImgSpotDTO.java       |   2 +-
 .../java/screening-applicationContext.xml     |  25 ++++
 screening/source/java/service.properties      |  11 ++
 .../FeatureVectorUploaderTest.java            |  14 +--
 .../genedata/FeatureStorageProcessorTest.java |  14 +--
 ...ataFormatToCanonicalFeatureVectorTest.java |   4 +-
 .../openbis/dss/screening/shared/.gitignore   |   0
 .../imaging}/dataaccess/AbstractDBTest.java   |   2 +-
 .../shared/imaging}/dataaccess/DBUtils.java   |   2 +-
 .../imaging}/dataaccess/DBUtilsForTests.java  |   8 +-
 .../dataaccess/FeatureVectorDAOTest.java      |  15 ++-
 .../dataaccess/ImagingQueryDAOTest.java}      |  19 ++-
 59 files changed, 488 insertions(+), 317 deletions(-)
 rename screening/source/java/ch/systemsx/cisd/openbis/dss/etl/{HCSDatasetLoaderFactory.java => HCSImageDatasetLoaderFactory.java} (82%)
 rename screening/source/java/ch/systemsx/cisd/openbis/dss/etl/{IHCSDatasetLoader.java => IHCSImageDatasetLoader.java} (78%)
 rename screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/{HCSDatasetLoader.java => HCSImageDatasetLoader.java} (71%)
 delete mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java
 create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java
 create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java
 create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl/dataaccess/ImagingDatabaseVersionHolder.java => plugin/screening/shared/imaging/IHCSDatasetLoader.java} (58%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ColorComponent.java (95%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/FeatureVectorDataObjectBinding.java (94%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl/dataaccess/IImagingUploadDAO.java => plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java} (98%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgAcquiredImageDTO.java (96%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgChannelDTO.java (97%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgChannelStackDTO.java (97%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgContainerDTO.java (96%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgDatasetDTO.java (97%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgFeatureDefDTO.java (96%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgFeatureValuesDTO.java (97%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgImageDTO.java (96%)
 rename screening/source/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/ImgSpotDTO.java (96%)
 create mode 100644 screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/shared/.gitignore
 rename screening/sourceTest/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/AbstractDBTest.java (96%)
 rename screening/sourceTest/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/DBUtils.java (96%)
 rename screening/sourceTest/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/DBUtilsForTests.java (79%)
 rename screening/sourceTest/java/ch/systemsx/cisd/openbis/{dss/etl => plugin/screening/shared/imaging}/dataaccess/FeatureVectorDAOTest.java (85%)
 rename screening/sourceTest/java/ch/systemsx/cisd/openbis/{dss/etl/dataaccess/ImagingUploadDAOTest.java => plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java} (89%)

diff --git a/screening/dist/etc/service.properties b/screening/dist/etc/service.properties
index 062e3aa11b5..17ee8fab7ae 100644
--- a/screening/dist/etc/service.properties
+++ b/screening/dist/etc/service.properties
@@ -86,11 +86,9 @@ mail.smtp.host = file://${root-dir}
 # ---------------------------------------------------------------------------
 
 data-sources = imaging-db
-imaging-db.version-holder-class = ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder
 imaging-db.databaseEngineCode = postgresql
 imaging-db.basicDatabaseName = imaging
 imaging-db.databaseKind = productive
-imaging-db.scriptFolder = sql
 
 # ---------------------------------------------------------------------------
 # reporting and processing plugins configuration
diff --git a/screening/dist/server/service.properties b/screening/dist/server/service.properties
index e6ca7364f9b..342c6bf93b6 100644
--- a/screening/dist/server/service.properties
+++ b/screening/dist/server/service.properties
@@ -22,6 +22,17 @@ database.owner-password =
 database.admin-user = 
 database.admin-password =
 
+imaging.database.engine = postgresql
+imaging.database.create-from-scratch = false
+imaging.database.script-single-step-mode = false
+imaging.database.url-host-part =
+imaging.database.kind = dev
+imaging.database.owner =
+imaging.database.owner-password =
+imaging.database.admin-user = 
+imaging.database.admin-password =
+imaging.script-folder = source
+
 #crowd.service.host = crowd-bsse.ethz.ch
 #crowd.service.port = 8443
 #crowd.application.name = <openbis_application_name_in_crowd>
diff --git a/screening/etc/service.properties b/screening/etc/service.properties
index ecc26319dbb..1719cd48f1d 100644
--- a/screening/etc/service.properties
+++ b/screening/etc/service.properties
@@ -86,11 +86,9 @@ mail.smtp.host = file://${root-dir}/emails
 # ---------------------------------------------------------------------------
 
 data-sources = imaging-db
-imaging-db.version-holder-class = ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder
 imaging-db.databaseEngineCode = postgresql
 imaging-db.basicDatabaseName = imaging
 imaging-db.databaseKind = dev
-imaging-db.scriptFolder = source/sql
 
 # ---------------------------------------------------------------------------
 # reporting and processing plugins configuration
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
index e5aaa9d311d..ad910197128 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
@@ -17,7 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.etl;
 
 import ch.systemsx.cisd.common.io.IContent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Reference to the image with an absolute path.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
index b2ed635b0c5..36a19c6fb3a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
@@ -39,8 +39,8 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Abstract superclass for <code>IHCSImageFileExtractor</code> implementations.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
index c0cbba98c90..2aaa9e6437d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
@@ -17,7 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.etl;
 
 import ch.systemsx.cisd.common.utilities.AbstractHashable;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Superclass for image reference.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
index a94af70cbfe..8ebc261c5d1 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
@@ -27,29 +27,29 @@ import java.util.Map.Entry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfoHelper.ExperimentWithChannelsAndContainer;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgAcquiredImageDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelStackDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgImageDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgSpotDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 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;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAcquiredImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelStackDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgSpotDTO;
 
 /**
  * @author Tomasz Pylak
  */
 public class HCSDatasetUploader
 {
-    public static void upload(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+    public static void upload(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             List<AcquiredPlateImage> images, Set<HCSImageFileExtractionResult.Channel> channels)
     {
         new HCSDatasetUploader(dao).upload(info, images, channels);
     }
 
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
-    private HCSDatasetUploader(IImagingUploadDAO dao)
+    private HCSDatasetUploader(IImagingQueryDAO dao)
     {
         this.dao = dao;
     }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
similarity index 82%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
index 0ee4906d863..ac0b35df322 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
@@ -29,28 +29,28 @@ 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.HCSDatasetLoader;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
+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;
 
 /**
  * @author Tomasz Pylak
  */
-public class HCSDatasetLoaderFactory
+public class HCSImageDatasetLoaderFactory
 {
     private static final Map<String, IContentRepositoryFactory> repositoryFactories =
             createFactories();
 
-    private static final IImagingUploadDAO query = createQuery();
+    private static final IImagingQueryDAO query = createQuery();
 
-    private static IImagingUploadDAO createQuery()
+    private static IImagingQueryDAO createQuery()
     {
         DataSource dataSource =
                 ServiceProvider.getDataSourceProvider().getDataSource(
                         ScreeningConstants.IMAGING_DATA_SOURCE);
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private static Map<String, IContentRepositoryFactory> createFactories()
@@ -61,30 +61,30 @@ public class HCSDatasetLoaderFactory
         return factories;
     }
 
-    public static final IHCSDatasetLoader create(File datasetRootDir, String datasetCode)
+    public static final IHCSImageDatasetLoader create(File datasetRootDir, String datasetCode)
     {
         return createImageDBLoader(datasetRootDir, datasetCode);
         // return createBDSLoader(datasetRootDir);
     }
 
-    private static HCSDatasetLoader createImageDBLoader(File datasetRootDir, String datasetCode)
+    private static HCSImageDatasetLoader createImageDBLoader(File datasetRootDir, String datasetCode)
     {
         IContentRepository repository = new ContentRepository(datasetRootDir, repositoryFactories);
-        return new HCSDatasetLoader(query, datasetCode, repository);
+        return new HCSImageDatasetLoader(query, datasetCode, repository);
     }
 
     // remove when not needed
     @SuppressWarnings("unused")
-    private static IHCSDatasetLoader createBDSLoader(File datasetRootDir)
+    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 IHCSDatasetLoader adapt(final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader)
+    private static IHCSImageDatasetLoader adapt(final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader)
     {
-        return new IHCSDatasetLoader()
+        return new IHCSImageDatasetLoader()
             {
 
                 public void close()
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
index 418e0183604..7752e5a16a4 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
@@ -30,7 +30,7 @@ import ch.systemsx.cisd.common.filesystem.FileOperations;
 import ch.systemsx.cisd.openbis.dss.etl.AbstractHCSImageFileExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.AcquiredPlateImage;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Generic image extractor implementation. The images names should have an extension present in
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
similarity index 78%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
index b671bc722ae..65bfd6d728e 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
@@ -16,29 +16,15 @@
 
 package ch.systemsx.cisd.openbis.dss.etl;
 
-import java.util.List;
-
-import ch.systemsx.cisd.bds.hcs.Geometry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * @author Tomasz Pylak
  */
-public interface IHCSDatasetLoader
+public interface IHCSImageDatasetLoader extends IHCSDatasetLoader
 {
-
-    /** has to be called at the end */
-    void close();
-
-    Geometry getPlateGeometry();
-
-    Geometry getWellGeometry();
-
-    int getChannelCount();
-
-    List<String> getChannelsNames();
-
     /**
      * @param chosenChannel start from 1
      * @return image (with absolute path, page and color)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
index 6fdf41fa9a9..9ce83fdb48f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
@@ -61,12 +61,12 @@ import ch.systemsx.cisd.hdf5.HDF5FactoryProvider;
 import ch.systemsx.cisd.hdf5.IHDF5Writer;
 import ch.systemsx.cisd.openbis.dss.Constants;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageCheckList.FullLocation;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Storage processor which stores HCS images in a special-purpose database.
@@ -142,7 +142,7 @@ public final class PlateStorageProcessor extends AbstractStorageProcessor
 
     private final ch.systemsx.cisd.etlserver.IHCSImageFileExtractor deprecatedImageFileExtractor;
 
-    private IImagingUploadDAO currentTransaction;
+    private IImagingQueryDAO currentTransaction;
 
     public PlateStorageProcessor(final Properties properties)
     {
@@ -178,9 +178,9 @@ public final class PlateStorageProcessor extends AbstractStorageProcessor
         this.currentTransaction = null;
     }
 
-    private IImagingUploadDAO createQuery()
+    private IImagingQueryDAO createQuery()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private final static void checkDataSetInformation(final DataSetInformation dataSetInformation)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
index 1d9f12fdbd9..99b2ec918cb 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.dss.etl;
 
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Reference to the image with a path relative to the folder with all the images.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
index 6fb56512fb1..3a0b66ff09f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
@@ -23,10 +23,10 @@ import java.util.Set;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgContainerDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
 
 /**
  * Helper class for retrieving and/or creating entities associated with the screening container data
@@ -36,9 +36,9 @@ import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
  */
 public class ScreeningContainerDatasetInfoHelper
 {
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
-    public ScreeningContainerDatasetInfoHelper(IImagingUploadDAO dao)
+    public ScreeningContainerDatasetInfoHelper(IImagingQueryDAO dao)
     {
         this.dao = dao;
     }
@@ -55,7 +55,7 @@ public class ScreeningContainerDatasetInfoHelper
     }
 
     // Package-visible static methods
-    public static long createDataset(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+    public static long createDataset(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             long contId)
     {
         ImgDatasetDTO dataset =
@@ -71,10 +71,10 @@ public class ScreeningContainerDatasetInfoHelper
      * transaction will be rolled back sample and experiment created in first transaction will stay
      * in the DB.
      */
-    public static ExperimentAndContainerIds getOrCreateExperimentAndContainer(
-            IImagingUploadDAO dao, ScreeningContainerDatasetInfo info)
+    public static ExperimentAndContainerIds getOrCreateExperimentAndContainer(IImagingQueryDAO dao,
+            ScreeningContainerDatasetInfo info)
     {
-        synchronized (IImagingUploadDAO.class)
+        synchronized (IImagingQueryDAO.class)
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
             CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, exp.getId());
@@ -96,11 +96,11 @@ public class ScreeningContainerDatasetInfoHelper
      * in the DB.
      */
     public static ExperimentWithChannelsAndContainer getOrCreateExperimentWithChannelsAndContainer(
-            IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+            IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             Set<HCSImageFileExtractionResult.Channel> channels)
     {
         ScreeningContainerDatasetInfoHelper helper = new ScreeningContainerDatasetInfoHelper(dao);
-        synchronized (IImagingUploadDAO.class)
+        synchronized (IImagingQueryDAO.class)
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
             long expId = exp.getId();
@@ -117,7 +117,7 @@ public class ScreeningContainerDatasetInfoHelper
         }
     }
 
-    private static CreatedOrFetchedEntity getOrCreateContainer(IImagingUploadDAO dao,
+    private static CreatedOrFetchedEntity getOrCreateContainer(IImagingQueryDAO dao,
             ScreeningContainerDatasetInfo info, long expId)
     {
         String containerPermId = info.getContainerPermId();
@@ -135,7 +135,7 @@ public class ScreeningContainerDatasetInfoHelper
         }
     }
 
-    private static CreatedOrFetchedEntity getOrCreateExperiment(IImagingUploadDAO dao,
+    private static CreatedOrFetchedEntity getOrCreateExperiment(IImagingQueryDAO dao,
             ScreeningContainerDatasetInfo info)
     {
         String experimentPermId = info.getExperimentPermId();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
index 6284cc4dad7..3f4f132f37d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
@@ -28,16 +28,16 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.openbis.dss.etl.AbstractHCSImageFileExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * @author Franz-Josef Elmer
  */
 public class BDSImagingDatabaseMigrator extends AbstractBDSMigrator
 {
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private List<String> channelNames;
 
@@ -75,7 +75,7 @@ public class BDSImagingDatabaseMigrator extends AbstractBDSMigrator
     public BDSImagingDatabaseMigrator(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        dao = QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        dao = QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
         channelNames =
                 PropertyUtils.getMandatoryList(properties, PlateStorageProcessor.CHANNEL_NAMES);
         channelColorComponentsOrNull =
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
index 3e3679ddbfc..6ef193e48af 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
@@ -49,9 +49,9 @@ import ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.RelativeImageReference;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Uploads data to the imaging database.
@@ -62,7 +62,7 @@ class BDSImagingDbUploader
 {
     public static IMigrator createImagingDbUploaderMigrator(Properties properties)
     {
-        final IImagingUploadDAO dao = createQuery(properties);
+        final IImagingQueryDAO dao = createQuery(properties);
         final List<String> channelNames =
                 PropertyUtils.getMandatoryList(properties, PlateStorageProcessor.CHANNEL_NAMES);
         final List<ColorComponent> channelColorComponentsOrNull =
@@ -101,13 +101,13 @@ class BDSImagingDbUploader
         }
     }
 
-    private static IImagingUploadDAO createQuery(Properties properties)
+    private static IImagingQueryDAO createQuery(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
-    private static boolean migrateDataset(File dataset, IImagingUploadDAO dao,
+    private static boolean migrateDataset(File dataset, IImagingQueryDAO dao,
             List<String> channelNames, List<ColorComponent> channelColorComponentsOrNull)
     {
         String originalDatasetDirName = tryGetOriginalDatasetDirName(dataset);
@@ -121,7 +121,7 @@ class BDSImagingDbUploader
 
     private final File dataset;
 
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
     private final String originalDatasetDirName;
 
@@ -129,7 +129,7 @@ class BDSImagingDbUploader
 
     private final List<ColorComponent> channelColorComponentsOrNull;
 
-    BDSImagingDbUploader(File dataset, IImagingUploadDAO dao, String originalDatasetDirName,
+    BDSImagingDbUploader(File dataset, IImagingQueryDAO dao, String originalDatasetDirName,
             List<String> channelNames, List<ColorComponent> channelColorComponentsOrNull)
     {
         this.dataset = dataset;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
similarity index 71%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
index 0b7dee61ddf..ec93ee30c00 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
@@ -21,94 +21,38 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 import javax.imageio.ImageIO;
 
 import org.apache.commons.lang.StringUtils;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.bds.hcs.Geometry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
 import ch.systemsx.cisd.openbis.dss.etl.IContentRepository;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
 
 /**
- * Helper class for easy handling of HCS image dataset standard structure.
+ * {@link HCSDatasetLoader} extension with code for handling images.
  * 
  * @author Tomasz Pylak
  * @author Piotr Buczek
  */
-public class HCSDatasetLoader implements IHCSDatasetLoader
+public class HCSImageDatasetLoader extends HCSDatasetLoader implements IHCSImageDatasetLoader
 {
-    private final IImagingUploadDAO query;
-
-    private final ImgDatasetDTO dataset;
-
     private final IContentRepository contentRepository;
 
-    private ImgContainerDTO container;
-
-    private Integer channelCount;
-
-    private List<String> channelNames;
-
-    public HCSDatasetLoader(IImagingUploadDAO query, String datasetPermId,
+    public HCSImageDatasetLoader(IImagingQueryDAO query, String datasetPermId,
             IContentRepository contentRepository)
     {
+        super(query, datasetPermId);
         this.contentRepository = contentRepository;
-        this.query = query;
-        this.dataset = query.tryGetDatasetByPermId(datasetPermId);
-        if (dataset == null)
-        {
-            throw new IllegalStateException(String.format("Dataset '%s' not found", datasetPermId));
-        }
-    }
-
-    /** has to be called at the end */
-    public void close()
-    {
-        query.close();
-    }
-
-    private ImgContainerDTO getContainer()
-    {
-        if (container == null)
-        {
-            container = query.getContainerById(dataset.getContainerId());
-        }
-        return container;
-    }
-
-    public Geometry getPlateGeometry()
-    {
-        return new Geometry(getContainer().getNumberOfRows(), getContainer().getNumberOfColumns());
-    }
-
-    private ImgDatasetDTO getDataset()
-    {
-        return dataset;
-    }
-
-    public Geometry getWellGeometry()
-    {
-        return new Geometry(getDataset().getFieldNumberOfRows(), getDataset()
-                .getFieldNumberOfColumns());
-    }
-
-    public int getChannelCount()
-    {
-        if (channelCount == null)
-        {
-            channelCount = getChannelsNames().size();
-        }
-        return channelCount;
     }
 
     /**
@@ -224,15 +168,4 @@ public class HCSDatasetLoader implements IHCSDatasetLoader
         }
     }
 
-    public List<String> getChannelsNames()
-    {
-        if (channelNames == null)
-        {
-            String[] namesAsArray =
-                    query.getChannelNamesByDatasetIdOrExperimentId(getDataset().getId(),
-                            getContainer().getExperimentId());
-            channelNames = new ArrayList<String>(Arrays.asList(namesAsArray));
-        }
-        return channelNames;
-    }
 }
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java
deleted file mode 100644
index d6bbc3895e9..00000000000
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
-
-import java.util.List;
-
-import net.lemnik.eodsql.Select;
-import net.lemnik.eodsql.TransactionQuery;
-
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ByteArrayMapper;
-
-/**
- * DAO for interacting with feature vector tables.
- * 
- * @author Chandrasekhar Ramakrishnan
- */
-public interface IFeatureVectorDAO extends TransactionQuery
-{
-    public static final int FETCH_SIZE = 1000;
-
-    // Simple Getters
-    @Select("SELECT * from FEATURE_DEFS where DS_ID = ?{1}")
-    public List<ImgFeatureDefDTO> listFeatureDefsByDataSetId(long dataSetId);
-
-    @Select(value = "SELECT * from FEATURE_VALUES where FD_ID = ?{1.id}", resultSetBinding = FeatureVectorDataObjectBinding.class)
-    public List<ImgFeatureValuesDTO> getFeatureValues(ImgFeatureDefDTO featureDef);
-
-    // Inserts
-    @Select("INSERT into FEATURE_DEFS (NAME, DESCRIPTION, DS_ID) values "
-            + "(?{1.name}, ?{1.description}, ?{1.dataSetId}) RETURNING ID")
-    public long addFeatureDef(ImgFeatureDefDTO featureDef);
-
-    @Select(value = "INSERT into FEATURE_VALUES (VALUES, Z_in_M, T_in_SEC, FD_ID) values "
-            + "(?{1.values}, ?{1.z}, ?{1.t}, ?{1.featureDefId}) RETURNING ID", parameterBindings =
-        { ByteArrayMapper.class })
-    public long addFeatureValues(ImgFeatureValuesDTO featureValues);
-}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
index ce06b80ce70..e43840968c9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
@@ -28,8 +28,6 @@ import net.lemnik.eodsql.QueryTool;
 
 import ch.systemsx.cisd.etlserver.plugins.IMigrator;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
@@ -40,6 +38,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
 
 /**
  * Imports individual data sets into the imaging db.
@@ -48,7 +48,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConst
  */
 public abstract class AbstractFeatureVectorMigrator implements IMigrator
 {
-    protected final IImagingUploadDAO dao;
+    protected final IImagingQueryDAO dao;
 
     protected final IEncapsulatedOpenBISService openBisService;
 
@@ -59,7 +59,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
     public AbstractFeatureVectorMigrator(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        dao = QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        dao = QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
         openBisService = ServiceProvider.getOpenBISService();
         knownDataSets = openBisService.listDataSets();
         knownDataSetsByCode =
@@ -247,7 +247,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
      */
     protected abstract static class AbstractImageDbImporter
     {
-        protected final IImagingUploadDAO dao;
+        protected final IImagingQueryDAO dao;
 
         protected final ScreeningContainerDatasetInfo screeningDataSetInfo;
 
@@ -255,7 +255,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
 
         protected boolean isSuccessful = false;
 
-        protected AbstractImageDbImporter(IImagingUploadDAO dao,
+        protected AbstractImageDbImporter(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate)
         {
             this.dao = dao;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
index 555a8e75a99..e77f3823826 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
@@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.dss.etl.featurevector;
 import java.util.ArrayList;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Image feature vectors stored in a standardized form.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
index 816657cea5a..07f9511253b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
@@ -25,10 +25,10 @@ import java.util.Properties;
 import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
 import ch.systemsx.cisd.etlserver.DefaultStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CsvToCanonicalFeatureVector.CsvToCanonicalFeatureVectorConfiguration;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 import ch.systemsx.cisd.utils.CsvFileReaderHelper;
 
 /**
@@ -120,7 +120,7 @@ public class CsvFeatureVectorMigrator extends AbstractFeatureVectorMigrator
 
         private final CsvToCanonicalFeatureVectorConfiguration convertorConfig;
 
-        protected ImporterCsv(IImagingUploadDAO dao,
+        protected ImporterCsv(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate,
                 FeatureVectorStorageProcessorConfiguration configuration,
                 CsvToCanonicalFeatureVectorConfiguration convertorConfig)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
index 3b9faf97c4c..d297d9904a1 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
@@ -24,9 +24,9 @@ import java.util.List;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.geometry.Point;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Converts feature vectors from CSV files to CanonicaFeatureVector objects.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
index 2d0ae122776..e68f87a4eb8 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
@@ -31,7 +31,6 @@ import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.etlserver.AbstractDelegatingStorageProcessor;
 import ch.systemsx.cisd.etlserver.ITypeExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CsvToCanonicalFeatureVector.CsvToCanonicalFeatureVectorConfiguration;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
@@ -39,6 +38,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 import ch.systemsx.cisd.utils.CsvFileReaderHelper;
 
 /**
@@ -59,7 +59,7 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
     private final IEncapsulatedOpenBISService openBisService;
 
     // Execution state of this object -- set to null after an execution is finished.
-    private IImagingUploadDAO dataAccessObject = null;
+    private IImagingQueryDAO dataAccessObject = null;
 
     public FeatureVectorStorageProcessor(Properties properties)
     {
@@ -138,9 +138,9 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
         return sampleOrNull;
     }
 
-    private IImagingUploadDAO createDAO()
+    private IImagingQueryDAO createDAO()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
index 9d2a93642e8..fa698dca418 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
@@ -20,9 +20,9 @@ import java.util.List;
 
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfoHelper;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Helper class for uploading feature vectors from the file system into the data base.
@@ -31,11 +31,11 @@ import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
  */
 public class FeatureVectorUploader
 {
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
     private final ScreeningContainerDatasetInfo info;
 
-    public FeatureVectorUploader(IImagingUploadDAO imagingDao, ScreeningContainerDatasetInfo info)
+    public FeatureVectorUploader(IImagingQueryDAO imagingDao, ScreeningContainerDatasetInfo info)
     {
         this.dao = imagingDao;
         this.info = info;
@@ -58,13 +58,13 @@ public class FeatureVectorUploader
 
     private static class FeatureVectorUploaderHelper
     {
-        private final IImagingUploadDAO dao;
+        private final IImagingQueryDAO dao;
 
         private final long dataSetId;
 
         private final CanonicalFeatureVector fvec;
 
-        FeatureVectorUploaderHelper(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+        FeatureVectorUploaderHelper(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
                 long dataSetId, CanonicalFeatureVector fvec)
         {
             this.dao = dao;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
index 90797bd2ddc..bc898ea13d6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
@@ -37,7 +37,6 @@ import ch.systemsx.cisd.etlserver.ITypeExtractor;
 import ch.systemsx.cisd.etlserver.utils.Column;
 import ch.systemsx.cisd.etlserver.utils.TableBuilder;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorUploader;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
@@ -45,6 +44,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * @author Franz-Josef Elmer
@@ -60,7 +60,7 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
     private final IEncapsulatedOpenBISService openBisService;
 
     // Execution state of this object -- set to null after an execution is finished.
-    private IImagingUploadDAO dataAccessObject = null;
+    private IImagingQueryDAO dataAccessObject = null;
 
     private final class ColumnsBuilder
     {
@@ -260,9 +260,9 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
         return sampleOrNull;
     }
 
-    protected IImagingUploadDAO createDAO()
+    protected IImagingQueryDAO createDAO()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private String convertColumnsToString(String barCode, ColumnsBuilder columnsBuilder)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
index 4d956f9fe71..668b94c3af6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
@@ -25,11 +25,11 @@ import java.util.Properties;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.etlserver.DefaultStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.AbstractFeatureVectorMigrator;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorUploader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Imports Genedata feature vectors into the database.
@@ -112,7 +112,7 @@ public class GenedataFeatureVectorMigrator extends AbstractFeatureVectorMigrator
         /**
          * @param fileToMigrate
          */
-        private ImporterGenedata(IImagingUploadDAO dao,
+        private ImporterGenedata(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate)
         {
             super(dao, screeningDataSetInfo, fileToMigrate);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
index ae2a11c49a4..66b820fec50 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
@@ -27,9 +27,9 @@ import org.apache.commons.lang.StringUtils;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.geometry.Point;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Converts currentFeature vectors from the Genedata currentFeature vector file format to
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
index 808b22874e8..649a762c2f5 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
@@ -26,11 +26,11 @@ import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Utility classes to create an image of a specified size containing one channel or a subset of all
@@ -49,7 +49,8 @@ public class ImageChannelsUtils
     public static List<AbsoluteImageReference> getImagePaths(File datasetRoot, String datasetCode,
             TileImageReference params)
     {
-        IHCSDatasetLoader imageAccessor = HCSDatasetLoaderFactory.create(datasetRoot, datasetCode);
+        IHCSImageDatasetLoader imageAccessor =
+                HCSImageDatasetLoaderFactory.create(datasetRoot, datasetCode);
         Location wellLocation = params.getWellLocation();
         Location tileLocation = params.getTileLocation();
         List<AbsoluteImageReference> images = new ArrayList<AbsoluteImageReference>();
@@ -218,7 +219,7 @@ public class ImageChannelsUtils
      * @param chosenChannel starts from 1
      * @throw {@link EnvironmentFailureException} when image does not exist
      */
-    public static AbsoluteImageReference getImage(IHCSDatasetLoader imageAccessor,
+    public static AbsoluteImageReference getImage(IHCSImageDatasetLoader imageAccessor,
             Location wellLocation, Location tileLocation, String chosenChannel,
             Size thumbnailSizeOrNull)
     {
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 058a401cd27..e7273040dae 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
@@ -27,8 +27,8 @@ import java.util.Properties;
 import org.apache.commons.lang.StringEscapeUtils;
 
 import ch.systemsx.cisd.bds.hcs.Geometry;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractDatastorePlugin;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.SimpleTableModelBuilder;
@@ -74,8 +74,8 @@ public class ScreeningPlateImageParamsReportingPlugin extends AbstractDatastoreP
         for (DatasetDescription dataset : datasets)
         {
             File datasetFile = new File(storeRoot, dataset.getDataSetLocation());
-            IHCSDatasetLoader imageAccessor =
-                    HCSDatasetLoaderFactory.create(datasetFile, dataset.getDatasetCode());
+            IHCSImageDatasetLoader imageAccessor =
+                    HCSImageDatasetLoaderFactory.create(datasetFile, dataset.getDatasetCode());
             addReportRows(builder, dataset, imageAccessor);
             imageAccessor.close();
         }
@@ -94,7 +94,7 @@ public class ScreeningPlateImageParamsReportingPlugin extends AbstractDatastoreP
     }
 
     private void addReportRows(SimpleTableModelBuilder builder, DatasetDescription dataset,
-            IHCSDatasetLoader imageAccessor)
+            IHCSImageDatasetLoader imageAccessor)
     {
         Geometry plateGeometry = imageAccessor.getPlateGeometry();
         Geometry wellGeometry = imageAccessor.getWellGeometry();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index 38a0556b982..d1faeadb7ec 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -40,8 +40,8 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.io.ConcatenatedContentInputStream;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDssServiceRpc;
 import ch.systemsx.cisd.openbis.dss.generic.server.images.ImageChannelsUtils;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
@@ -170,8 +170,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
     private static ImageDatasetMetadata extractImageMetadata(IImageDatasetIdentifier dataset,
             File datasetRoot)
     {
-        IHCSDatasetLoader imageAccessor =
-                HCSDatasetLoaderFactory.create(datasetRoot, dataset.getDatasetCode());
+        IHCSImageDatasetLoader imageAccessor =
+                HCSImageDatasetLoaderFactory.create(datasetRoot, dataset.getDatasetCode());
         IContent imageFile = getAnyImagePath(imageAccessor, dataset);
         Geometry wellGeometry = imageAccessor.getWellGeometry();
         int channelsNumber = imageAccessor.getChannelCount();
@@ -181,7 +181,7 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
                 image.getHeight());
     }
 
-    private static IContent getAnyImagePath(IHCSDatasetLoader imageAccessor,
+    private static IContent getAnyImagePath(IHCSImageDatasetLoader imageAccessor,
             IImageDatasetIdentifier dataset)
     {
         Geometry plateGeometry = imageAccessor.getPlateGeometry();
@@ -232,14 +232,14 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
 
     public InputStream loadImages(String sessionToken, List<PlateImageReference> imageReferences)
     {
-        Map<String, IHCSDatasetLoader> imageLoadersMap =
+        Map<String, IHCSImageDatasetLoader> imageLoadersMap =
                 getImageDatasetsMap(sessionToken, imageReferences);
         List<IContent> imageFiles = new ArrayList<IContent>();
         try
         {
             for (PlateImageReference imageReference : imageReferences)
             {
-                IHCSDatasetLoader imageAccessor =
+                IHCSImageDatasetLoader imageAccessor =
                         imageLoadersMap.get(imageReference.getDatasetCode());
                 assert imageAccessor != null : "imageAccessor not found for: " + imageReference;
                 AbsoluteImageReference image = tryGetImage(imageAccessor, imageReference);
@@ -260,20 +260,20 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return new ConcatenatedContentInputStream(true, imageFiles);
     }
 
-    private static void closeDatasetLoaders(Collection<IHCSDatasetLoader> loaders)
+    private static void closeDatasetLoaders(Collection<IHCSImageDatasetLoader> loaders)
     {
-        for (IHCSDatasetLoader loader : loaders)
+        for (IHCSImageDatasetLoader loader : loaders)
         {
             loader.close();
         }
     }
 
     // throws exception if some datasets cannot be found
-    private Map<String/* image or feature vector dataset code */, IHCSDatasetLoader> getImageDatasetsMap(
+    private Map<String/* image or feature vector dataset code */, IHCSImageDatasetLoader> getImageDatasetsMap(
             String sessionToken, List<PlateImageReference> imageReferences)
     {
-        Map<String/* dataset code */, IHCSDatasetLoader> imageDatasetsMap =
-                new HashMap<String, IHCSDatasetLoader>();
+        Map<String/* dataset code */, IHCSImageDatasetLoader> imageDatasetsMap =
+                new HashMap<String, IHCSImageDatasetLoader>();
         for (PlateImageReference imageReference : imageReferences)
         {
             if (imageDatasetsMap.containsKey(imageReference.getDatasetCode()) == false)
@@ -282,7 +282,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
                         tryFindImageDataset(sessionToken, imageReference.getDatasetCode());
                 if (imageDataset != null)
                 {
-                    IHCSDatasetLoader imageAccessor = createImageLoader(imageDataset.getCode());
+                    IHCSImageDatasetLoader imageAccessor =
+                            createImageLoader(imageDataset.getCode());
                     imageDatasetsMap.put(imageReference.getDatasetCode(), imageAccessor);
                 } else
                 {
@@ -294,7 +295,7 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return imageDatasetsMap;
     }
 
-    private AbsoluteImageReference tryGetImage(IHCSDatasetLoader imageAccessor,
+    private AbsoluteImageReference tryGetImage(IHCSImageDatasetLoader imageAccessor,
             PlateImageReference imageRef)
     {
         Location wellLocation = asLocation(imageRef.getWellPosition());
@@ -328,10 +329,10 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return new Location(wellPosition.getWellColumn(), wellPosition.getWellRow());
     }
 
-    private IHCSDatasetLoader createImageLoader(String datasetCode)
+    private IHCSImageDatasetLoader createImageLoader(String datasetCode)
     {
         File datasetRoot = getRootDirectoryForDataSet(datasetCode);
-        return HCSDatasetLoaderFactory.create(datasetRoot, datasetCode);
+        return HCSImageDatasetLoaderFactory.create(datasetRoot, datasetCode);
     }
 
     private ExternalData tryFindImageDataset(String sessionToken, String datasetCode)
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 cfc006f87e5..97248a938d6 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
@@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatase
 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.Session;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * A <i>screening</i> plugin specific business object factory.
@@ -33,6 +34,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
  */
 public interface IScreeningBusinessObjectFactory
 {
+    public IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId);
+
     public ISampleBO createSampleBO(final Session session);
 
     public IExternalDataTable createExternalDataTable(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 56bf93ad896..e5dc92736c6 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
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.server;
 
+import javax.annotation.Resource;
+
 import org.springframework.stereotype.Component;
 
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
@@ -28,7 +30,10 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMater
 import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
 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;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.ResourceNames;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * The unique {@link IScreeningBusinessObjectFactory} implementation.
@@ -40,6 +45,18 @@ public final class ScreeningBusinessObjectFactory extends AbstractPluginBusiness
         implements IScreeningBusinessObjectFactory
 {
 
+    @Resource(name = ResourceNames.SCREENING_DAO_FACTORY)
+    private IScreeningDAOFactory specificDAOFactory;
+
+    public ScreeningBusinessObjectFactory()
+    {
+    }
+
+    public final IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId)
+    {
+        return new HCSDatasetLoader(specificDAOFactory.getImagingQueryDAO(), datasetPermId);
+    }
+
     public final ISampleBO createSampleBO(final Session session)
     {
         return getCommonBusinessObjectFactory().createSampleBO(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
new file mode 100644
index 00000000000..e37c8c943b1
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2009 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess;
+
+import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+
+/**
+ * A factory for Screening specific DAOs.
+ * 
+ * @author Piotr Buczek
+ */
+public interface IScreeningDAOFactory
+{
+    public DatabaseConfigurationContext getContext();
+
+    public IImagingQueryDAO getImagingQueryDAO();
+}
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
new file mode 100644
index 00000000000..9a8095fdcf5
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2009 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.db;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import net.lemnik.eodsql.QueryTool;
+
+import org.apache.log4j.Logger;
+
+import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.dbmigration.DBMigrationEngine;
+import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
+import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.IScreeningDAOFactory;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+
+/**
+ * @author Piotr Buczek
+ */
+public class ScreeningDAOFactory implements IScreeningDAOFactory
+{
+    /** Current version of the database. */
+    public static final String DATABASE_VERSION = "003"; // S83
+
+    private static final Logger operationLog =
+            LogFactory.getLogger(LogCategory.OPERATION, ScreeningDAOFactory.class);
+
+    private final IImagingQueryDAO imagingQueryDAO;
+
+    private final DatabaseConfigurationContext imagingDatabaseContext;
+
+    public ScreeningDAOFactory(DatabaseConfigurationContext context)
+    {
+        this.imagingDatabaseContext = context;
+        DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context, DATABASE_VERSION);
+        Connection connection = null;
+        try
+        {
+            connection = context.getDataSource().getConnection();
+        } catch (SQLException ex)
+        {
+            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?
+        imagingQueryDAO = QueryTool.getQuery(connection, IImagingQueryDAO.class);
+        if (operationLog.isInfoEnabled())
+        {
+            operationLog.info("DAO factory for Screening created.");
+        }
+    }
+
+    public DatabaseConfigurationContext getContext()
+    {
+        return imagingDatabaseContext;
+    }
+
+    public IImagingQueryDAO getImagingQueryDAO()
+    {
+        return imagingQueryDAO;
+    }
+}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
index 3890e439958..cba01cf953c 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
@@ -37,8 +37,9 @@ public final class ResourceNames
 
     public final static String SCREENING_PLUGIN_SERVER = "screening-plugin-server";
 
-    public final static String SCREENING_BUSINESS_OBJECT_FACTORY =
-            "screening-business-object-factory";
+    public final static String SCREENING_BUSINESS_OBJECT_FACTORY = "screening-bo-factory";
+
+    public final static String SCREENING_DAO_FACTORY = "screening-dao-factory";
 
     public final static String SCREENING_SAMPLE_SERVER_PLUGIN = "screening-sample-server-plugin";
 
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
new file mode 100644
index 00000000000..11b03d9d39b
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2010 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import ch.systemsx.cisd.bds.hcs.Geometry;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+
+/**
+ * Helper class for easy handling of HCS image dataset standard structure with no code for handling
+ * images.
+ * 
+ * @author Tomasz Pylak
+ * @author Piotr Buczek
+ */
+public class HCSDatasetLoader implements IHCSDatasetLoader
+{
+    protected final IImagingQueryDAO query;
+
+    protected final ImgDatasetDTO dataset;
+
+    protected ImgContainerDTO container;
+
+    protected Integer channelCount;
+
+    protected List<String> channelNames;
+
+    public HCSDatasetLoader(IImagingQueryDAO query, String datasetPermId)
+    {
+        this.query = query;
+        this.dataset = query.tryGetDatasetByPermId(datasetPermId);
+        if (dataset == null)
+        {
+            throw new IllegalStateException(String.format("Dataset '%s' not found", datasetPermId));
+        }
+    }
+
+    /** has to be called at the end */
+    public void close()
+    {
+        query.close();
+    }
+
+    protected final ImgContainerDTO getContainer()
+    {
+        if (container == null)
+        {
+            container = query.getContainerById(dataset.getContainerId());
+        }
+        return container;
+    }
+
+    public Geometry getPlateGeometry()
+    {
+        return new Geometry(getContainer().getNumberOfRows(), getContainer().getNumberOfColumns());
+    }
+
+    protected final ImgDatasetDTO getDataset()
+    {
+        return dataset;
+    }
+
+    public Geometry getWellGeometry()
+    {
+        return new Geometry(getDataset().getFieldNumberOfRows(), getDataset()
+                .getFieldNumberOfColumns());
+    }
+
+    public int getChannelCount()
+    {
+        if (channelCount == null)
+        {
+            channelCount = getChannelsNames().size();
+        }
+        return channelCount;
+    }
+
+    public List<String> getChannelsNames()
+    {
+        if (channelNames == null)
+        {
+            String[] namesAsArray =
+                    query.getChannelNamesByDatasetIdOrExperimentId(getDataset().getId(),
+                            getContainer().getExperimentId());
+            channelNames = new ArrayList<String>(Arrays.asList(namesAsArray));
+        }
+        return channelNames;
+    }
+}
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
similarity index 58%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
index d5ce9a1180e..80756fb4bde 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
@@ -14,23 +14,27 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging;
 
-import ch.systemsx.cisd.openbis.dss.generic.shared.IDatabaseVersionHolder;
+import java.util.List;
+
+import ch.systemsx.cisd.bds.hcs.Geometry;
 
 /**
- * Stores current version of special purpose imaging database.
- * 
  * @author Tomasz Pylak
  */
-public class ImagingDatabaseVersionHolder implements IDatabaseVersionHolder
+public interface IHCSDatasetLoader
 {
-    /** Current version of the database. */
-    static final String DATABASE_VERSION = "003"; // S83
 
-    public String getDatabaseVersion()
-    {
-        return DATABASE_VERSION;
-    }
+    /** has to be called at the end */
+    void close();
+
+    Geometry getPlateGeometry();
+
+    Geometry getWellGeometry();
+
+    int getChannelCount();
+
+    List<String> getChannelsNames();
 
-}
+}
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
similarity index 95%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
index ad63813c897..140dfe5af19 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.awt.Color;
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
similarity index 94%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
index 3b8476fd48b..1fe2ee36435 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
similarity index 98%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
index c4a421f49c9..8fed686e6bc 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.util.List;
 
@@ -28,7 +28,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ByteArrayMapper;
 /**
  * @author Tomasz Pylak
  */
-public interface IImagingUploadDAO extends TransactionQuery
+public interface IImagingQueryDAO extends TransactionQuery
 {
     public static final int FETCH_SIZE = 1000;
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
index 235e525767d..9ef3b0e381c 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
index 48336231307..f473c2d7789 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
index 44ff7859cef..2fd24910d0b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
index 4427208dd42..e5932271494 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
index 18a1ee6d109..58cf4871a10 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
index 166b39c1847..7ba947e07c6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
index 0cda1a2925f..b3d418f221f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
index 19ad6ed07cb..ebdeabae3cb 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
index 2927d99d3ca..57546b6dbe3 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/screening-applicationContext.xml b/screening/source/java/screening-applicationContext.xml
index 3a5e07e65e5..c8f42648252 100644
--- a/screening/source/java/screening-applicationContext.xml
+++ b/screening/source/java/screening-applicationContext.xml
@@ -9,6 +9,31 @@
 
     <import resource="applicationContext.xml"/>
     
+    <bean id="imaging-db-configuration-context"
+        class="ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext">
+        <property name="basicDatabaseName" value="imaging" />
+        <property name="createFromScratch" value="${imaging.database.create-from-scratch}" />
+        <property name="scriptSingleStepMode" value="${imaging.database.script-single-step-mode}" />
+        <property name="sequenceNameMapper">
+            <bean class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.SequenceNameMapper" />
+        </property>
+        <property name="urlHostPart" value="${imaging.database.url-host-part}" />
+        <property name="adminUser" value="${imaging.database.admin-user}" />
+        <property name="owner" value="${imaging.database.owner}" />
+        <property name="readOnlyGroup" value="imaging_readonly" />
+        <property name="password" value="${imaging.database.owner-password}" />
+        <property name="adminPassword" value="${imaging.database.admin-password}" />
+        <property name="databaseKind" value="${imaging.database.kind}" />
+        <property name="databaseEngineCode" value="${imaging.database.engine}" />
+        <property name="scriptFolder" value="${imaging.script-folder}/sql" />
+        <property name="databaseInstance" value="${imaging.database-instance}" />
+    </bean>
+    
+    <bean id="screening-dao-factory"
+          class="ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.db.ScreeningDAOFactory">
+        <constructor-arg ref="imaging-db-configuration-context"/>
+    </bean>
+    
     <!--
         //Mail Client Parameters
     -->
diff --git a/screening/source/java/service.properties b/screening/source/java/service.properties
index 3db582c2b93..1d4aa1792ce 100644
--- a/screening/source/java/service.properties
+++ b/screening/source/java/service.properties
@@ -21,6 +21,17 @@ database.owner-password =
 database.admin-user = 
 database.admin-password =
 
+imaging.database.engine = postgresql
+imaging.database.create-from-scratch = false
+imaging.database.script-single-step-mode = false
+imaging.database.url-host-part =
+imaging.database.kind = dev
+imaging.database.owner =
+imaging.database.owner-password =
+imaging.database.admin-user = 
+imaging.database.admin-password =
+imaging.script-folder = source
+
 crowd.service.host = crowd-bsse.ethz.ch
 crowd.service.port = 8443
 crowd.application.name = lims
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
index 29d73a330bd..cc1195ae175 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
@@ -28,11 +28,11 @@ import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.AbstractDBTest;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.DBUtils;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.AbstractDBTest;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.DBUtils;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * @author Chandrasekhar Ramakrishnan
@@ -47,12 +47,12 @@ public class FeatureVectorUploaderTest extends AbstractDBTest
 
     private static final String TEST_FEATURE_NAME = "test";
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     @Test
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
index 560164ab8f7..5b859884376 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
@@ -33,10 +33,6 @@ import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.etlserver.IStorageProcessor;
 import ch.systemsx.cisd.etlserver.PlateDimensionParser;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
@@ -44,6 +40,10 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericValueEntityPrope
 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.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * @author Franz-Josef Elmer
@@ -63,7 +63,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
 
     private Mockery context;
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private DataSource dataSource;
 
@@ -76,7 +76,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
         super.setUp();
 
         context = new Mockery();
-        dao = context.mock(IImagingUploadDAO.class);
+        dao = context.mock(IImagingQueryDAO.class);
         dataSource = context.mock(DataSource.class);
         openBisService = context.mock(IEncapsulatedOpenBISService.class);
 
@@ -128,7 +128,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
                 // For Testing
 
                 @Override
-                protected IImagingUploadDAO createDAO()
+                protected IImagingQueryDAO createDAO()
                 {
                     return dao;
                 }
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
index 2427bd798e6..a35e0b1e23e 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
@@ -25,9 +25,9 @@ import org.testng.annotations.Test;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Check that Genedata feature vectors can be converted to the canonical form.
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/shared/.gitignore b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/shared/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
similarity index 96%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
index 4b2c4bcf666..1c6adfba799 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.sql.SQLException;
 
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
similarity index 96%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
index 4b6845f2aa8..1206b6ee82e 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import javax.sql.DataSource;
 
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
similarity index 79%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
index 4d6d2293d41..702e5448ec2 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
@@ -14,25 +14,25 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import ch.rinn.restrictions.Friend;
 import ch.systemsx.cisd.dbmigration.DBMigrationEngine;
 import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder;
+import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.db.ScreeningDAOFactory;
 
 /**
  * Utilities for dealing with databases in tests.
  * 
  * @author Piotr Buczek
  */
-@Friend(toClasses = ImagingDatabaseVersionHolder.class)
+@Friend(toClasses = ScreeningDAOFactory.class)
 public class DBUtilsForTests
 {
 
     public static void init(DatabaseConfigurationContext context)
     {
         DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context,
-                ImagingDatabaseVersionHolder.DATABASE_VERSION);
+                ScreeningDAOFactory.DATABASE_VERSION);
     }
 }
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
similarity index 85%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
index d436277100c..9ead171b158 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import static org.testng.AssertJUnit.assertEquals;
 
@@ -25,9 +25,14 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
- * Tests for {@link IImagingUploadDAO} methods that deal with feature vectors.
+ * Tests for {@link IImagingQueryDAO} methods that deal with feature vectors.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
@@ -35,7 +40,7 @@ import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
     { "db", "screening" })
 public class FeatureVectorDAOTest extends AbstractDBTest
 {
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private ImgDatasetDTO dataset;
 
@@ -50,12 +55,12 @@ public class FeatureVectorDAOTest extends AbstractDBTest
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     private ImgDatasetDTO createDataSet()
     {
-        IImagingUploadDAO imagingDao = dao;
+        IImagingQueryDAO imagingDao = dao;
 
         // Create an Experiment
         final long experimentId = imagingDao.addExperiment(EXP_PERM_ID);
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
similarity index 89%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
index c78efa3c113..7d3496c9c8f 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertNotNull;
@@ -27,15 +27,24 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.bds.hcs.Location;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAcquiredImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelStackDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgSpotDTO;
 
 /**
- * Tests for {@link IImagingUploadDAO}.
+ * Tests for {@link IImagingQueryDAO}.
  * 
  * @author Piotr Buczek
  */
 @Test(groups =
     { "db", "screening" })
-public class ImagingUploadDAOTest extends AbstractDBTest
+public class ImagingQueryDAOTest extends AbstractDBTest
 {
 
     private static final String PERM_ID = "PERM_ID";
@@ -68,12 +77,12 @@ public class ImagingUploadDAOTest extends AbstractDBTest
 
     private static final String EXP_CHANNEL = "expChannel";
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     @Test
-- 
GitLab