implement clear, export, import market
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user