From 6d484cf529a13f15ca5deff05bbf8170c909448e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=81=D0=B5=D0=BB=D1=91=D0=B2=20=D0=92=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Thu, 20 Jun 2019 14:32:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=BD=D0=B0=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=D0=BC=20=D0=B3=D1=80=D1=83=D0=B7=D0=BE=D0=BF=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D0=B1=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2=D1=89=D0=B8=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inport/TaskCase.java | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/inport/TaskCase.java b/src/inport/TaskCase.java index 2a9524d..940a959 100644 --- a/src/inport/TaskCase.java +++ b/src/inport/TaskCase.java @@ -13,6 +13,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.*; import java.util.function.BiFunction; +import java.util.function.Consumer; import java.util.logging.Level; import java.util.logging.Logger; @@ -617,38 +618,47 @@ public class TaskCase { mt.setId(Integer.parseInt(tokens[0].trim())); mt.setTimeWindow(tokens[2].trim()); - int direction = 1; - - BiFunction addLoaderOrStorage = (Integer key, Integer loaderDirection) -> { + BiFunction extractDirection = (Integer key, Integer loaderDirection) -> { int dir = 1; + if ((vesselTypes.containsKey(key)) || (m_vessel.containsKey(key))) { + dir = loaderDirection; + } else + if (m_storage.containsKey(key)) { + dir = -loaderDirection; + } else + if ((m_bunker.containsKey(key)) || (bunkerTypes.containsKey(key))) { + if (mt.getStorage() != null) { + dir = loaderDirection; + } else { + dir = -loaderDirection; + } + } + return dir; + }; + + Consumer addLoaderOrStorage = (Integer key) -> { if (vesselTypes.containsKey(key)) { mt.setLoaderType(OptionalInt.of(key)); - dir = loaderDirection; } else if (m_vessel.containsKey(key)) { mt.setLoader((TransportShip)m_vessel.get(key)); - dir = loaderDirection; } else if (m_storage.containsKey(key)) { mt.setStorage(m_storage.get(key)); - dir = -loaderDirection; } else if (m_bunker.containsKey(key)) { mt.setBunker(Optional.of(m_bunker.get(key))); - dir = -loaderDirection; - } else - if (bunkerTypes.containsKey(key)) { + } else if (bunkerTypes.containsKey(key)) { mt.setBunkerType(OptionalInt.of(key)); - dir = -loaderDirection; } - return dir; }; int key; // Источник. key = Integer.parseInt(tokens[3].trim()); - direction = addLoaderOrStorage.apply(key, -1); + addLoaderOrStorage.accept(key); + // Груз. key = Integer.parseInt(tokens[4].trim());; for (Cargo cargo : cargoes) { @@ -658,7 +668,10 @@ public class TaskCase { } // Приемник. key = Integer.parseInt(tokens[5].trim()); - direction = addLoaderOrStorage.apply(key, 1); + addLoaderOrStorage.accept(key); + + int direction = extractDirection.apply(key, 1); + key = Integer.parseInt(tokens[6].trim()); mt.setStartLocation(m_berth.get(key)); String[] rs = tokens[7].trim().replace("[", "").replace("]", "").split(","); -- GitLab