From 9cd1a06732e46558d1291f0e308c9032f13b64f2 Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Tue, 4 Mar 2014 12:52:01 +0000
Subject: [PATCH] SP-1226 / BIS-677 : Data Set Size Filling Maintenance Task: -
 fix dependencies (move EODSQL mappers to common project) - add unit test for
 the maintenance task

SVN: 30807
---
 common/.classpath                             |  2 +
 .../common/db/mapper}/AbstractSQLArray.java   |  2 +-
 .../common/db/mapper}/ByteArrayMapper.java    |  2 +-
 .../common/db/mapper}/LongArrayMapper.java    |  2 +-
 .../cisd/common/db/mapper}/LongSetMapper.java |  2 +-
 .../db/mapper}/SerializableObjectMapper.java  |  2 +-
 .../common/db/mapper}/SimpleSQLLongArray.java |  2 +-
 .../db/mapper}/SimpleSQLStringArray.java      |  2 +-
 .../mapper}/SimpleSQLStringArrayString.java   |  2 +-
 .../common/db/mapper}/StringArrayMapper.java  |  2 +-
 .../test/ArrayContainsExactlyMatcher.java     | 64 ++++++++++++++
 .../cisd/etlserver/path/IPathsInfoDAO.java    |  4 +-
 .../cisd/etlserver/path/PathEntryDTO.java     |  3 +-
 ...penbisDBFromPathInfoDBMaintenanceTask.java | 10 +++
 ...isDBFromPathInfoDBMaintenanceTaskTest.java | 84 +++++++++++++++++++
 .../predicate/ExperimentListPredicate.java    |  4 +-
 .../predicate/SampleListPredicate.java        |  4 +-
 .../entity/ISecondaryEntityListingQuery.java  |  2 +-
 .../datasetlister/IDatasetListingQuery.java   |  4 +-
 .../datasetlister/IDataSetListingQuery.java   |  2 +-
 .../IExperimentListingQuery.java              |  2 +-
 .../samplelister/ISampleListingQuery.java     |  2 +-
 .../materiallister/IMaterialListingQuery.java |  4 +-
 .../bo/samplelister/ISampleListingQuery.java  |  4 +-
 .../IExternalDataAdaptorRelationsQuery.java   |  2 +-
 .../ISampleAdaptorRelationsQuery.java         |  2 +-
 .../server/dataaccess/IProteinQueryDAO.java   |  2 +-
 .../dss/etl/dataaccess/IImagingQueryDAO.java  |  2 +-
 .../ScreeningPlateListReadOnlyPredicate.java  |  2 +-
 .../server/dataaccess/IScreeningQuery.java    |  4 +-
 .../dataaccess/IImagingReadonlyQueryDAO.java  |  4 +-
 .../dataaccess/TransformerFactoryMapper.java  |  2 +-
 32 files changed, 196 insertions(+), 37 deletions(-)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/AbstractSQLArray.java (97%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/ByteArrayMapper.java (96%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/LongArrayMapper.java (96%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/LongSetMapper.java (96%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/SerializableObjectMapper.java (96%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/SimpleSQLLongArray.java (97%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/SimpleSQLStringArray.java (97%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/SimpleSQLStringArrayString.java (95%)
 rename {openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db => common/source/java/ch/systemsx/cisd/common/db/mapper}/StringArrayMapper.java (96%)
 create mode 100644 common/source/java/ch/systemsx/cisd/common/test/ArrayContainsExactlyMatcher.java
 create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java

diff --git a/common/.classpath b/common/.classpath
index 0e991397ea1..95414b5a5c8 100644
--- a/common/.classpath
+++ b/common/.classpath
@@ -44,5 +44,7 @@
 	<classpathentry kind="lib" path="/libraries/poi/poi-ooxml.jar"/>
 	<classpathentry kind="lib" path="/libraries/poi/poi.jar"/>
 	<classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-integration.jar"/>
+	<classpathentry kind="lib" path="/libraries/eodsql/eodsql.jar" sourcepath="/libraries/eodsql/eodsql_src.zip"/>
+	<classpathentry kind="lib" path="/libraries/fastutil/fastutil.jar" sourcepath="/libraries/fastutil/fastutil-src.zip"/>
 	<classpathentry kind="output" path="targets/classes"/>
 </classpath>
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractSQLArray.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/AbstractSQLArray.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractSQLArray.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/AbstractSQLArray.java
index 5b5dae8f3ae..a84b8ca8dee 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractSQLArray.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/AbstractSQLArray.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.sql.Array;
 import java.sql.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ByteArrayMapper.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/ByteArrayMapper.java
similarity index 96%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ByteArrayMapper.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/ByteArrayMapper.java
index d5bdf9a91a8..b3c73a03ba7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ByteArrayMapper.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/ByteArrayMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongArrayMapper.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/LongArrayMapper.java
similarity index 96%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongArrayMapper.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/LongArrayMapper.java
index 03e031ba6ec..cf92073b0ff 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongArrayMapper.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/LongArrayMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongSetMapper.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/LongSetMapper.java
similarity index 96%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongSetMapper.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/LongSetMapper.java
index 79298a8323b..4650ec62e58 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/LongSetMapper.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/LongSetMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SerializableObjectMapper.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/SerializableObjectMapper.java
similarity index 96%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SerializableObjectMapper.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/SerializableObjectMapper.java
index bd8833e6f7d..7e0dd1c8785 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SerializableObjectMapper.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/SerializableObjectMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.io.Serializable;
 import java.sql.PreparedStatement;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLLongArray.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLLongArray.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLLongArray.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLLongArray.java
index f9bb0fb5173..8c54767290a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLLongArray.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLLongArray.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import it.unimi.dsi.fastutil.longs.LongSet;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArray.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArray.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArray.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArray.java
index 26566348dd7..25a2c2dfbfe 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArray.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArray.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.sql.SQLException;
 import java.sql.Types;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArrayString.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArrayString.java
similarity index 95%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArrayString.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArrayString.java
index 116cf71a474..884300935f9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SimpleSQLStringArrayString.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/SimpleSQLStringArrayString.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/StringArrayMapper.java b/common/source/java/ch/systemsx/cisd/common/db/mapper/StringArrayMapper.java
similarity index 96%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/StringArrayMapper.java
rename to common/source/java/ch/systemsx/cisd/common/db/mapper/StringArrayMapper.java
index c6e397f15b8..53b68c76881 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/StringArrayMapper.java
+++ b/common/source/java/ch/systemsx/cisd/common/db/mapper/StringArrayMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
+package ch.systemsx.cisd.common.db.mapper;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/common/source/java/ch/systemsx/cisd/common/test/ArrayContainsExactlyMatcher.java b/common/source/java/ch/systemsx/cisd/common/test/ArrayContainsExactlyMatcher.java
new file mode 100644
index 00000000000..c31433dbb9a
--- /dev/null
+++ b/common/source/java/ch/systemsx/cisd/common/test/ArrayContainsExactlyMatcher.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2012 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.common.test;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+
+/**
+ * @author pkupczyk
+ */
+public class ArrayContainsExactlyMatcher<T> extends TypeSafeMatcher<T[]>
+{
+
+    private T[] expectedArray;
+
+    public ArrayContainsExactlyMatcher(T... expected)
+    {
+        this.expectedArray = expected;
+    }
+
+    @Override
+    public void describeTo(Description description)
+    {
+        description.appendText("A collection containing exactly items " + expectedArray.toString());
+    }
+
+    @Override
+    public boolean matchesSafely(T[] actualArray)
+    {
+        if (actualArray.length != expectedArray.length)
+        {
+            return false;
+        }
+
+        Collection<T> actualCollection = new HashSet<T>(Arrays.asList(actualArray));
+        Collection<T> expectedCollection = new HashSet<T>(Arrays.asList(actualArray));
+
+        return actualCollection.equals(expectedCollection);
+    }
+
+    public static <T> ArrayContainsExactlyMatcher<T> containsExactly(T... items)
+    {
+        return new ArrayContainsExactlyMatcher<T>(items);
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/IPathsInfoDAO.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/IPathsInfoDAO.java
index 3886f15f9d6..dc48225d93e 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/IPathsInfoDAO.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/IPathsInfoDAO.java
@@ -20,12 +20,12 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
+
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TransactionQuery;
 import net.lemnik.eodsql.Update;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
-
 /**
  * Data Access Object for feeding and updating pathinfo database.
  * 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathEntryDTO.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathEntryDTO.java
index 61c2f1095d0..a73e753dcb5 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathEntryDTO.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathEntryDTO.java
@@ -57,8 +57,7 @@ public class PathEntryDTO
     @ResultColumn("data_set_code")
     private String dataSetCode;
 
-    @SuppressWarnings("unused")
-    private PathEntryDTO()
+    public PathEntryDTO()
     {
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask.java
index ef8c02d24fa..a6b5325d96a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask.java
@@ -50,6 +50,16 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask impl
 
     private IPathsInfoDAO dao;
 
+    public FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask()
+    {
+    }
+
+    public FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask(IEncapsulatedOpenBISService service, IPathsInfoDAO dao)
+    {
+        this.service = service;
+        this.dao = dao;
+    }
+
     @Override
     public void setUp(String pluginName, Properties properties)
     {
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java
new file mode 100644
index 00000000000..26333827a1c
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2014 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.etlserver.plugins;
+
+import static ch.systemsx.cisd.common.test.ArrayContainsExactlyMatcher.containsExactly;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.testng.annotations.Test;
+
+import ch.systemsx.cisd.etlserver.path.IPathsInfoDAO;
+import ch.systemsx.cisd.etlserver.path.PathEntryDTO;
+import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+
+/**
+ * @author pkupczyk
+ */
+public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
+{
+
+    @Test
+    public void test()
+    {
+        Mockery context = new Mockery();
+        final IEncapsulatedOpenBISService service = context.mock(IEncapsulatedOpenBISService.class);
+        final IPathsInfoDAO dao = context.mock(IPathsInfoDAO.class);
+
+        final SimpleDataSetInformationDTO dataSet1 = new SimpleDataSetInformationDTO();
+        dataSet1.setDataSetCode("DS_1");
+        final SimpleDataSetInformationDTO dataSet2 = new SimpleDataSetInformationDTO();
+        dataSet2.setDataSetCode("DS_2");
+        final SimpleDataSetInformationDTO dataSet3 = new SimpleDataSetInformationDTO();
+        dataSet3.setDataSetCode("DS_3");
+
+        final PathEntryDTO entry1 = new PathEntryDTO();
+        entry1.setDataSetCode("DS_1");
+        entry1.setSizeInBytes(123L);
+
+        final PathEntryDTO entry2 = new PathEntryDTO();
+        entry2.setDataSetCode("DS_2");
+
+        context.checking(new Expectations()
+            {
+                {
+                    one(service).listPhysicalDataSetsWithUnknownSize();
+                    will(returnValue(Arrays.asList(dataSet1, dataSet2, dataSet3)));
+
+                    one(dao).listDataSetsSize(
+                            with(containsExactly(dataSet1.getDataSetCode(), dataSet2.getDataSetCode(), dataSet3
+                                    .getDataSetCode())));
+                    will(returnValue(Arrays.asList(entry1, entry2)));
+
+                    Map<String, Long> sizeMap = new HashedMap<String, Long>();
+                    sizeMap.put("DS_1", 123L);
+                    one(service).updatePhysicalDataSetsSize(sizeMap);
+                }
+            });
+
+        FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask task =
+                new FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask(service, dao);
+        task.execute();
+
+        context.assertIsSatisfied();
+    }
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentListPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentListPredicate.java
index 791df168cb1..48a6ac2fee4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentListPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentListPredicate.java
@@ -27,12 +27,12 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.QueryTool;
 import net.lemnik.eodsql.Select;
 
+import ch.systemsx.cisd.common.db.mapper.LongArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException;
 import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.openbis.generic.server.authorization.RoleWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ShouldFlattenCollections;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongArrayMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java
index 6e797a91cb1..0e573ebf57b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java
@@ -27,13 +27,13 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.QueryTool;
 import net.lemnik.eodsql.Select;
 
+import ch.systemsx.cisd.common.db.mapper.LongArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException;
 import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider;
 import ch.systemsx.cisd.openbis.generic.server.authorization.RoleWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ShouldFlattenCollections;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongArrayMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/entity/ISecondaryEntityListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/entity/ISecondaryEntityListingQuery.java
index 64ffe1bea36..4dfdbaaf7b6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/entity/ISecondaryEntityListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/entity/ISecondaryEntityListingQuery.java
@@ -23,7 +23,7 @@ import net.lemnik.eodsql.Select;
 
 import ch.rinn.restrictions.Friend;
 import ch.rinn.restrictions.Private;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
index fdbde2d471a..5bafe710d77 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
@@ -29,14 +29,14 @@ import net.lemnik.eodsql.TypeMapper;
 
 import ch.rinn.restrictions.Friend;
 import ch.rinn.restrictions.Private;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.CodeRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.GenericEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.IPropertyListingQuery;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.MaterialEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.VocabularyTermRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.MetaProjectWithEntityId;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 
 /**
  * A {@link TransactionQuery} interface for obtaining large sets of dataset-related entities from the database.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
index e6e398623e1..961556727b8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
@@ -21,7 +21,7 @@ import java.util.List;
 import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.Select;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 
 /**
  * @author pkupczyk
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/experimentlister/IExperimentListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/experimentlister/IExperimentListingQuery.java
index 988cd675a7e..0e2c3217fa0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/experimentlister/IExperimentListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/experimentlister/IExperimentListingQuery.java
@@ -20,7 +20,7 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.DataIterator;
 import net.lemnik.eodsql.Select;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 
 /**
  * @author pkupczyk
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/samplelister/ISampleListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/samplelister/ISampleListingQuery.java
index 8ba3dc549f9..fe0d1b14baf 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/samplelister/ISampleListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/samplelister/ISampleListingQuery.java
@@ -24,10 +24,10 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TypeMapper;
 
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.EntityMetaprojectRelationRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.MetaprojectRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.PropertyRecord;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
 
 /**
  * @author Franz-Josef Elmer
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/materiallister/IMaterialListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/materiallister/IMaterialListingQuery.java
index 035c8e0a671..296c53b51a1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/materiallister/IMaterialListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/materiallister/IMaterialListingQuery.java
@@ -27,13 +27,13 @@ import net.lemnik.eodsql.TransactionQuery;
 import net.lemnik.eodsql.TypeMapper;
 
 import ch.rinn.restrictions.Private;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.GenericEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.IPropertyListingQuery;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.MaterialEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.VocabularyTermRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.MetaProjectWithEntityId;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 
 /**
  * A {@link TransactionQuery} interface for obtaining large sets of material-related entities from the database.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
index 0ab0206c529..9f7491ea341 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
@@ -32,14 +32,14 @@ import net.lemnik.eodsql.spi.util.NonUpdateCapableDataObjectBinding;
 
 import ch.rinn.restrictions.Friend;
 import ch.rinn.restrictions.Private;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.GenericEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.IPropertyListingQuery;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.MaterialEntityPropertyRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.VocabularyTermRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.common.entity.ExperimentProjectSpaceCodeRecord;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.common.MetaProjectWithEntityId;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/IExternalDataAdaptorRelationsQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/IExternalDataAdaptorRelationsQuery.java
index cfb33ec28e9..b2ca78bf262 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/IExternalDataAdaptorRelationsQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/IExternalDataAdaptorRelationsQuery.java
@@ -24,7 +24,7 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TypeMapper;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
 
 /**
  * @author pkupczyk
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ISampleAdaptorRelationsQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ISampleAdaptorRelationsQuery.java
index 0025036d9cf..1630b8ccca9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ISampleAdaptorRelationsQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ISampleAdaptorRelationsQuery.java
@@ -24,7 +24,7 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TypeMapper;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
 import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant;
 
 /**
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java
index 54b793c8073..8274ac3f60f 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java
@@ -22,7 +22,7 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.DataSet;
 import net.lemnik.eodsql.Select;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongSetMapper;
+import ch.systemsx.cisd.common.db.mapper.LongSetMapper;
 import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein;
 import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IndistinguishableProtein;
 import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.PeptideWithModification;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingQueryDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingQueryDAO.java
index a0501f8e160..28be9afa88a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingQueryDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingQueryDAO.java
@@ -23,7 +23,7 @@ import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TransactionQuery;
 import net.lemnik.eodsql.Update;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ByteArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.ByteArrayMapper;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingReadonlyQueryDAO;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAcquiredImageDTO;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAnalysisDatasetDTO;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningPlateListReadOnlyPredicate.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningPlateListReadOnlyPredicate.java
index 3c4e8bfb143..6713aa0bf97 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningPlateListReadOnlyPredicate.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningPlateListReadOnlyPredicate.java
@@ -26,11 +26,11 @@ import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.QueryTool;
 import net.lemnik.eodsql.Select;
 
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.openbis.generic.server.authorization.RoleWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ShouldFlattenCollections;
 import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.AbstractSpacePredicate;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.exception.UndefinedSpaceException;
 import ch.systemsx.cisd.openbis.generic.shared.util.SpaceCodeHelper;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningQuery.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningQuery.java
index 1e5b3656278..0f1feaf2c81 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningQuery.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningQuery.java
@@ -23,8 +23,8 @@ import net.lemnik.eodsql.DataIterator;
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TypeMapper;
 
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongArrayMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.LongArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 
 /**
  * Screening specific queries on openbis database.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java
index 80c793e445c..000a5a96cef 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java
@@ -21,9 +21,9 @@ import java.util.List;
 import net.lemnik.eodsql.BaseQuery;
 import net.lemnik.eodsql.Select;
 
+import ch.systemsx.cisd.common.db.mapper.LongArrayMapper;
+import ch.systemsx.cisd.common.db.mapper.StringArrayMapper;
 import ch.systemsx.cisd.hcs.Location;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.LongArrayMapper;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.StringArrayMapper;
 
 /**
  * Operations on imaging database which are read-only.<br>
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/TransformerFactoryMapper.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/TransformerFactoryMapper.java
index ddcbfdc9551..9e06b0640c8 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/TransformerFactoryMapper.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/TransformerFactoryMapper.java
@@ -22,7 +22,7 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import ch.systemsx.cisd.base.image.IImageTransformerFactory;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.SerializableObjectMapper;
+import ch.systemsx.cisd.common.db.mapper.SerializableObjectMapper;
 
 import net.lemnik.eodsql.TypeMapper;
 
-- 
GitLab