From 3c9c8aa397ec8af26713b4b8645695fc37410de6 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Mon, 13 May 2019 12:48:43 +0200 Subject: [PATCH] enable removal of non-job activities via TourActivities.iterator() --- .../route/activity/TourActivities.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 9bf54d89..22b9db33 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -81,7 +81,6 @@ public class TourActivities { } public TourActivities() { - } public List getActivities() { @@ -89,7 +88,30 @@ public class TourActivities { } public Iterator iterator() { - return tourActivities.iterator(); + final Iterator iterator = tourActivities.iterator(); + return new Iterator() { + private TourActivity lastReturned = null; + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public TourActivity next() { + return lastReturned = iterator.next(); + } + + @Override + public void remove() { + if (lastReturned instanceof JobActivity) { + throw new IllegalStateException("Cannot remove JobActivities via iterator. " + + "Use TourActivities.removeActivity(), or alternatively, consider TourActivities.removeJob()"); + } else { + iterator.remove(); + } + } + }; } public boolean isEmpty() {