From 4edbaa17cc453848170a6a3966002f71da0fbca7 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 20 Apr 2010 13:18:02 +0000
Subject: [PATCH] [LMS-1457] minor refactorings

SVN: 15535
---
 .../dsu/tracking/dto/TrackingStateDTO.java    |  2 +-
 .../tracking/main/FileBasedTrackingDAO.java   |  6 +-
 .../cisd/dsu/tracking/main/TrackingBO.java    | 88 +++++++++++--------
 3 files changed, 54 insertions(+), 42 deletions(-)

diff --git a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/dto/TrackingStateDTO.java b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/dto/TrackingStateDTO.java
index 7abc3bf55d9..c311de09d59 100644
--- a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/dto/TrackingStateDTO.java
+++ b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/dto/TrackingStateDTO.java
@@ -41,7 +41,7 @@ public class TrackingStateDTO
         return alreadyTrackedSampleIdsToBeProcessed;
     }
 
-    public void setAlreadyTrackedSamplesIdsToBeProcessed(
+    public void setAlreadyTrackedSampleIdsToBeProcessed(
             Set<Long> alreadyTrackedSampleIdsToBeProcessed)
     {
         this.alreadyTrackedSampleIdsToBeProcessed = alreadyTrackedSampleIdsToBeProcessed;
diff --git a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/FileBasedTrackingDAO.java b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/FileBasedTrackingDAO.java
index a167891ae03..0050db9caf0 100644
--- a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/FileBasedTrackingDAO.java
+++ b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/FileBasedTrackingDAO.java
@@ -22,9 +22,9 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -75,7 +75,7 @@ public class FileBasedTrackingDAO implements ITrackingDAO
             String[] toBeProcessed = lines.get(1).split("\t");
             String[] processed = lines.get(2).split("\t");
             state.setLastSeenDatasetId(Integer.parseInt(datasetId[1]));
-            state.setAlreadyTrackedSamplesIdsToBeProcessed(parseIds(toBeProcessed));
+            state.setAlreadyTrackedSampleIdsToBeProcessed(parseIds(toBeProcessed));
             state.setAlreadyTrackedSampleIdsProcessed(parseIds(processed));
             return state;
         } catch (Exception e)
@@ -86,7 +86,7 @@ public class FileBasedTrackingDAO implements ITrackingDAO
 
     private static Set<Long> parseIds(String[] array)
     {
-        Set<Long> ids = new HashSet<Long>();
+        Set<Long> ids = new TreeSet<Long>();
         for (int i = 1; i < array.length; i++)
         {
             ids.add(Long.parseLong(array[i]));
diff --git a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
index b1fca069bb0..39215b05a55 100644
--- a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
+++ b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
@@ -17,9 +17,9 @@
 package ch.ethz.bsse.cisd.dsu.tracking.main;
 
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 
 import ch.ethz.bsse.cisd.dsu.tracking.dto.TrackedEntities;
 import ch.ethz.bsse.cisd.dsu.tracking.dto.TrackingStateDTO;
@@ -33,9 +33,9 @@ import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.openbis.generic.shared.ITrackingServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 
 /**
@@ -158,45 +158,11 @@ public class TrackingBO
     private static void saveTrackingState(TrackingStateDTO prevState,
             TrackedEntities changedEntities, ITrackingDAO trackingDAO)
     {
-        TrackingStateDTO state = calcNewTrackingState(prevState, changedEntities);
+        TrackingStateDTO state =
+                TrackingStateUpdateHelper.calcNewTrackingState(prevState, changedEntities);
         trackingDAO.saveTrackingState(state);
     }
 
-    private static TrackingStateDTO calcNewTrackingState(TrackingStateDTO prevState,
-            TrackedEntities changedEntities)
-    {
-        TrackingStateDTO state = new TrackingStateDTO();
-        Set<Long> sequencingSamplesProcessed =
-                new HashSet<Long>(prevState.getAlreadyTrackedSampleIdsProcessed());
-        addNewSampleIds(sequencingSamplesProcessed, changedEntities.getSequencingSamplesProcessed());
-        state.setAlreadyTrackedSampleIdsProcessed(sequencingSamplesProcessed);
-
-        int lastSeenDatasetId =
-                calcMaxId(changedEntities.getDataSets(), prevState.getLastSeenDatasetId());
-        state.setLastSeenDatasetId(lastSeenDatasetId);
-        return state;
-    }
-
-    private static void addNewSampleIds(Set<Long> alreadyTrackedSampleIdsProcessed,
-            List<Sample> sequencingSamplesProcessed)
-    {
-        for (Sample sample : sequencingSamplesProcessed)
-        {
-            alreadyTrackedSampleIdsProcessed.add(sample.getId());
-        }
-    }
-
-    private static int calcMaxId(List<? extends IIdentifiable> entities, int initialValue)
-    {
-        long max = initialValue;
-        for (IIdentifiable entity : entities)
-        {
-            max = Math.max(max, entity.getId());
-        }
-        // TODO 2009-12-01, Tomasz Pylak: refactor ids to long everywhere
-        return (int) max;
-    }
-
     private static TrackedEntities fetchChangedEntities(TrackingStateDTO trackingState,
             ITrackingServer trackingServer, SessionContextDTO session)
     {
@@ -226,4 +192,50 @@ public class TrackingBO
                         Collections.EMPTY_LIST);
         return trackingServer.listSamples(session.getSessionToken(), criteria);
     }
+
+    public static class TrackingStateUpdateHelper
+    {
+
+        public static TrackingStateDTO calcNewTrackingState(TrackingStateDTO prevState,
+                TrackedEntities changedEntities)
+        {
+            TrackingStateDTO state = new TrackingStateDTO();
+            Set<Long> sequencingSamplesToBeProcessed =
+                    new TreeSet<Long>(prevState.getAlreadyTrackedSampleIdsToBeProcessed());
+            addNewSampleIds(sequencingSamplesToBeProcessed, changedEntities
+                    .getSequencingSamplesToBeProcessed());
+            state.setAlreadyTrackedSampleIdsToBeProcessed(sequencingSamplesToBeProcessed);
+
+            Set<Long> sequencingSamplesProcessed =
+                    new TreeSet<Long>(prevState.getAlreadyTrackedSampleIdsProcessed());
+            addNewSampleIds(sequencingSamplesProcessed, changedEntities
+                    .getSequencingSamplesProcessed());
+            state.setAlreadyTrackedSampleIdsProcessed(sequencingSamplesProcessed);
+
+            int lastSeenDatasetId =
+                    calcMaxId(changedEntities.getDataSets(), prevState.getLastSeenDatasetId());
+            state.setLastSeenDatasetId(lastSeenDatasetId);
+            return state;
+        }
+
+        private static void addNewSampleIds(Set<Long> alreadyTrackedSampleIdsProcessed,
+                List<Sample> sequencingSamplesProcessed)
+        {
+            for (Sample sample : sequencingSamplesProcessed)
+            {
+                alreadyTrackedSampleIdsProcessed.add(sample.getId());
+            }
+        }
+
+        private static int calcMaxId(List<? extends IIdentifiable> entities, int initialValue)
+        {
+            long max = initialValue;
+            for (IIdentifiable entity : entities)
+            {
+                max = Math.max(max, entity.getId());
+            }
+            // TODO 2009-12-01, Tomasz Pylak: refactor ids to long everywhere
+            return (int) max;
+        }
+    }
 }
-- 
GitLab