Archived
0

Merge branch 'master' into PPextend

This commit is contained in:
Mo
2016-11-03 18:41:58 +03:00
7 changed files with 14199 additions and 45 deletions

View File

@@ -7,6 +7,7 @@ import ru.trader.emdn.EMDN;
import ru.trader.emdn.entities.Message;
import ru.trader.model.*;
import ru.trader.model.support.StationUpdater;
import ru.trader.store.imp.ItemCorrector;
import ru.trader.store.imp.entities.ItemData;
import ru.trader.store.imp.entities.StarSystemData;
import ru.trader.store.imp.entities.StationData;
@@ -79,7 +80,7 @@ public class EMDNUpdater {
if (commodities == null) return;
updater.edit(station);
for (ItemData commodity : commodities) {
String id = commodity.getName().toLowerCase().replace(" ","_");
String id = ItemCorrector.getItemId(commodity.getName());
Optional<ItemModel> item = world.getItem(id);
if (item.isPresent()) {
Optional<StationUpdater.FakeOffer> offer = updater.getOffer(item.get());

View File

@@ -6,7 +6,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.io.IOException;
import java.time.LocalDateTime;
@@ -33,7 +35,7 @@ public class EMDNParser {
String schema = node.get("$schemaRef").asText("");
SUPPORT_VERSIONS version = SUPPORT_VERSIONS.getVersion(schema);
if (version == null){
LOG.warn("Unknown EDDN message schema {}", schema);
LOG.trace("Unknown EDDN message schema {}", schema);
return null;
}
return parse(node, version);

View File

@@ -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");

View File

@@ -3,6 +3,7 @@ package ru.trader.maddavo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.*;
import ru.trader.store.imp.ItemCorrector;
import java.io.IOException;
import java.util.HashMap;
@@ -135,7 +136,7 @@ public class OffersHandler implements ParseHandler {
Double sell = getDoubleValue(matcher.group(3));
Long demand = getLongValue(matcher.group(4));
Long supply = getLongValue(matcher.group(6));
Item item = items.get(ItemConverter.getItemId(name));
Item item = items.get(ItemCorrector.getItemId(name));
if (item != null){
if (buy != null && buy > 0){
buyUpdates.put(item, new OfferData(buy, demand));

View File

@@ -1,9 +1,9 @@
package ru.trader.maddavo;
package ru.trader.store.imp;
import java.util.HashMap;
import java.util.Map;
public class ItemConverter {
public class ItemCorrector {
private final static Map<String, String> IDS = new HashMap<>(85, 0.9f);
@@ -38,20 +38,25 @@ public class ItemConverter {
IDS.put("bootleg liquor", "bootleg_liquor");
IDS.put("liquor", "liquor");
IDS.put("narcotics", "basicnarcotics");
IDS.put("basic narcotics", "basicnarcotics");
IDS.put("tobacco", "tobacco");
IDS.put("wine", "wine");
IDS.put("atmospheric processors", "atmosphericprocessors");
IDS.put("atmospheric extractors", "atmosphericprocessors");
IDS.put("building fabricators", "building_fabricators");
IDS.put("crop harvesters", "cropharvesters");
IDS.put("geological equipment", "geological_equipment");
IDS.put("marine equipment", "marinesupplies");
IDS.put("marine supplies", "marinesupplies");
IDS.put("microbial furnaces", "microbialfurnaces");
IDS.put("heliostatic furnaces", "microbialfurnaces");
IDS.put("mineral extractors", "mineralextractors");
IDS.put("power generators", "powergenerators");
IDS.put("skimmer components", "skimer_components");
IDS.put("thermal cooling units", "thermal_cooling_units");
IDS.put("water purifiers", "waterpurifiers");
IDS.put("agri-medicines", "agriculturalmedicines");
IDS.put("agricultural medicines", "agriculturalmedicines");
IDS.put("basic medicines", "basicmedicines");
IDS.put("combat stabilisers", "combatstabilisers");
IDS.put("performance enhancers", "performanceenhancers");
@@ -108,10 +113,14 @@ public class ItemConverter {
IDS.put("animal monitors", "animalmonitors");
IDS.put("aquaponic systems", "aquaponicsystems");
IDS.put("auto-fabricators", "autofabricators");
IDS.put("auto fabricators", "autofabricators");
IDS.put("bioreducing lichen", "bioreducinglichen");
IDS.put("bio reducing lichen", "bioreducinglichen");
IDS.put("computer components", "computercomponents");
IDS.put("h.e. suits", "hazardousenvironmentsuits");
IDS.put("hazardous environment suits", "hazardousenvironmentsuits");
IDS.put("land enrichment systems", "landenrichmentsystems");
IDS.put("terrain enrichment systems", "landenrichmentsystems");
IDS.put("muon imager", "mu_tom_imager");
IDS.put("resonating separators", "resonatingseparators");
IDS.put("robotics", "robotics");
@@ -125,46 +134,49 @@ public class ItemConverter {
IDS.put("battle weapons", "battleweapons");
IDS.put("landmines", "landmines");
IDS.put("non-lethal weapons", "nonlethalweapons");
IDS.put("non lethal weapons", "nonlethalweapons");
IDS.put("personal weapons", "personalweapons");
IDS.put("reactive armour", "reactivearmour");
IDS.put("Hydrogen Peroxide", "hydrogen_peroxide");
IDS.put("Liquid Oxygen", "liquid_oxygen");
IDS.put("Water", "water");
IDS.put("Survival Equipment", "survival_equipment");
IDS.put("CMM Composite", "cmm_composite");
IDS.put("Insulating Membrane", "insulating_membrane");
IDS.put("Emergency Power Cells", "emergency_power_cells");
IDS.put("Exhaust Manifold", "exhaust_manifold");
IDS.put("HN Shock Mount", "hn_shock_mount");
IDS.put("Advanced Medicines", "advanced_medicines");
IDS.put("Praseodymium", "praseodymium");
IDS.put("Samarium", "samarium");
IDS.put("Low Temperature Diamond", "low_temperature_diamond");
IDS.put("Micro Controllers", "micro_controllers");
IDS.put("Conductive Fabrics", "conductive_fabrics");
IDS.put("Lithium Hydroxide", "lithium_hydroxide");
IDS.put("Methane Clathrate", "methane_clathrate");
IDS.put("Military Grade Fabrics", "military_grade_fabrics");
IDS.put("Heatsink Interlink", "heatsink_interlink");
IDS.put("Magnetic Emitter Coil", "magnetic_emitter_coil");
IDS.put("Power Converter", "power_converter");
IDS.put("Energy Grid Assembly", "power_grid_assembly");
IDS.put("Bromellite", "bromellite");
IDS.put("Methanol Monohydrate", "methanol_monohydrate_crystals");
IDS.put("Hardware Diagnostic Sensor", "diagnostic_sensor");
IDS.put("Medical Diagnostic Equipment", "medical_diagnostic_equipment");
IDS.put("Reinforced Mounting Plate", "reinforced_mounting_plate");
IDS.put("Articulation Motors", "articulation_motors");
IDS.put("Modular Terminals", "modular_terminals");
IDS.put("Power Transfer Conduits", "power_transfer_conduits");
IDS.put("Radiation Baffle", "radiation_baffle");
IDS.put("Ion Distributor", "ion_distributor");
IDS.put("Nanobreakers", "nanobreakers");
IDS.put("Telemetry Suite", "telemetry_suite");
IDS.put("Jadeite", "jadeite");
IDS.put("Moissanite", "moissanite");
IDS.put("Taaffeite", "taaffeite");
IDS.put("hydrogen peroxide", "hydrogen_peroxide");
IDS.put("liquid oxygen", "liquid_oxygen");
IDS.put("water", "water");
IDS.put("survival equipment", "survival_equipment");
IDS.put("cmm composite", "cmm_composite");
IDS.put("c m m composite", "cmm_composite");
IDS.put("insulating membrane", "insulating_membrane");
IDS.put("emergency power cells", "emergency_power_cells");
IDS.put("exhaust manifold", "exhaust_manifold");
IDS.put("hn shock mount", "hn_shock_mount");
IDS.put("h n shock mount", "hn_shock_mount");
IDS.put("advanced medicines", "advanced_medicines");
IDS.put("praseodymium", "praseodymium");
IDS.put("samarium", "samarium");
IDS.put("low temperature diamond", "low_temperature_diamond");
IDS.put("micro controllers", "micro_controllers");
IDS.put("conductive fabrics", "conductive_fabrics");
IDS.put("lithium hydroxide", "lithium_hydroxide");
IDS.put("methane clathrate", "methane_clathrate");
IDS.put("military grade fabrics", "military_grade_fabrics");
IDS.put("heatsink interlink", "heatsink_interlink");
IDS.put("magnetic emitter coil", "magnetic_emitter_coil");
IDS.put("power converter", "power_converter");
IDS.put("energy grid assembly", "power_grid_assembly");
IDS.put("bromellite", "bromellite");
IDS.put("methanol monohydrate", "methanol_monohydrate_crystals");
IDS.put("hardware diagnostic sensor", "diagnostic_sensor");
IDS.put("medical diagnostic equipment", "medical_diagnostic_equipment");
IDS.put("reinforced mounting plate", "reinforced_mounting_plate");
IDS.put("articulation motors", "articulation_motors");
IDS.put("modular terminals", "modular_terminals");
IDS.put("power transfer conduits", "power_transfer_conduits");
IDS.put("radiation baffle", "radiation_baffle");
IDS.put("ion distributor", "ion_distributor");
IDS.put("nanobreakers", "nanobreakers");
IDS.put("telemetry suite", "telemetry_suite");
IDS.put("jadeite", "jadeite");
IDS.put("moissanite", "moissanite");
IDS.put("taaffeite", "taaffeite");
}
public static String getItemId(String name){

View File

@@ -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

File diff suppressed because it is too large Load Diff