From 04b4bfa4ccbb5c314c2993294ce67f6260b7a9b6 Mon Sep 17 00:00:00 2001 From: Mo Date: Sat, 29 Oct 2016 23:07:35 +0300 Subject: [PATCH] fix stock and demand import --- .../ru/trader/emdn/entities/EDDNItemData.java | 20 +++++++++++++++++++ .../test/java/ru/trader/emdn/ParserTest.java | 6 ++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/utils/src/main/java/ru/trader/emdn/entities/EDDNItemData.java b/utils/src/main/java/ru/trader/emdn/entities/EDDNItemData.java index 25bc8ec..489f593 100644 --- a/utils/src/main/java/ru/trader/emdn/entities/EDDNItemData.java +++ b/utils/src/main/java/ru/trader/emdn/entities/EDDNItemData.java @@ -67,18 +67,25 @@ public class EDDNItemData extends ItemDataBase { @Override public long getSupply() { JsonNode n; + JsonNode ln; switch (version) { case V1: n = node.get("stationStock"); + ln = node.get("supplyLevel"); break; case V2: n = node.get("supply"); + ln = node.get("supplyLevel"); break; default: n = node.get("stock"); + ln = node.get("stockBracket"); break; } if (n != null && n.isNumber()){ + if (ln != null && (ln.isNumber() && ln.asInt() == 0 || ln.asText().isEmpty())){ + return 0; + } return n.asLong(); } else { throw new ImportDataError("EDDN message don't have commodity supply"); @@ -88,7 +95,20 @@ public class EDDNItemData extends ItemDataBase { @Override public long getDemand() { JsonNode n = node.get("demand"); + JsonNode ln; + switch (version) { + case V1: + case V2: + ln = node.get("demandLevel"); + break; + default: + ln = node.get("demandBracket"); + break; + } if (n != null && n.isNumber()){ + if (ln != null && (ln.isNumber() && ln.asInt() == 0 || ln.asText().isEmpty())){ + return 0; + } return n.asLong(); } else { throw new ImportDataError("EDDN message don't have commodity demand"); diff --git a/utils/src/test/java/ru/trader/emdn/ParserTest.java b/utils/src/test/java/ru/trader/emdn/ParserTest.java index 4887fc9..9256e2b 100644 --- a/utils/src/test/java/ru/trader/emdn/ParserTest.java +++ b/utils/src/test/java/ru/trader/emdn/ParserTest.java @@ -8,7 +8,9 @@ import org.junit.rules.ExpectedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.trader.TestUtils; -import ru.trader.emdn.entities.*; +import ru.trader.emdn.entities.Header; +import ru.trader.emdn.entities.Message; +import ru.trader.emdn.entities.SUPPORT_VERSIONS; import ru.trader.store.imp.ImportDataError; import ru.trader.store.imp.entities.ItemData; import ru.trader.store.imp.entities.ShipData; @@ -482,7 +484,7 @@ public class ParserTest extends Assert { assertEquals(7234, item.getSellOfferPrice()); assertEquals(24, item.getSupply()); assertEquals(7156, item.getBuyOfferPrice()); - assertEquals(1, item.getDemand()); + assertEquals(0, item.getDemand()); assertNull(item.getId()); assertNull(item.getGroup()); } else