Archived
0

implement import helped classes, refactoring EDDN message parse

This commit is contained in:
iMoHax
2016-10-07 15:39:06 +03:00
parent 0ac740bff2
commit f5514e5d1c
30 changed files with 1254 additions and 720 deletions

View File

@@ -9,6 +9,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.TestUtils;
import ru.trader.emdn.entities.*;
import ru.trader.store.imp.ImportDataError;
import ru.trader.store.imp.entities.ItemData;
import ru.trader.store.imp.entities.ShipData;
import ru.trader.store.imp.entities.StarSystemData;
import ru.trader.store.imp.entities.StationData;
import java.io.InputStream;
import java.time.LocalDateTime;
@@ -28,38 +33,50 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/commodity/1", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V1, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("abcdef0123456789", header.getUploaderId());
assertEquals("My Awesome Market Uploader", header.getSoftwareName());
assertEquals("v3.14", header.getSoftwareVersion());
assertEquals(LocalDateTime.of(2014, 11, 17, 13, 35), header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Eranin", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Eranin", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Azeban Orbital", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), station.getModifiedTime());
Collection<ItemData> items = station.getCommodities();
assertNotNull(items);
assertEquals(1, items.size());
Item item = items.iterator().next();
ItemData item = items.iterator().next();
assertNotNull(item);
assertEquals("Gold", item.getName());
assertNull(item.getId());
assertEquals(1024, item.getBuyPrice());
assertEquals(1024, item.getSellOfferPrice());
assertEquals(7, item.getSupply());
assertEquals(LEVEL_TYPE.LOW, item.getSupplyLevel());
assertEquals(1138, item.getSellPrice());
assertEquals(1138, item.getBuyOfferPrice());
assertEquals(42, item.getDemand());
assertEquals(LEVEL_TYPE.MEDIUM, item.getDemandLevel());
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getShips());
assertNull(station.getModules());
assertNull(item.getId());
assertNull(item.getGroup());
}
}
@@ -72,53 +89,64 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/commodity/2", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V2, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("abcdef0123456789", header.getUploaderId());
assertEquals("My Awesome Market Uploader", header.getSoftwareName());
assertEquals("v3.14", header.getSoftwareVersion());
assertEquals(LocalDateTime.of(2014, 11, 17, 13, 35), header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Eranin", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Eranin", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Azeban Orbital", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), station.getModifiedTime());
Collection<ItemData> items = station.getCommodities();
assertNotNull(items);
assertEquals(2, items.size());
int found = 0;
for (Item item : items) {
for (ItemData item : items) {
assertNotNull(item);
if ("Gold".equals(item.getName())){
found++;
assertNull(item.getId());
assertEquals(1024, item.getBuyPrice());
assertEquals(1024, item.getSellOfferPrice());
assertEquals(7, item.getSupply());
assertEquals(LEVEL_TYPE.LOW, item.getSupplyLevel());
assertEquals(1138, item.getSellPrice());
assertEquals(1138, item.getBuyOfferPrice());
assertEquals(42, item.getDemand());
assertEquals(LEVEL_TYPE.MEDIUM, item.getDemandLevel());
assertNull(item.getId());
assertNull(item.getGroup());
} else
if ("Explosives".equals(item.getName())){
found++;
assertNull(item.getId());
assertEquals(999, item.getBuyPrice());
assertEquals(999, item.getSellOfferPrice());
assertEquals(1500, item.getSupply());
assertEquals(LEVEL_TYPE.LOW, item.getSupplyLevel());
assertEquals(0, item.getSellPrice());
assertEquals(0, item.getBuyOfferPrice());
assertEquals(0, item.getDemand());
assertNull(item.getDemandLevel());
assertNull(item.getId());
assertNull(item.getGroup());
}
}
assertEquals("Expected items not found", 2, found);
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getShips());
assertNull(station.getModules());
}
}
@@ -130,38 +158,51 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/commodity/1", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V1, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("abcdef0123456789", header.getUploaderId());
assertEquals("My Awesome Market Uploader", header.getSoftwareName());
assertEquals("v3.14", header.getSoftwareVersion());
assertNull(header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Eranin", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Eranin", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Azeban Orbital", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), station.getModifiedTime());
Collection<ItemData> items = station.getCommodities();
assertNotNull(items);
assertEquals(1, items.size());
Item item = items.iterator().next();
ItemData item = items.iterator().next();
assertNotNull(item);
assertEquals("Gold", item.getName());
assertNull(item.getId());
assertEquals(1024, item.getBuyPrice());
assertEquals(1024, item.getSellOfferPrice());
assertEquals(7, item.getSupply());
assertNull(item.getSupplyLevel());
assertEquals(1138, item.getSellPrice());
assertEquals(1138, item.getBuyOfferPrice());
assertEquals(42, item.getDemand());
assertNull(item.getDemandLevel());
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getShips());
assertNull(station.getModules());
assertNull(item.getId());
assertNull(item.getGroup());
}
}
@@ -174,39 +215,52 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/commodity/2", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V2, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("abcdef0123456789", header.getUploaderId());
assertEquals("My Awesome Market Uploader", header.getSoftwareName());
assertEquals("v3.14", header.getSoftwareVersion());
assertNull(header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Eranin", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Eranin", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Azeban Orbital", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertEquals(LocalDateTime.of(2014, 11, 17, 12, 34, 56), station.getModifiedTime());
Collection<ItemData> items = station.getCommodities();
assertNotNull(items);
assertEquals(1, items.size());
for (Item item : items) {
for (ItemData item : items) {
assertNotNull(item);
assertEquals("Gold", item.getName());
assertNull(item.getId());
assertEquals(1024, item.getBuyPrice());
assertEquals(1024, item.getSellOfferPrice());
assertEquals(7, item.getSupply());
assertNull(item.getSupplyLevel());
assertEquals(1138, item.getSellPrice());
assertEquals(1138, item.getBuyOfferPrice());
assertEquals(42, item.getDemand());
assertNull(item.getDemandLevel());
assertNull(item.getId());
assertNull(item.getGroup());
}
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getShips());
assertNull(station.getModules());
}
}
@@ -226,7 +280,18 @@ public class ParserTest extends Assert {
try (InputStream is = getClass().getResourceAsStream("/emdn/v2e.json")) {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNull(message);
assertNotNull(message);
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Eranin", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Azeban Orbital", station.getName());
exception.expect(ImportDataError.class);
station.getCommodities();
}
}
@@ -263,33 +328,28 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/shipyard/1", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V1_SHIPYARD, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("Marek Ce'ex", header.getUploaderId());
assertEquals("E:D Market Connector [Mac OS]", header.getSoftwareName());
assertEquals("2.1.6.1", header.getSoftwareVersion());
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 53, 33, 930428000), header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 53, 25), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Venegana", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Venegana", data.getName());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Shull Ring", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertNotNull(items);
assertEquals(0, items.size());
Collection<Ship> ships = body.getShips();
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 53, 25), station.getModifiedTime());
Collection<ShipData> ships = station.getShips();
assertNotNull(ships);
assertEquals(8, ships.size());
int found = 0;
for (Ship ship : ships) {
for (ShipData ship : ships) {
assertNotNull(ship);
if ("Sidewinder".equals(ship.getName())){
found++;
@@ -303,6 +363,21 @@ public class ParserTest extends Assert {
}
}
assertEquals("Expected ships not found", 2, found);
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getCommodities());
assertNull(station.getModules());
}
}
@@ -315,33 +390,30 @@ public class ParserTest extends Assert {
String json = TestUtils.read(is);
Message message = parser.parse(json);
assertNotNull(message);
assertEquals("http://schemas.elite-markets.net/eddn/shipyard/2", message.getSchemaRef());
assertEquals(SUPPORT_VERSIONS.V2_SHIPYARD, message.getVersion());
Header header = message.getHeader();
assertNotNull(header);
assertEquals("Amadeus Sheperd", header.getUploaderId());
assertEquals("E:D Market Connector [Windows]", header.getSoftwareName());
assertEquals("2.1.7.2", header.getSoftwareVersion());
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 16, 12, 490637000), header.getGatewayTimestamp());
Body body = message.getBody();
assertNotNull(body);
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 15, 51), body.getTimestamp());
StarSystem system = body.getSystem();
assertNotNull(system);
assertEquals("Sothis", system.getName());
assertNull(system.getId());
assertNull(system.getAddress());
Station station = body.getStation();
StarSystemData data = message.getImportData();
assertNotNull(data);
assertEquals("Sothis", data.getName());
assertNull(data.getId());
Collection<StationData> stations = data.getStations();
assertNotNull(stations);
assertEquals(1, stations.size());
StationData station = stations.iterator().next();
assertNotNull(station);
assertEquals("Newholm Station", station.getName());
assertNull(station.getId());
Collection<Item> items = body.getCommodities();
assertNotNull(items);
assertEquals(0, items.size());
Collection<Ship> ships = body.getShips();
assertEquals(LocalDateTime.of(2016, 10, 5, 13, 15, 51), station.getModifiedTime());
Collection<ShipData> ships = station.getShips();
assertNotNull(ships);
assertEquals(5, ships.size());
int found = 0;
for (Ship ship : ships) {
for (ShipData ship : ships) {
assertNotNull(ship);
if ("SideWinder".equals(ship.getName())){
found++;
@@ -355,6 +427,21 @@ public class ParserTest extends Assert {
}
}
assertEquals("Expected ships not found", 2, found);
assertNull(data.getId());
assertNull(data.getFaction());
assertNull(data.getGovernment());
assertNull(data.getPower());
assertNull(data.getPowerState());
assertNull(station.getId());
assertNull(station.getType());
assertNull(station.getFaction());
assertNull(station.getGovernment());
assertNull(station.getEconomic());
assertNull(station.getSubEconomic());
assertNull(station.getServices());
assertNull(station.getCommodities());
assertNull(station.getModules());
}
}