From ee9146658c08511cca880df1182cfece606ab628 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Wed, 20 Apr 2011 10:01:27 +0000
Subject: [PATCH] [LMS-2172] refactorization: extracted class to make testing
 easier

SVN: 21004
---
 .../DatabaseBasedDataSetPathInfoProvider.java | 132 ++++++++++--------
 1 file changed, 71 insertions(+), 61 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java
index e5195c63a1c..6e365999b88 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java
@@ -131,75 +131,85 @@ public class DatabaseBasedDataSetPathInfoProvider implements IDataSetPathInfoPro
         final Long dataSetId = getDao().tryToGetDataSetId(dataSetCode);
         if (dataSetId != null)
         {
-            return new ISingleDataSetPathInfoProvider()
-                {
-                    public DataSetPathInfo getRootPathInfo()
-                    {
-                        DataSetFileRecord record = getDao().getDataSetRootFile(dataSetId);
-                        return asPathInfo(record);
-                    }
+            return new SingleDataSetPathInfoProvider(dataSetId, getDao());
+        }
+        return null;
+    }
 
-                    public DataSetPathInfo tryGetPathInfoByRelativePath(String relativePath)
-                    {
-                        DataSetFileRecord record =
-                                getDao().tryToGetRelativeDataSetFile(dataSetId, relativePath);
-                        if (record != null)
-                        {
-                            return asPathInfo(record);
-                        } else
-                        {
-                            return null;
-                        }
-                    }
+    private final class SingleDataSetPathInfoProvider implements ISingleDataSetPathInfoProvider
+    {
+        private final Long dataSetId;
 
-                    public List<DataSetPathInfo> listChildrenPathInfos(DataSetPathInfo parent)
-                    {
-                        List<DataSetFileRecord> records =
-                                getDao().listChildrenByParentId(dataSetId, parent.getId());
-                        return asPathInfos(records);
-                    }
+        @SuppressWarnings("hiding")
+        private final IPathInfoDAO dao;
 
-                    public List<DataSetPathInfo> listMatchingPathInfos(String relativePathPattern)
-                    {
-                        List<DataSetFileRecord> records =
-                                getDao().listDataSetFilesByRelativePathRegex(dataSetId,
-                                        prepareDBStyleRegex(relativePathPattern));
-                        return asPathInfos(records);
-                    }
+        public SingleDataSetPathInfoProvider(Long dataSetId, IPathInfoDAO dao)
+        {
+            this.dataSetId = dataSetId;
+            this.dao = dao;
+        }
 
-                    public List<DataSetPathInfo> listMatchingPathInfos(String startingPath,
-                            String fileNamePattern)
-                    {
-                        List<DataSetFileRecord> records =
-                                getDao().listDataSetFilesByFilenameRegex(dataSetId, startingPath,
-                                        prepareDBStyleRegex(fileNamePattern));
-                        return asPathInfos(records);
-                    }
+        public DataSetPathInfo getRootPathInfo()
+        {
+            DataSetFileRecord record = dao.getDataSetRootFile(dataSetId);
+            return asPathInfo(record);
+        }
 
-                    private DataSetPathInfo asPathInfo(DataSetFileRecord record)
-                    {
-                        DataSetPathInfo result = new DataSetPathInfo();
-                        result.setId(record.id);
-                        result.setFileName(record.file_name);
-                        result.setRelativePath(record.relative_path);
-                        result.setDirectory(record.is_directory);
-                        result.setSizeInBytes(record.size_in_bytes);
-                        return result;
-                    }
+        public DataSetPathInfo tryGetPathInfoByRelativePath(String relativePath)
+        {
+            DataSetFileRecord record = dao.tryToGetRelativeDataSetFile(dataSetId, relativePath);
+            if (record != null)
+            {
+                return asPathInfo(record);
+            } else
+            {
+                return null;
+            }
+        }
 
-                    private List<DataSetPathInfo> asPathInfos(List<DataSetFileRecord> records)
-                    {
-                        List<DataSetPathInfo> results = new ArrayList<DataSetPathInfo>();
-                        for (DataSetFileRecord record : records)
-                        {
-                            results.add(asPathInfo(record));
-                        }
-                        return results;
-                    }
+        public List<DataSetPathInfo> listChildrenPathInfos(DataSetPathInfo parent)
+        {
+            List<DataSetFileRecord> records = dao.listChildrenByParentId(dataSetId, parent.getId());
+            return asPathInfos(records);
+        }
+
+        public List<DataSetPathInfo> listMatchingPathInfos(String relativePathPattern)
+        {
+            List<DataSetFileRecord> records =
+                    dao.listDataSetFilesByRelativePathRegex(dataSetId,
+                            prepareDBStyleRegex(relativePathPattern));
+            return asPathInfos(records);
+        }
 
-                };
+        public List<DataSetPathInfo> listMatchingPathInfos(String startingPath,
+                String fileNamePattern)
+        {
+            List<DataSetFileRecord> records =
+                    dao.listDataSetFilesByFilenameRegex(dataSetId, startingPath,
+                            prepareDBStyleRegex(fileNamePattern));
+            return asPathInfos(records);
+        }
+
+        private DataSetPathInfo asPathInfo(DataSetFileRecord record)
+        {
+            DataSetPathInfo result = new DataSetPathInfo();
+            result.setId(record.id);
+            result.setFileName(record.file_name);
+            result.setRelativePath(record.relative_path);
+            result.setDirectory(record.is_directory);
+            result.setSizeInBytes(record.size_in_bytes);
+            return result;
+        }
+
+        private List<DataSetPathInfo> asPathInfos(List<DataSetFileRecord> records)
+        {
+            List<DataSetPathInfo> results = new ArrayList<DataSetPathInfo>();
+            for (DataSetFileRecord record : records)
+            {
+                results.add(asPathInfo(record));
+            }
+            return results;
         }
-        return null;
     }
 
     private final class Loader
-- 
GitLab