Archived
0

improve maddavo parser

This commit is contained in:
iMoHax
2015-08-18 11:50:32 +03:00
parent 3b9bbd3fbe
commit aba19c6e59
2 changed files with 101 additions and 96 deletions

View File

@@ -8,93 +8,96 @@ public class ItemConverter {
static { static {
IDS.put("Explosives", "explosives"); IDS.put("explosives", "explosives");
IDS.put("Hydrogen Fuel", "hydrogenfuel"); IDS.put("hydrogen fuel", "hydrogenfuel");
IDS.put("Mineral Oil", "mineraloil"); IDS.put("mineral oil", "mineraloil");
IDS.put("Pesticides", "pesticides"); IDS.put("pesticides", "pesticides");
IDS.put("Clothing", "clothing"); IDS.put("clothing", "clothing");
IDS.put("Consumer Technology", "consumertechnology"); IDS.put("consumer technology", "consumertechnology");
IDS.put("Domestic Appliances", "domesticappliances"); IDS.put("domestic appliances", "domesticappliances");
IDS.put("Algae", "algae"); IDS.put("algae", "algae");
IDS.put("Animal Meat", "animalmeat"); IDS.put("animal meat", "animalmeat");
IDS.put("Coffee", "coffee"); IDS.put("coffee", "coffee");
IDS.put("Energy Drinks", "energydrinks"); IDS.put("energy drinks", "energydrinks");
IDS.put("Fish", "fish"); IDS.put("fish", "fish");
IDS.put("Food Cartridges", "foodcartridges"); IDS.put("food cartridges", "foodcartridges");
IDS.put("Fruit And Vegetables", "fruitandvegetables"); IDS.put("fruit and vegetables", "fruitandvegetables");
IDS.put("Grain", "grain"); IDS.put("grain", "grain");
IDS.put("Synthetic Meat", "syntheticmeat"); IDS.put("synthetic meat", "syntheticmeat");
IDS.put("Tea", "tea"); IDS.put("tea", "tea");
IDS.put("Polymers", "polymers"); IDS.put("polymers", "polymers");
IDS.put("Semiconductors", "semiconductors"); IDS.put("semiconductors", "semiconductors");
IDS.put("Superconductors", "superconductors"); IDS.put("superconductors", "superconductors");
IDS.put("Legal Drugs", "group.drugs"); IDS.put("beer", "beer");
IDS.put("Beer", "beer"); IDS.put("liquor", "liquor");
IDS.put("Liquor", "liquor"); IDS.put("narcotics", "basicnarcotics");
IDS.put("Narcotics", "basicnarcotics"); IDS.put("tobacco", "tobacco");
IDS.put("Tobacco", "tobacco"); IDS.put("wine", "wine");
IDS.put("Wine", "wine"); IDS.put("atmospheric processors", "atmosphericprocessors");
IDS.put("Atmospheric Processors", "atmosphericprocessors"); IDS.put("crop harvesters", "cropharvesters");
IDS.put("Crop Harvesters", "cropharvesters"); IDS.put("marine equipment", "marinesupplies");
IDS.put("Marine Equipment", "marinesupplies"); IDS.put("microbial furnaces", "microbialfurnaces");
IDS.put("Microbial Furnaces", "microbialfurnaces"); IDS.put("mineral extractors", "mineralextractors");
IDS.put("Mineral Extractors", "mineralextractors"); IDS.put("power generators", "powergenerators");
IDS.put("Power Generators", "powergenerators"); IDS.put("water purifiers", "waterpurifiers");
IDS.put("Water Purifiers", "waterpurifiers"); IDS.put("agri-medicines", "agriculturalmedicines");
IDS.put("Agri-Medicines", "agriculturalmedicines"); IDS.put("basic medicines", "basicmedicines");
IDS.put("Basic Medicines", "basicmedicines"); IDS.put("combat stabilisers", "combatstabilisers");
IDS.put("Combat Stabilisers", "combatstabilisers"); IDS.put("performance enhancers", "performanceenhancers");
IDS.put("Performance Enhancers", "performanceenhancers"); IDS.put("progenitor cells", "progenitorcells");
IDS.put("Progenitor Cells", "progenitorcells"); IDS.put("aluminium", "aluminium");
IDS.put("Aluminium", "aluminium"); IDS.put("beryllium", "beryllium");
IDS.put("Beryllium", "beryllium"); IDS.put("copper", "copper");
IDS.put("Copper", "copper"); IDS.put("cobalt", "cobalt");
IDS.put("Cobalt", "cobalt"); IDS.put("gallium", "gallium");
IDS.put("Gallium", "gallium"); IDS.put("gold", "gold");
IDS.put("Gold", "gold"); IDS.put("indium", "indium");
IDS.put("Indium", "indium"); IDS.put("lithium", "lithium");
IDS.put("Lithium", "lithium"); IDS.put("osmium", "osmium");
IDS.put("Palladium", "palladium"); IDS.put("palladium", "palladium");
IDS.put("Platinum", "platinum"); IDS.put("platinum", "platinum");
IDS.put("Tantalum", "tantalum"); IDS.put("tantalum", "tantalum");
IDS.put("Titanium", "titanium"); IDS.put("titanium", "titanium");
IDS.put("Silver", "silver"); IDS.put("silver", "silver");
IDS.put("Uranium", "uranium"); IDS.put("uranium", "uranium");
IDS.put("Minerals", "group.minerals"); IDS.put("minerals", "group.minerals");
IDS.put("Bauxite", "bauxite"); IDS.put("bauxite", "bauxite");
IDS.put("Bertrandite", "bertrandite"); IDS.put("bertrandite", "bertrandite");
IDS.put("Coltan", "coltan"); IDS.put("coltan", "coltan");
IDS.put("Gallite", "gallite"); IDS.put("gallite", "gallite");
IDS.put("Indite", "indite"); IDS.put("indite", "indite");
IDS.put("Lepidolite", "lepidolite"); IDS.put("lepidolite", "lepidolite");
IDS.put("Rutile", "rutile"); IDS.put("painite", "painite");
IDS.put("Uraninite", "uraninite"); IDS.put("rutile", "rutile");
IDS.put("Imperial Slaves", "imperialslaves"); IDS.put("uraninite", "uraninite");
IDS.put("Slaves", "slaves"); IDS.put("imperial slaves", "imperialslaves");
IDS.put("Advanced Catalysers", "advancedcatalysers"); IDS.put("slaves", "slaves");
IDS.put("Animal Monitors", "animalmonitors"); IDS.put("sap 8 core container", "sap8corecontainer");
IDS.put("Aquaponic Systems", "aquaponicsystems"); IDS.put("advanced catalysers", "advancedcatalysers");
IDS.put("Auto-Fabricators", "autofabricators"); IDS.put("animal monitors", "animalmonitors");
IDS.put("Bioreducing Lichen", "bioreducinglichen"); IDS.put("aquaponic systems", "aquaponicsystems");
IDS.put("Computer Components", "computercomponents"); IDS.put("auto-fabricators", "autofabricators");
IDS.put("H.E. Suits", "hazardousenvironmentsuits"); IDS.put("bioreducing lichen", "bioreducinglichen");
IDS.put("Resonating Separators", "resonatingseparators"); IDS.put("computer components", "computercomponents");
IDS.put("Robotics", "robotics"); IDS.put("h.e. suits", "hazardousenvironmentsuits");
IDS.put("Land Enrichment Systems", "landenrichmentsystems"); IDS.put("resonating separators", "resonatingseparators");
IDS.put("Leather", "leather"); IDS.put("robotics", "robotics");
IDS.put("Natural Fabrics", "naturalfabrics"); IDS.put("land enrichment systems", "landenrichmentsystems");
IDS.put("Synthetic Fabrics", "syntheticfabrics"); IDS.put("leather", "leather");
IDS.put("Biowaste", "biowaste"); IDS.put("natural fabrics", "naturalfabrics");
IDS.put("Chemical Waste", "chemicalwaste"); IDS.put("synthetic fabrics", "syntheticfabrics");
IDS.put("Scrap", "scrap"); IDS.put("biowaste", "biowaste");
IDS.put("Battle Weapons", "battleweapons"); IDS.put("chemical waste", "chemicalwaste");
IDS.put("Non-Lethal Weapons", "nonlethalweapons"); IDS.put("scrap", "scrap");
IDS.put("Personal Weapons", "personalweapons"); IDS.put("battle weapons", "battleweapons");
IDS.put("Reactive Armour", "reactivearmour"); IDS.put("non-lethal weapons", "nonlethalweapons");
IDS.put("personal weapons", "personalweapons");
IDS.put("reactive armour", "reactivearmour");
} }
public static String getItemId(String name){ public static String getItemId(String name){
name = name.toLowerCase();
String id = IDS.get(name); String id = IDS.get(name);
return id != null ? id : name; return id != null ? id : name.replace(" ","_");
} }
} }

