Archived
0

implement clear, export, import market

This commit is contained in:
iMoHax
2015-01-14 14:03:28 +03:00
parent ed39bc7de9
commit 42a823bd95
13 changed files with 256 additions and 5 deletions

View File

@@ -1,6 +1,8 @@
package ru.trader.core;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Optional;
public interface Market {
@@ -51,4 +53,98 @@ public interface Market {
default Collection<Offer> getBuy(Item item){
return getStatBuy(item).getOffers();
}
default void add(Market market){
// add groups
Collection<Group> groups = market.getGroups();
HashMap<Group, Group> mapGroups = new HashMap<>(groups.size(), 0.9f);
for (Group group : groups) {
Group nGroup = this.addGroup(group.getName(), group.getType());
mapGroups.put(group, nGroup);
}
// add items
Collection<Item> items = market.getItems();
HashMap<Item, Item> mapItems = new HashMap<>(items.size(), 0.9f);
for (Item item : items) {
Item nItem = this.addItem(item.getName(), mapGroups.get(item.getGroup()));
mapItems.put(item, nItem);
}
mapGroups.clear();
// add places and vendors
for (Place place : market.get()) {
Place nPlace = this.addPlace(place.getName(), place.getX(), place.getY(), place.getZ());
for (Vendor vendor : place.get()) {
Vendor nVendor = nPlace.addVendor(vendor.getName());
nVendor.setDistance(vendor.getDistance());
// add services
for (SERVICE_TYPE service : vendor.getServices()) {
nVendor.add(service);
}
// add offers
for (Offer offer : vendor.getAllBuyOffers()) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount());
}
for (Offer offer : vendor.getAllSellOffers()) {
nVendor.addOffer(offer.getType(), mapItems.get(offer.getItem()), offer.getPrice(), offer.getCount());
}
}
}
}
default void clear(){
clear(true, true, true, true, true);
}
default void clearGroups(){
clear(true, false, false, true, true);
}
default void clearItems(){
clear(true, false, false, true, false);
}
default void clearPlaces(){
clear(false, false, true, false, false);
}
default void clearVendors(){
clear(false, true, false, false, false);
}
default void clearOffers(){
clear(true, false, false, false, false);
}
default void clear(boolean offers, boolean vendors, boolean places, boolean items, boolean groups){
if (places){
Collection<Place> p = new ArrayList<>(get());
for (Place place : p) {
remove(place);
}
} else {
if (vendors || offers){
for (Place place : get()) {
if (vendors) {
place.clear();
} else {
place.clearOffers();
}
}
}
}
if (items){
Collection<Item> i = new ArrayList<>(getItems());
for (Item item : i) {
remove(item);
}
}
if (groups){
Collection<Group> g = new ArrayList<>(getGroups());
for (Group group : g) {
remove(group);
}
}
}
}

View File

@@ -2,6 +2,7 @@ package ru.trader.core;
import ru.trader.graph.Connectable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
@@ -46,4 +47,16 @@ public interface Place extends Connectable<Place> {
return Math.sqrt(Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2) + Math.pow(z - getZ(), 2));
}
default void clear(){
Collection<Vendor> vendors = new ArrayList<>(get());
for (Vendor vendor : vendors) {
remove(vendor);
}
}
default void clearOffers(){
for (Vendor vendor : get()) {
vendor.clear();
}
}
}

View File

@@ -1,6 +1,8 @@
package ru.trader.core;
import ru.trader.graph.Connectable;
import java.util.ArrayList;
import java.util.Collection;
public interface Vendor extends Connectable<Vendor> {
@@ -65,4 +67,12 @@ public interface Vendor extends Connectable<Vendor> {
default boolean canRefill(){
return getPlace().canRefill();
}
default void clear(){
Collection<Offer> offers = new ArrayList<>(getAllSellOffers());
offers.addAll(getAllBuyOffers());
for (Offer offer : offers) {
remove(offer);
}
}
}