Archived
0

fix stock and demand import

This commit is contained in:
Mo
2016-10-29 23:07:35 +03:00
parent 8d56de52a9
commit 04b4bfa4cc
2 changed files with 24 additions and 2 deletions

View File

@@ -67,18 +67,25 @@ public class EDDNItemData extends ItemDataBase {
@Override @Override
public long getSupply() { public long getSupply() {
JsonNode n; JsonNode n;
JsonNode ln;
switch (version) { switch (version) {
case V1: case V1:
n = node.get("stationStock"); n = node.get("stationStock");
ln = node.get("supplyLevel");
break; break;
case V2: case V2:
n = node.get("supply"); n = node.get("supply");
ln = node.get("supplyLevel");
break; break;
default: default:
n = node.get("stock"); n = node.get("stock");
ln = node.get("stockBracket");
break; break;
} }
if (n != null && n.isNumber()){ if (n != null && n.isNumber()){
if (ln != null && (ln.isNumber() && ln.asInt() == 0 || ln.asText().isEmpty())){
return 0;
}
return n.asLong(); return n.asLong();
} else { } else {
throw new ImportDataError("EDDN message don't have commodity supply"); throw new ImportDataError("EDDN message don't have commodity supply");
@@ -88,7 +95,20 @@ public class EDDNItemData extends ItemDataBase {
@Override @Override
public long getDemand() { public long getDemand() {
JsonNode n = node.get("demand"); 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 (n != null && n.isNumber()){
if (ln != null && (ln.isNumber() && ln.asInt() == 0 || ln.asText().isEmpty())){
return 0;
}
return n.asLong(); return n.asLong();
} else { } else {
throw new ImportDataError("EDDN message don't have commodity demand"); throw new ImportDataError("EDDN message don't have commodity demand");

View File

@@ -8,7 +8,9 @@ import org.junit.rules.ExpectedException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.trader.TestUtils; 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.ImportDataError;
import ru.trader.store.imp.entities.ItemData; import ru.trader.store.imp.entities.ItemData;
import ru.trader.store.imp.entities.ShipData; import ru.trader.store.imp.entities.ShipData;
@@ -482,7 +484,7 @@ public class ParserTest extends Assert {
assertEquals(7234, item.getSellOfferPrice()); assertEquals(7234, item.getSellOfferPrice());
assertEquals(24, item.getSupply()); assertEquals(24, item.getSupply());
assertEquals(7156, item.getBuyOfferPrice()); assertEquals(7156, item.getBuyOfferPrice());
assertEquals(1, item.getDemand()); assertEquals(0, item.getDemand());
assertNull(item.getId()); assertNull(item.getId());
assertNull(item.getGroup()); assertNull(item.getGroup());
} else } else