Archived
0

edit parameters on import market if entry already exists

This commit is contained in:
iMoHax
2015-02-22 11:18:32 +03:00
parent ba427826fc
commit d7e7220bb5

View File

@@ -22,6 +22,10 @@ public interface Market {
void add(Item item); void add(Item item);
Item addItem(String name, Group group); Item addItem(String name, Group group);
void remove(Item item); void remove(Item item);
default Item getItem(String name){
Optional<Item> item = getItems().stream().filter(i -> name.equals(i.getName())).findFirst();
return item.isPresent() ? item.get() : null;
}
Collection<Place> get(); Collection<Place> get();
default Collection<Vendor> getVendors(){ default Collection<Vendor> getVendors(){
@@ -73,26 +77,49 @@ public interface Market {
Collection<Item> items = market.getItems(); Collection<Item> items = market.getItems();
HashMap<Item, Item> mapItems = new HashMap<>(items.size(), 0.9f); HashMap<Item, Item> mapItems = new HashMap<>(items.size(), 0.9f);
for (Item item : items) { for (Item item : items) {
Item nItem = this.addItem(item.getName(), mapGroups.get(item.getGroup())); Item nItem = getItem(item.getName());
if (nItem == null) nItem = this.addItem(item.getName(), mapGroups.get(item.getGroup()));
mapItems.put(item, nItem); mapItems.put(item, nItem);
} }
mapGroups.clear(); mapGroups.clear();
// add places and vendors // add places and vendors
for (Place place : market.get()) { for (Place place : market.get()) {
Place nPlace = this.addPlace(place.getName(), place.getX(), place.getY(), place.getZ()); Place nPlace = get(place.getName());
if (nPlace == null){
nPlace = this.addPlace(place.getName(), place.getX(), place.getY(), place.getZ());
} else {
nPlace.setPosition(place.getX(), place.getY(), place.getZ());
}
for (Vendor vendor : place.get()) { for (Vendor vendor : place.get()) {
Vendor nVendor = nPlace.addVendor(vendor.getName()); Vendor nVendor = nPlace.get(vendor.getName());
nVendor.setDistance(vendor.getDistance()); if (nVendor == null){
// add services nVendor = nPlace.addVendor(vendor.getName());
for (SERVICE_TYPE service : vendor.getServices()) { // add services
nVendor.add(service); for (SERVICE_TYPE service : vendor.getServices()) {
nVendor.add(service);
}
}
if (vendor.getDistance() > 0){
nVendor.setDistance(vendor.getDistance());
} }
// add offers // add offers
for (Offer offer : vendor.getAllBuyOffers()) { for (Offer offer : vendor.getAllBuyOffers()) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount()); Offer nOffer = nVendor.get(offer.getType(), mapItems.get(offer.getItem()));
if (nOffer == null) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount());
} else {
nOffer.setPrice(offer.getPrice());
nOffer.setCount(offer.getCount());
}
} }
for (Offer offer : vendor.getAllSellOffers()) { for (Offer offer : vendor.getAllSellOffers()) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount()); Offer nOffer = nVendor.get(offer.getType(), mapItems.get(offer.getItem()));
if (nOffer == null) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount());
} else {
nOffer.setPrice(offer.getPrice());
nOffer.setCount(offer.getCount());
}
} }
} }
} }