use of fr.guiguilechat.jcelechat.model.sde.npcs.Corporation in project JCELechat by guiguilechat.
the class NPCsTranslater method main.
/**
* @param args
* should be [database destination root], typically
* src/generated/resources/
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
int parrallelism = Runtime.getRuntime().availableProcessors() * 100;
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "" + parrallelism);
long timeStart = System.currentTimeMillis();
File folderOut = new File(args.length == 0 ? "src/generated/resources/" : args[0]);
FileTools.delDir(folderOut);
folderOut.mkdirs();
LinkedHashMap<String, Agent> agents = new LinkedHashMap<>();
LinkedHashMap<String, Corporation> corporations = new LinkedHashMap<>();
LinkedHashMap<Integer, LPOffer> lpoffers = new LinkedHashMap<>();
translate(Eagents.load(), agents, corporations, lpoffers);
// sort
Stream.of(agents, corporations).forEach(m -> {
ArrayList<Entry<String, ?>> list = new ArrayList<>(m.entrySet());
Collections.sort(list, (e1, e2) -> e1.getKey().compareTo(e2.getKey()));
m.clear();
for (Entry<String, ?> e : list) {
((Map<String, Object>) m).put(e.getKey(), e.getValue());
}
});
ArrayList<Entry<Integer, LPOffer>> list = new ArrayList<>(lpoffers.entrySet());
Collections.sort(list, (e1, e2) -> e1.getKey().compareTo(e2.getKey()));
lpoffers.clear();
for (Entry<Integer, LPOffer> e : list) {
lpoffers.put(e.getKey(), e.getValue());
}
// save
Agent.export(agents, folderOut);
Corporation.export(corporations, folderOut);
LPOffer.export(lpoffers, folderOut);
logger.info("exported npcs in " + (System.currentTimeMillis() - timeStart) / 1000 + "s");
}
use of fr.guiguilechat.jcelechat.model.sde.npcs.Corporation in project JCELechat by guiguilechat.
the class NPCsTranslater method translate.
private static void translate(LinkedHashMap<Integer, Eagents> eagents, LinkedHashMap<String, Agent> agents, LinkedHashMap<String, Corporation> corporations, LinkedHashMap<Integer, LPOffer> offers) {
ESIAccess esi = ESIAccess.INSTANCE;
CacheStatic cache = ESIStatic.INSTANCE.cache();
// prefetch
MapHolder<Integer, R_get_corporations_corporation_id> corporationsHolder = ((ListHolder<Integer>) cache.corporations.npccorps().follow(l -> {
l.parallelStream().forEach(cache.corporations::get);
})).toMap(i -> i, i -> cache.corporations.get(i).get());
MapHolder<Integer, R_get_universe_factions> factionsHolder = cache.universe.factions().toMap(f -> f.faction_id);
eagents.values().parallelStream().map(ag -> ag.locationID).distinct().forEach(lid -> Location.resolve(null, lid).system());
//
LinkedHashMap<Integer, EnpcCorporations> ecorps = EnpcCorporations.load();
Map<Integer, String> idx2name = EinvNames.loadById();
Map<Integer, R_get_corporations_corporation_id> npcCorps = corporationsHolder.get();
Map<Integer, R_get_universe_factions> factionById = factionsHolder.get();
Map<Integer, Location> agentsLocation = eagents.entrySet().parallelStream().collect(Collectors.toMap(eag -> eag.getKey(), eag -> Location.resolve(null, eag.getValue().locationID)));
logger.info("NPC prefetch received");
for (Entry<Integer, Eagents> eagt : eagents.entrySet()) {
Agent agent = new Agent();
Eagents agt = eagt.getValue();
agent.id = eagt.getKey();
agent.corporation = ecorps.get(agt.corporationID).enName();
agent.name = idx2name.get(agent.id);
agent.isLocator = agt.isLocator;
agent.level = agt.level;
agent.type = AGENT_TYPE.of(agt.agentTypeID);
if (agent.type == null) {
logger.warn("no type for agent " + agent.name + " typeID=" + agt.agentTypeID);
}
agent.division = AGENT_DIVISION.of(agt.divisionID);
if (agent.division == null) {
logger.warn("no division for agent " + agent.name + " divisionID=" + agt.divisionID);
}
Location loc = agentsLocation.get(agent.id);
if (loc != null) {
agent.system = loc.system().name;
R_get_universe_stations_station_id station = loc.station();
if (station != null) {
agent.station = station.name;
agent.stationId = agt.locationID;
}
agents.put(agent.name, agent);
} else {
logger.warn("invalid location for agent " + agent.name + " locid=" + agt.locationID);
}
}
logger.info("translated agents data");
for (Entry<Integer, EnpcCorporations> e : ecorps.entrySet()) {
Corporation add = new Corporation();
add.id = e.getKey();
EnpcCorporations snpc = e.getValue();
add.name = snpc.enName();
R_get_universe_factions faction = factionById.get(snpc.factionID);
if (faction == null) {
logger.debug("can't find faction from id " + snpc.factionID + " for corporation " + add.name);
} else {
add.faction = faction.name;
}
R_get_corporations_corporation_id esicorp = npcCorps.get(add.id);
if (esicorp != null && esicorp.faction_id != 0) {
add.warfare = factionById.get(esicorp.faction_id).name;
}
add.concordRate = EnpcCorporations.concordRates().getOrDefault(add.id, 0.0);
if (add.id == EnpcCorporations.CONCORD_ID) {
add.concordRate = 1.0;
}
corporations.put(add.name, add);
}
Map<Integer, LPOffer> covertedOffers = corporations.values().stream().parallel().flatMap(c -> {
Requested<R_get_loyalty_stores_corporation_id_offers[]> req = esi.connection.get_loyalty_stores_offers(c.id, null);
return req.isOk() ? Stream.of(req.getOK()) : Stream.empty();
}).map(offer -> makeOffer(offer)).filter(o -> o != null).collect(Collectors.toMap(off -> off.id, off -> off, (o1, o2) -> o1));
offers.putAll(covertedOffers);
corporations.values().stream().parallel().forEach(c -> loadCorpOffers(c, esi.connection, offers));
}
use of fr.guiguilechat.jcelechat.model.sde.npcs.Corporation in project JCELechat by guiguilechat.
the class ShowDEDLPs method main.
public static void main(String[] args) {
int dedid = 1000137;
System.out.println("name\tLP\tisk\titems\tIPL0\tIPL50k\tIPL1M");
RegionalMarket theforge = ESIAccess.INSTANCE.markets.getMarket(10000002);
for (Corporation corp : Corporation.load().values()) {
if (corp.id == dedid) {
for (Integer offerid : corp.lpoffers) {
LPOffer offer = LPOffer.of(offerid);
System.out.println(offer.name + "\t" + JFXTools.formatPrice(offer.requirements.lp) + "\t" + JFXTools.formatPrice(offer.requirements.isk) + "\t" + offer.requirements.items.stream().collect(Collectors.toMap(e -> e.type().name, e -> e.quantity)) + "\t" + JFXTools.formatPrice(iplp(offer, theforge, 0)) + "\t" + JFXTools.formatPrice(iplp(offer, theforge, 50000)) + "\t" + JFXTools.formatPrice(iplp(offer, theforge, 1000000)));
}
}
}
}
Aggregations