View File

@@ -9,11 +9,13 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class OffersHandler implements ParseHandler { public class OffersHandler implements ParseHandler {
private final static Logger LOG = LoggerFactory.getLogger(OffersHandler.class); private final static Logger LOG = LoggerFactory.getLogger(OffersHandler.class);
private final Market market; private final Map<String, Item> items;
private final Map<String, Vendor> stations;
private final boolean withRemove; private final boolean withRemove;
private Vendor station; private Vendor station;
@@ -22,8 +24,13 @@ public class OffersHandler implements ParseHandler {
private final Map<Item, OfferData> buyUpdates = new HashMap<>(100, 0.9f); private final Map<Item, OfferData> buyUpdates = new HashMap<>(100, 0.9f);
protected OffersHandler(Market market, boolean withRemove) { protected OffersHandler(Market market, boolean withRemove) {
this.market = market;
this.withRemove = withRemove; this.withRemove = withRemove;
items = market.getItems().stream().collect(Collectors.toMap(Item::getName, i -> i));
stations = market.getVendors().stream().collect(Collectors.toMap(this::getStationId, s -> s));
}
private String getStationId(Vendor vendor){
return vendor.getPlace().getName()+"/"+vendor.getName();
} }
@Override @Override
@@ -106,15 +113,10 @@ public class OffersHandler implements ParseHandler {
name = sb.toString(); name = sb.toString();
LOG.trace("system: {}, station: {}", system, name); LOG.trace("system: {}, station: {}", system, name);
String id = system + "/" +name;
Place sys = market.get(system); station = stations.get(id);
if (sys != null){ if (station == null){
station = sys.get(name); LOG.warn("Station {} not found", id);
if (station == null){
LOG.warn("Station {} not found", name);
}
} else {
LOG.warn("System {} not found", system);
} }
} }
@@ -133,7 +135,7 @@ public class OffersHandler implements ParseHandler {
Double sell = getDoubleValue(matcher.group(3)); Double sell = getDoubleValue(matcher.group(3));
Long demand = getLongValue(matcher.group(4)); Long demand = getLongValue(matcher.group(4));
Long supply = getLongValue(matcher.group(6)); Long supply = getLongValue(matcher.group(6));
Item item = market.getItem(ItemConverter.getItemId(name)); Item item = items.get(ItemConverter.getItemId(name));
if (item != null){ if (item != null){
if (buy != null && buy > 0){ if (buy != null && buy > 0){
buyUpdates.put(item, new OfferData(buy, demand)); buyUpdates.put(item, new OfferData(buy, demand));