add new fields to store
- add Power and Power state to the place - add Station type and Economic type to the vendor - add Modify time to the vendor - add illegal Factions and Governments for items
This commit is contained in:
@@ -3,6 +3,7 @@ package ru.trader.analysis;
|
||||
import ru.trader.analysis.graph.Connectable;
|
||||
import ru.trader.core.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -65,6 +66,46 @@ public class FilteredVendor implements Vendor {
|
||||
vendor.setGovernment(government);
|
||||
}
|
||||
|
||||
@Override
|
||||
public STATION_TYPE getType() {
|
||||
return vendor.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(STATION_TYPE type) {
|
||||
vendor.setType(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return vendor.getEconomic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEconomic(ECONOMIC_TYPE economic) {
|
||||
vendor.setEconomic(economic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return vendor.getSubEconomic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubEconomic(ECONOMIC_TYPE economic) {
|
||||
vendor.setSubEconomic(economic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime getModifiedTime() {
|
||||
return vendor.getModifiedTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModifiedTime(LocalDateTime time) {
|
||||
vendor.setModifiedTime(time);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(SERVICE_TYPE service) {
|
||||
vendor.add(service);
|
||||
|
||||
@@ -2,6 +2,7 @@ package ru.trader.core;
|
||||
|
||||
import ru.trader.analysis.graph.Connectable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -95,6 +96,21 @@ public abstract class AbstractItemStat implements ItemStat {
|
||||
throw new UnsupportedOperationException("Is fake place, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER getPower() {
|
||||
return POWER.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER_STATE getPowerState() {
|
||||
return POWER_STATE.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(POWER power, POWER_STATE state) {
|
||||
throw new UnsupportedOperationException("Is fake place, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getX() {
|
||||
return 0;
|
||||
@@ -172,6 +188,46 @@ public abstract class AbstractItemStat implements ItemStat {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public STATION_TYPE getType() {
|
||||
return STATION_TYPE.STARPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(STATION_TYPE type) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return ECONOMIC_TYPE.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEconomic(ECONOMIC_TYPE economic) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return ECONOMIC_TYPE.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubEconomic(ECONOMIC_TYPE economic) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime getModifiedTime() {
|
||||
return LocalDateTime.now();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModifiedTime(LocalDateTime time) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Place getPlace() {
|
||||
return FAKE_PLACE;
|
||||
|
||||
@@ -122,18 +122,6 @@ public abstract class AbstractMarket implements Market {
|
||||
place.updatePosition(x, y, z);
|
||||
}
|
||||
|
||||
protected void updateName(AbstractVendor vendor, String name){
|
||||
vendor.updateName(name);
|
||||
}
|
||||
|
||||
protected void updateFaction(AbstractVendor vendor, FACTION faction){
|
||||
vendor.updateFaction(faction);
|
||||
}
|
||||
|
||||
protected void updateGovernment(AbstractVendor vendor, GOVERNMENT government){
|
||||
vendor.updateGovernment(government);
|
||||
}
|
||||
|
||||
protected void updatePrice(AbstractOffer offer, double price){
|
||||
ItemStat itemStat = getStat(offer);
|
||||
if (itemStat instanceof AbstractItemStat){
|
||||
|
||||
@@ -15,6 +15,7 @@ public abstract class AbstractPlace implements Place {
|
||||
protected abstract void updateName(String name);
|
||||
protected abstract void updateFaction(FACTION faction);
|
||||
protected abstract void updateGovernment(GOVERNMENT government);
|
||||
protected abstract void updatePower(POWER power, POWER_STATE state);
|
||||
protected abstract void updatePosition(double x, double y, double z);
|
||||
protected abstract void addVendor(Vendor vendor);
|
||||
protected abstract void removeVendor(Vendor vendor);
|
||||
@@ -72,6 +73,16 @@ public abstract class AbstractPlace implements Place {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setPower(POWER power, POWER_STATE state){
|
||||
if (market != null){
|
||||
LOG.debug("Change power of place {} to {} of {}", this, state, power);
|
||||
updatePower(power, state);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updatePower(power, state);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void add(Vendor vendor) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.trader.analysis.graph.Connectable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class AbstractVendor implements Vendor {
|
||||
@@ -14,11 +15,15 @@ public abstract class AbstractVendor implements Vendor {
|
||||
protected abstract void updateName(String name);
|
||||
protected abstract void updateFaction(FACTION faction);
|
||||
protected abstract void updateGovernment(GOVERNMENT government);
|
||||
protected abstract void updateType(STATION_TYPE type);
|
||||
protected abstract void updateEconomic(ECONOMIC_TYPE economic);
|
||||
protected abstract void updateSubEconomic(ECONOMIC_TYPE economic);
|
||||
protected abstract void updateDistance(double distance);
|
||||
protected abstract void addService(SERVICE_TYPE service);
|
||||
protected abstract void removeService(SERVICE_TYPE service);
|
||||
protected abstract void addOffer(Offer offer);
|
||||
protected abstract void removeOffer(Offer offer);
|
||||
protected abstract void updateModifiedTime(LocalDateTime time);
|
||||
|
||||
protected AbstractMarket getMarket(){
|
||||
Place place = getPlace();
|
||||
@@ -30,85 +35,75 @@ public abstract class AbstractVendor implements Vendor {
|
||||
|
||||
@Override
|
||||
public final void setName(String name) {
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.debug("Change name of vendor {} to {}", this, name);
|
||||
market.updateName(this, name);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateName(name);
|
||||
}
|
||||
LOG.trace("Change name of vendor {} to {}", this, name);
|
||||
updateName(name);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setFaction(FACTION faction){
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.debug("Change faction of vendor {} to {}", this, faction);
|
||||
market.updateFaction(this, faction);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateFaction(faction);
|
||||
}
|
||||
LOG.trace("Change faction of vendor {} to {}", this, faction);
|
||||
updateFaction(faction);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setGovernment(GOVERNMENT government){
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.debug("Change government of vendor {} to {}", this, government);
|
||||
market.updateGovernment(this, government);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateGovernment(government);
|
||||
}
|
||||
LOG.trace("Change government of vendor {} to {}", this, government);
|
||||
updateGovernment(government);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setType(STATION_TYPE type){
|
||||
LOG.trace("Change type of vendor {} to {}", this, type);
|
||||
updateType(type);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setEconomic(ECONOMIC_TYPE economic) {
|
||||
LOG.trace("Change economic of vendor {} to {}", this, economic);
|
||||
updateEconomic(economic);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setSubEconomic(ECONOMIC_TYPE economic){
|
||||
LOG.trace("Change sub economic of vendor {} to {}", this, economic);
|
||||
updateSubEconomic(economic);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setDistance(double distance) {
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.debug("Change distance of vendor {} to {}", this, distance);
|
||||
updateDistance(distance);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateDistance(distance);
|
||||
}
|
||||
LOG.trace("Change distance of vendor {} to {}", this, distance);
|
||||
updateDistance(distance);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void add(SERVICE_TYPE service) {
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.trace("Add service {} to vendor {}", service, this);
|
||||
addService(service);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
addService(service);
|
||||
}
|
||||
LOG.trace("Add service {} to vendor {}", service, this);
|
||||
addService(service);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void remove(SERVICE_TYPE service) {
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.trace("Remove offer {} from vendor {}", service, this);
|
||||
removeService(service);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
removeService(service);
|
||||
}
|
||||
LOG.trace("Remove offer {} from vendor {}", service, this);
|
||||
removeService(service);
|
||||
changed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void add(Offer offer){
|
||||
LOG.trace("Add offer {} to vendor {}", offer, this);
|
||||
addOffer(offer);
|
||||
changed();
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.trace("Add offer {} to vendor {}", offer, this);
|
||||
addOffer(offer);
|
||||
market.setChange(true);
|
||||
market.onAdd(offer);
|
||||
} else {
|
||||
addOffer(offer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,14 +116,30 @@ public abstract class AbstractVendor implements Vendor {
|
||||
|
||||
public final void remove(Offer offer){
|
||||
assert this.equals(offer.getVendor());
|
||||
LOG.trace("Remove offer {} from vendor {}", offer, this);
|
||||
removeOffer(offer);
|
||||
changed();
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
LOG.trace("Remove offer {} from vendor {}", offer, this);
|
||||
removeOffer(offer);
|
||||
market.setChange(true);
|
||||
market.onRemove(offer);
|
||||
} else {
|
||||
removeOffer(offer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setModifiedTime(LocalDateTime time) {
|
||||
LOG.trace("Change modified time of vendor {} to {}", this, time);
|
||||
changed(time);
|
||||
}
|
||||
|
||||
private void changed(){
|
||||
changed(LocalDateTime.now());
|
||||
}
|
||||
|
||||
private void changed(LocalDateTime time) {
|
||||
updateModifiedTime(time);
|
||||
AbstractMarket market = getMarket();
|
||||
if (market != null){
|
||||
market.setChange(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
15
core/src/main/java/ru/trader/core/ECONOMIC_TYPE.java
Normal file
15
core/src/main/java/ru/trader/core/ECONOMIC_TYPE.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package ru.trader.core;
|
||||
|
||||
public enum ECONOMIC_TYPE {
|
||||
AGRICULTURE,
|
||||
EXTRACTION,
|
||||
HIGH_TECH,
|
||||
INDUSTRIAL,
|
||||
MILITARY,
|
||||
REFINERY,
|
||||
SERVICE,
|
||||
TERRAFORMING,
|
||||
TOURISM,
|
||||
COLONY,
|
||||
NONE
|
||||
}
|
||||
15
core/src/main/java/ru/trader/core/POWER.java
Normal file
15
core/src/main/java/ru/trader/core/POWER.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package ru.trader.core;
|
||||
|
||||
public enum POWER {
|
||||
DUVAL,
|
||||
DELAINE,
|
||||
LAVIGNY_DUVAL,
|
||||
PATREUS,
|
||||
MAHON,
|
||||
WINTERS,
|
||||
YONG_RUI,
|
||||
ANTAL,
|
||||
HUDSON,
|
||||
TORVAL,
|
||||
NONE
|
||||
}
|
||||
5
core/src/main/java/ru/trader/core/POWER_STATE.java
Normal file
5
core/src/main/java/ru/trader/core/POWER_STATE.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package ru.trader.core;
|
||||
|
||||
public enum POWER_STATE {
|
||||
CONTROL, EXPLOITED, EXPANSION, NONE
|
||||
}
|
||||
@@ -23,6 +23,10 @@ public interface Place extends Connectable<Place> {
|
||||
GOVERNMENT getGovernment();
|
||||
void setGovernment(GOVERNMENT government);
|
||||
|
||||
POWER getPower();
|
||||
POWER_STATE getPowerState();
|
||||
void setPower(POWER power, POWER_STATE state);
|
||||
|
||||
Collection<Vendor> get();
|
||||
default Collection<Vendor> get(boolean withTransit){
|
||||
if (withTransit){
|
||||
|
||||
38
core/src/main/java/ru/trader/core/STATION_TYPE.java
Normal file
38
core/src/main/java/ru/trader/core/STATION_TYPE.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package ru.trader.core;
|
||||
|
||||
public enum STATION_TYPE {
|
||||
STARPORT(true, false),
|
||||
CORIOLIS_STARPORT(true, false),
|
||||
OCELLUS_STARPORT(true, false),
|
||||
ORBIS_STARPORT(true, false),
|
||||
OUTPOST,
|
||||
CIVILIAN_OUTPOST,
|
||||
COMMERCIAL_OUTPOST,
|
||||
INDUSTRIAL_OUTPOST,
|
||||
MILITARY_OUTPOST,
|
||||
MINING_OUTPOST,
|
||||
SCIENTIFIC_OUTPOST,
|
||||
UNSANCTIONED_OUTPOST,
|
||||
PLANETARY_PORT(true, true),
|
||||
PLANETARY_OUTPOST(true, true);
|
||||
|
||||
private final boolean largeLandpad;
|
||||
private final boolean planetary;
|
||||
|
||||
STATION_TYPE() {
|
||||
this(false, false);
|
||||
}
|
||||
|
||||
STATION_TYPE(boolean largeLandpad, boolean planetary) {
|
||||
this.largeLandpad = largeLandpad;
|
||||
this.planetary = planetary;
|
||||
}
|
||||
|
||||
public boolean hasLargeLandpad() {
|
||||
return largeLandpad;
|
||||
}
|
||||
|
||||
public boolean isPlanetary() {
|
||||
return planetary;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package ru.trader.core;
|
||||
|
||||
import ru.trader.analysis.graph.Connectable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -42,6 +43,46 @@ public class TransitVendor implements Vendor {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public STATION_TYPE getType() {
|
||||
return STATION_TYPE.STARPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(STATION_TYPE government) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return ECONOMIC_TYPE.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEconomic(ECONOMIC_TYPE government) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return ECONOMIC_TYPE.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubEconomic(ECONOMIC_TYPE government) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime getModifiedTime() {
|
||||
return LocalDateTime.now();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModifiedTime(LocalDateTime time) {
|
||||
throw new UnsupportedOperationException("Is fake vendor, change unsupported");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Place getPlace() {
|
||||
return place;
|
||||
|
||||
@@ -2,6 +2,7 @@ package ru.trader.core;
|
||||
|
||||
import ru.trader.analysis.graph.Connectable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -30,6 +31,18 @@ public interface Vendor extends Connectable<Vendor> {
|
||||
boolean has(SERVICE_TYPE service);
|
||||
Collection<SERVICE_TYPE> getServices();
|
||||
|
||||
STATION_TYPE getType();
|
||||
void setType(STATION_TYPE type);
|
||||
|
||||
ECONOMIC_TYPE getEconomic();
|
||||
void setEconomic(ECONOMIC_TYPE economic);
|
||||
|
||||
ECONOMIC_TYPE getSubEconomic();
|
||||
void setSubEconomic(ECONOMIC_TYPE economic);
|
||||
|
||||
LocalDateTime getModifiedTime();
|
||||
void setModifiedTime(LocalDateTime time);
|
||||
|
||||
void add(Offer offer);
|
||||
Offer addOffer(OFFER_TYPE type, Item item, double price, long count);
|
||||
void remove(Offer offer);
|
||||
|
||||
@@ -56,6 +56,12 @@ public class PlaceProxy extends AbstractPlace {
|
||||
store.getPlaceAccessor().update(place);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updatePower(POWER power, POWER_STATE state) {
|
||||
place.setPower(power, state);
|
||||
store.getPlaceAccessor().update(place);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updatePosition(double x, double y, double z) {
|
||||
place.setPosition(x, y, z);
|
||||
@@ -101,6 +107,16 @@ public class PlaceProxy extends AbstractPlace {
|
||||
return place.getGovernment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER getPower() {
|
||||
return place.getPower();
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER_STATE getPowerState() {
|
||||
return place.getPowerState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getX() {
|
||||
return place.getX();
|
||||
|
||||
@@ -4,6 +4,8 @@ import ru.trader.core.*;
|
||||
import ru.trader.store.berkeley.entities.BDBOffer;
|
||||
import ru.trader.store.berkeley.entities.BDBVendor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -98,6 +100,30 @@ public class VendorProxy extends AbstractVendor {
|
||||
store.getVendorAccessor().update(vendor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateType(STATION_TYPE type) {
|
||||
vendor.setType(type);
|
||||
store.getVendorAccessor().update(vendor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateEconomic(ECONOMIC_TYPE economic) {
|
||||
vendor.setEconomic(economic);
|
||||
store.getVendorAccessor().update(vendor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateSubEconomic(ECONOMIC_TYPE economic) {
|
||||
vendor.setSubEconomic(economic);
|
||||
store.getVendorAccessor().update(vendor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateModifiedTime(LocalDateTime time) {
|
||||
vendor.setModified(time.toEpochSecond(ZoneOffset.UTC));
|
||||
store.getVendorAccessor().update(vendor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateDistance(double distance) {
|
||||
vendor.setDistance(distance);
|
||||
@@ -152,6 +178,26 @@ public class VendorProxy extends AbstractVendor {
|
||||
return vendor.getGovernment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public STATION_TYPE getType() {
|
||||
return vendor.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return vendor.getEconomic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return vendor.getSubEconomic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime getModifiedTime() {
|
||||
return LocalDateTime.ofEpochSecond(vendor.getModified(), 0, ZoneOffset.UTC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Place getPlace() {
|
||||
if (place == null){
|
||||
|
||||
@@ -6,8 +6,12 @@ import com.sleepycat.persist.model.Relationship;
|
||||
import com.sleepycat.persist.model.SecondaryKey;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
import ru.trader.core.POWER;
|
||||
import ru.trader.core.POWER_STATE;
|
||||
|
||||
@Entity(version = 3)
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity(version = 4)
|
||||
public class BDBPlace {
|
||||
|
||||
@PrimaryKey(sequence = "P_ID")
|
||||
@@ -24,6 +28,8 @@ public class BDBPlace {
|
||||
|
||||
private FACTION faction;
|
||||
private GOVERNMENT government;
|
||||
private POWER power;
|
||||
private POWER_STATE powerState;
|
||||
|
||||
private BDBPlace() {
|
||||
}
|
||||
@@ -61,6 +67,19 @@ public class BDBPlace {
|
||||
this.government = government;
|
||||
}
|
||||
|
||||
public POWER getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
public POWER_STATE getPowerState() {
|
||||
return powerState;
|
||||
}
|
||||
|
||||
public void setPower(POWER power, POWER_STATE state) {
|
||||
this.power = power;
|
||||
this.powerState = state;
|
||||
}
|
||||
|
||||
public double getX() {
|
||||
return x;
|
||||
}
|
||||
@@ -93,8 +112,10 @@ public class BDBPlace {
|
||||
if (Double.compare(bdbPlace.y, y) != 0) return false;
|
||||
if (Double.compare(bdbPlace.z, z) != 0) return false;
|
||||
if (!name.equals(bdbPlace.name)) return false;
|
||||
|
||||
return true;
|
||||
return Objects.equals(faction, bdbPlace.faction)
|
||||
&& Objects.equals(government, bdbPlace.government)
|
||||
&& Objects.equals(power, bdbPlace.power)
|
||||
&& Objects.equals(powerState, bdbPlace.powerState);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package ru.trader.store.berkeley.entities;
|
||||
|
||||
import com.sleepycat.persist.model.*;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
import ru.trader.core.SERVICE_TYPE;
|
||||
import ru.trader.core.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity(version = 2)
|
||||
@Entity(version = 3)
|
||||
public class BDBVendor {
|
||||
|
||||
@PrimaryKey(sequence = "V_ID")
|
||||
@@ -20,6 +19,10 @@ public class BDBVendor {
|
||||
private String name;
|
||||
private FACTION faction;
|
||||
private GOVERNMENT government;
|
||||
private STATION_TYPE type;
|
||||
private ECONOMIC_TYPE economic;
|
||||
private ECONOMIC_TYPE subEconomic;
|
||||
private long modified;
|
||||
private double distance;
|
||||
|
||||
@SecondaryKey(relate=Relationship.MANY_TO_MANY)
|
||||
@@ -61,6 +64,30 @@ public class BDBVendor {
|
||||
this.government = government;
|
||||
}
|
||||
|
||||
public STATION_TYPE getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(STATION_TYPE type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return economic;
|
||||
}
|
||||
|
||||
public void setEconomic(ECONOMIC_TYPE economic) {
|
||||
this.economic = economic;
|
||||
}
|
||||
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return subEconomic;
|
||||
}
|
||||
|
||||
public void setSubEconomic(ECONOMIC_TYPE subEconomic) {
|
||||
this.subEconomic = subEconomic;
|
||||
}
|
||||
|
||||
public long getPlaceId() {
|
||||
return placeId;
|
||||
}
|
||||
@@ -93,6 +120,14 @@ public class BDBVendor {
|
||||
return services;
|
||||
}
|
||||
|
||||
public long getModified() {
|
||||
return modified;
|
||||
}
|
||||
|
||||
public void setModified(long modified) {
|
||||
this.modified = modified;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
@@ -106,7 +141,12 @@ public class BDBVendor {
|
||||
if (!name.equals(bdbVendor.name)) return false;
|
||||
if (!services.equals(bdbVendor.services)) return false;
|
||||
|
||||
return true;
|
||||
return Objects.equals(faction, bdbVendor.faction)
|
||||
&& Objects.equals(government, bdbVendor.government)
|
||||
&& Objects.equals(type, bdbVendor.type)
|
||||
&& Objects.equals(economic, bdbVendor.economic)
|
||||
&& Objects.equals(subEconomic, bdbVendor.subEconomic)
|
||||
&& Objects.equals(modified, bdbVendor.modified);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,9 @@ import org.xml.sax.SAXParseException;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
import ru.trader.core.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class MarketDocHandler extends DefaultHandler {
|
||||
@@ -30,17 +33,25 @@ public class MarketDocHandler extends DefaultHandler {
|
||||
protected final static String PRICE_ATTR = "price";
|
||||
protected final static String COUNT_ATTR = "count";
|
||||
protected final static String ITEM_ATTR = "item";
|
||||
protected final static String ILLEGAL_FACTION_ATTR = "illegalf";
|
||||
protected final static String ILLEGAL_GOVERNMENT__ATTR = "illegalg";
|
||||
protected final static String DISTANCE_ATTR = "distance";
|
||||
protected final static String X_ATTR = "x";
|
||||
protected final static String Y_ATTR = "y";
|
||||
protected final static String Z_ATTR = "z";
|
||||
protected final static String FACTION_ATTR = "faction";
|
||||
protected final static String GOVERNMENT_ATTR = "government";
|
||||
protected final static String POWER_ATTR = "power";
|
||||
protected final static String POWER_STATE_ATTR = "control";
|
||||
protected final static String ECONOMIC_ATTR = "economic1";
|
||||
protected final static String SUB_ECONOMIC_ATTR = "economic2";
|
||||
protected final static String MODIFIED_ATTR = "modified";
|
||||
|
||||
protected SimpleMarket world;
|
||||
protected Vendor curVendor;
|
||||
protected Place curPlace;
|
||||
protected Group curGroup;
|
||||
protected LocalDateTime modified;
|
||||
protected final HashMap<String,Item> items = new HashMap<>();
|
||||
|
||||
@Override
|
||||
@@ -71,7 +82,9 @@ public class MarketDocHandler extends DefaultHandler {
|
||||
switch (qName){
|
||||
case PLACE: curPlace = null;
|
||||
break;
|
||||
case VENDOR: curVendor = null;
|
||||
case VENDOR:
|
||||
curVendor.setModifiedTime(modified);
|
||||
curVendor = null;
|
||||
break;
|
||||
case GROUP: curGroup = null;
|
||||
break;
|
||||
@@ -94,16 +107,27 @@ public class MarketDocHandler extends DefaultHandler {
|
||||
onPlace(name, x != null ? Double.valueOf(x) : 0, y != null ? Double.valueOf(y) : 0, z != null ? Double.valueOf(z) : 0,
|
||||
faction != null ? FACTION.valueOf(faction) : null, government != null ? GOVERNMENT.valueOf(government) : null
|
||||
);
|
||||
String power = attributes.getValue(POWER_ATTR);
|
||||
String powerState = attributes.getValue(POWER_STATE_ATTR);
|
||||
if (powerState != null && power != null){
|
||||
updatePlace(POWER.valueOf(power), POWER_STATE.valueOf(powerState));
|
||||
}
|
||||
}
|
||||
|
||||
protected void parseVendor(Attributes attributes) throws SAXException {
|
||||
String name = attributes.getValue(NAME_ATTR);
|
||||
String type = attributes.getValue(TYPE_ATTR);
|
||||
String distance = attributes.getValue(DISTANCE_ATTR);
|
||||
String faction = attributes.getValue(FACTION_ATTR);
|
||||
String government = attributes.getValue(GOVERNMENT_ATTR);
|
||||
LOG.debug("parse vendor {}, distance {}, faction {}, government {}", name, distance, faction, government);
|
||||
onVendor(name, distance != null ? Double.valueOf(distance) : 0,
|
||||
faction != null ? FACTION.valueOf(faction) : null, government != null ? GOVERNMENT.valueOf(government) : null);
|
||||
String economic = attributes.getValue(ECONOMIC_ATTR);
|
||||
String subEconomic = attributes.getValue(SUB_ECONOMIC_ATTR);
|
||||
String modifiedTime = attributes.getValue(MODIFIED_ATTR);
|
||||
modified = modifiedTime != null ? LocalDateTime.parse(modifiedTime) : null;
|
||||
LOG.debug("parse vendor {}, type {}, distance {}, faction {}, government {}", name, type, distance, faction, government);
|
||||
onVendor(name, type != null ? STATION_TYPE.valueOf(type) : null, distance != null ? Double.valueOf(distance) : 0,
|
||||
faction != null ? FACTION.valueOf(faction) : null, government != null ? GOVERNMENT.valueOf(government) : null);
|
||||
updateVendor(economic != null ? ECONOMIC_TYPE.valueOf(economic) : null, subEconomic != null ? ECONOMIC_TYPE.valueOf(subEconomic) : null);
|
||||
}
|
||||
|
||||
protected void parseService(Attributes attributes) throws SAXException {
|
||||
@@ -116,8 +140,23 @@ public class MarketDocHandler extends DefaultHandler {
|
||||
protected void parseItem(Attributes attributes) throws SAXException {
|
||||
String name = attributes.getValue(NAME_ATTR);
|
||||
String id = attributes.getValue(ID_ATTR);
|
||||
LOG.debug("parse item {} ({})", name, id);
|
||||
onItem(name, id);
|
||||
String illegalFactions = attributes.getValue(ILLEGAL_FACTION_ATTR);
|
||||
String illegalGovernments = attributes.getValue(ILLEGAL_GOVERNMENT__ATTR);
|
||||
EnumSet<FACTION> factions = EnumSet.noneOf(FACTION.class);
|
||||
if (illegalFactions != null){
|
||||
for (String f : illegalFactions.split(",")) {
|
||||
factions.add(FACTION.valueOf(f));
|
||||
}
|
||||
}
|
||||
EnumSet<GOVERNMENT> governments = EnumSet.noneOf(GOVERNMENT.class);
|
||||
if (illegalGovernments != null){
|
||||
for (String f : illegalGovernments.split(",")) {
|
||||
governments.add(GOVERNMENT.valueOf(f));
|
||||
}
|
||||
}
|
||||
|
||||
LOG.debug("parse item {} ({}), illegal - {}, {}", name, id, factions, governments);
|
||||
onItem(name, id, factions, governments);
|
||||
}
|
||||
|
||||
protected void parseOffer(Attributes attributes) throws SAXException {
|
||||
@@ -148,19 +187,36 @@ public class MarketDocHandler extends DefaultHandler {
|
||||
curPlace.setGovernment(government);
|
||||
}
|
||||
|
||||
protected void onVendor(String name, double distance, FACTION faction, GOVERNMENT government){
|
||||
protected void updatePlace(POWER power, POWER_STATE powerState){
|
||||
curPlace.setPower(power, powerState);
|
||||
}
|
||||
|
||||
protected void onVendor(String name, STATION_TYPE type, double distance, FACTION faction, GOVERNMENT government){
|
||||
curVendor = curPlace.addVendor(name);
|
||||
curVendor.setType(type);
|
||||
curVendor.setDistance(distance);
|
||||
curVendor.setFaction(faction);
|
||||
curVendor.setGovernment(government);
|
||||
}
|
||||
|
||||
protected void updateVendor(ECONOMIC_TYPE economic, ECONOMIC_TYPE subEconomic){
|
||||
curVendor.setEconomic(economic);
|
||||
curVendor.setSubEconomic(subEconomic);
|
||||
curVendor.setModifiedTime(modified);
|
||||
}
|
||||
|
||||
protected void onService(SERVICE_TYPE type){
|
||||
curVendor.add(type);
|
||||
}
|
||||
|
||||
protected void onItem(String name, String id) {
|
||||
protected void onItem(String name, String id, Collection<FACTION> illegalFactions, Collection<GOVERNMENT> illegalGovernment) {
|
||||
Item item = world.addItem(name, curGroup);
|
||||
for (FACTION faction : illegalFactions) {
|
||||
item.setIllegal(faction, true);
|
||||
}
|
||||
for (GOVERNMENT government : illegalGovernment) {
|
||||
item.setIllegal(government, true);
|
||||
}
|
||||
items.put(id, item);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,11 @@ import javax.xml.stream.XMLOutputFactory;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.XMLStreamWriter;
|
||||
import java.io.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class MarketStreamWriter {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(MarketStreamWriter.class);
|
||||
@@ -66,6 +68,16 @@ public class MarketStreamWriter {
|
||||
out.writeEmptyElement(MarketDocHandler.ITEM);
|
||||
out.writeAttribute(MarketDocHandler.NAME_ATTR, item.getName());
|
||||
out.writeAttribute(MarketDocHandler.ID_ATTR, id);
|
||||
Collection<FACTION> factions = item.getIllegalFactions();
|
||||
if (!factions.isEmpty()) {
|
||||
String str = factions.stream().map(FACTION::toString).collect(Collectors.joining(","));
|
||||
out.writeAttribute(MarketDocHandler.ILLEGAL_FACTION_ATTR, str);
|
||||
}
|
||||
Collection<GOVERNMENT> governments = item.getIllegalGovernments();
|
||||
if (!governments.isEmpty()) {
|
||||
String str = governments.stream().map(GOVERNMENT::toString).collect(Collectors.joining(","));
|
||||
out.writeAttribute(MarketDocHandler.ILLEGAL_GOVERNMENT__ATTR, str);
|
||||
}
|
||||
}
|
||||
|
||||
protected void writePlaces() throws XMLStreamException {
|
||||
@@ -85,6 +97,12 @@ public class MarketStreamWriter {
|
||||
if (place.getGovernment() != null) {
|
||||
out.writeAttribute(MarketDocHandler.GOVERNMENT_ATTR, String.valueOf(place.getGovernment()));
|
||||
}
|
||||
if (place.getPower() != null){
|
||||
out.writeAttribute(MarketDocHandler.POWER_ATTR, String.valueOf(place.getPower()));
|
||||
}
|
||||
if (place.getPowerState() != null){
|
||||
out.writeAttribute(MarketDocHandler.POWER_STATE_ATTR, String.valueOf(place.getPowerState()));
|
||||
}
|
||||
out.writeAttribute(MarketDocHandler.X_ATTR, String.valueOf(place.getX()));
|
||||
out.writeAttribute(MarketDocHandler.Y_ATTR, String.valueOf(place.getY()));
|
||||
out.writeAttribute(MarketDocHandler.Z_ATTR, String.valueOf(place.getZ()));
|
||||
@@ -97,13 +115,25 @@ public class MarketStreamWriter {
|
||||
protected void writeVendor(Vendor vendor) throws XMLStreamException {
|
||||
out.writeStartElement(MarketDocHandler.VENDOR);
|
||||
out.writeAttribute(MarketDocHandler.NAME_ATTR, vendor.getName());
|
||||
if (vendor.getType() != null){
|
||||
out.writeAttribute(MarketDocHandler.TYPE_ATTR, String.valueOf(vendor.getType()));
|
||||
}
|
||||
if (vendor.getFaction() != null) {
|
||||
out.writeAttribute(MarketDocHandler.FACTION_ATTR, String.valueOf(vendor.getFaction()));
|
||||
}
|
||||
if (vendor.getGovernment() != null) {
|
||||
out.writeAttribute(MarketDocHandler.GOVERNMENT_ATTR, String.valueOf(vendor.getGovernment()));
|
||||
}
|
||||
if (vendor.getEconomic() != null){
|
||||
out.writeAttribute(MarketDocHandler.ECONOMIC_ATTR, String.valueOf(vendor.getEconomic()));
|
||||
}
|
||||
if (vendor.getSubEconomic() != null){
|
||||
out.writeAttribute(MarketDocHandler.SUB_ECONOMIC_ATTR, String.valueOf(vendor.getSubEconomic()));
|
||||
}
|
||||
out.writeAttribute(MarketDocHandler.DISTANCE_ATTR, String.valueOf(vendor.getDistance()));
|
||||
if (vendor.getModifiedTime() != null){
|
||||
out.writeAttribute(MarketDocHandler.MODIFIED_ATTR, vendor.getModifiedTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
|
||||
}
|
||||
out.writeStartElement(MarketDocHandler.SERVICES_LIST);
|
||||
for (SERVICE_TYPE service_type : vendor.getServices()) {
|
||||
out.writeEmptyElement(MarketDocHandler.SERVICE);
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package ru.trader.store.simple;
|
||||
|
||||
import ru.trader.core.AbstractPlace;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
import ru.trader.core.Vendor;
|
||||
import ru.trader.core.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -19,6 +16,9 @@ public class SimplePlace extends AbstractPlace {
|
||||
|
||||
private FACTION faction;
|
||||
private GOVERNMENT government;
|
||||
private POWER power;
|
||||
private POWER_STATE powerState;
|
||||
|
||||
|
||||
public SimplePlace(String name) {
|
||||
this.name = name;
|
||||
@@ -55,6 +55,16 @@ public class SimplePlace extends AbstractPlace {
|
||||
return government;
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER_STATE getPowerState() {
|
||||
return powerState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getX() {
|
||||
return x;
|
||||
@@ -90,6 +100,12 @@ public class SimplePlace extends AbstractPlace {
|
||||
this.government = government;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updatePower(POWER power, POWER_STATE state) {
|
||||
this.power = power;
|
||||
this.powerState = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updatePosition(double x, double y, double z) {
|
||||
this.x = x;
|
||||
|
||||
@@ -2,6 +2,7 @@ package ru.trader.store.simple;
|
||||
|
||||
import ru.trader.core.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Map;
|
||||
@@ -14,6 +15,10 @@ public class SimpleVendor extends AbstractVendor {
|
||||
private EnumSet<SERVICE_TYPE> services = EnumSet.noneOf(SERVICE_TYPE.class);
|
||||
private FACTION faction;
|
||||
private GOVERNMENT government;
|
||||
private STATION_TYPE type;
|
||||
private ECONOMIC_TYPE economic;
|
||||
private ECONOMIC_TYPE subEconomic;
|
||||
private LocalDateTime modified;
|
||||
|
||||
protected Map<Item, Offer> sell;
|
||||
protected Map<Item, Offer> buy;
|
||||
@@ -73,6 +78,36 @@ public class SimpleVendor extends AbstractVendor {
|
||||
this.government = government;
|
||||
}
|
||||
|
||||
@Override
|
||||
public STATION_TYPE getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateType(STATION_TYPE type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getEconomic() {
|
||||
return economic;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateEconomic(ECONOMIC_TYPE economic) {
|
||||
this.economic = economic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ECONOMIC_TYPE getSubEconomic() {
|
||||
return subEconomic;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateSubEconomic(ECONOMIC_TYPE economic) {
|
||||
this.subEconomic = economic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Place getPlace() {
|
||||
return place;
|
||||
@@ -163,4 +198,13 @@ public class SimpleVendor extends AbstractVendor {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime getModifiedTime() {
|
||||
return modified;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateModifiedTime(LocalDateTime time) {
|
||||
this.modified = time;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
<xs:complexType name="itemType">
|
||||
<xs:attribute name="id" type="xs:ID" use="required"/>
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="illegalf" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="illegalg" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="placeType" mixed="true">
|
||||
@@ -57,6 +59,8 @@
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="faction" type="FACTION" use="optional"/>
|
||||
<xs:attribute name="government" type="GOVERNMENT" use="optional"/>
|
||||
<xs:attribute name="control" type="POWER_STATE" use="optional"/>
|
||||
<xs:attribute name="power" type="POWER" use="optional"/>
|
||||
<xs:attribute name="x" type="xs:double" use="optional"/>
|
||||
<xs:attribute name="y" type="xs:double" use="optional"/>
|
||||
<xs:attribute name="z" type="xs:double" use="optional"/>
|
||||
@@ -70,7 +74,11 @@
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="faction" type="FACTION" use="optional"/>
|
||||
<xs:attribute name="government" type="GOVERNMENT" use="optional"/>
|
||||
<xs:attribute name="type" type="STATION_TYPE" use="optional"/>
|
||||
<xs:attribute name="economic1" type="ECONOMIC_TYPE" use="optional"/>
|
||||
<xs:attribute name="economic2" type="ECONOMIC_TYPE" use="optional"/>
|
||||
<xs:attribute name="distance" type="xs:double"/>
|
||||
<xs:attribute name="modified" type="xs:dateTime" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="serviceType">
|
||||
@@ -133,4 +141,64 @@
|
||||
<xs:enumeration value="NONE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="POWER_STATE">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CONTROL"/>
|
||||
<xs:enumeration value="EXPLOITED"/>
|
||||
<xs:enumeration value="EXPANSION"/>
|
||||
<xs:enumeration value="NONE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="POWER">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DUVAL"/>
|
||||
<xs:enumeration value="DELAINE"/>
|
||||
<xs:enumeration value="LAVIGNY_DUVAL"/>
|
||||
<xs:enumeration value="PATREUS"/>
|
||||
<xs:enumeration value="MAHON"/>
|
||||
<xs:enumeration value="WINTERS"/>
|
||||
<xs:enumeration value="YONG_RUI"/>
|
||||
<xs:enumeration value="ANTAL"/>
|
||||
<xs:enumeration value="HUDSON"/>
|
||||
<xs:enumeration value="TORVAL"/>
|
||||
<xs:enumeration value="NONE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="STATION_TYPE">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="STARPORT"/>
|
||||
<xs:enumeration value="CORIOLIS_STARPORT"/>
|
||||
<xs:enumeration value="OCELLUS_STARPORT"/>
|
||||
<xs:enumeration value="ORBIS_STARPORT"/>
|
||||
<xs:enumeration value="OUTPOST"/>
|
||||
<xs:enumeration value="CIVILIAN_OUTPOST"/>
|
||||
<xs:enumeration value="COMMERCIAL_OUTPOST"/>
|
||||
<xs:enumeration value="INDUSTRIAL_OUTPOST"/>
|
||||
<xs:enumeration value="MILITARY_OUTPOST"/>
|
||||
<xs:enumeration value="MINING_OUTPOST"/>
|
||||
<xs:enumeration value="SCIENTIFIC_OUTPOST"/>
|
||||
<xs:enumeration value="UNSANCTIONED_OUTPOST"/>
|
||||
<xs:enumeration value="PLANETARY_PORT"/>
|
||||
<xs:enumeration value="PLANETARY_OUTPOST"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ECONOMIC_TYPE">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AGRICULTURE"/>
|
||||
<xs:enumeration value="EXTRACTION"/>
|
||||
<xs:enumeration value="HIGH_TECH"/>
|
||||
<xs:enumeration value="INDUSTRIAL"/>
|
||||
<xs:enumeration value="MILITARY"/>
|
||||
<xs:enumeration value="REFINERY"/>
|
||||
<xs:enumeration value="SERVICE"/>
|
||||
<xs:enumeration value="TERRAFORMING"/>
|
||||
<xs:enumeration value="TOURISM"/>
|
||||
<xs:enumeration value="COLONY"/>
|
||||
<xs:enumeration value="NONE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -12,6 +12,7 @@ import ru.trader.store.simple.Store;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import java.io.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class LoadTest extends Assert {
|
||||
@@ -38,6 +39,8 @@ public class LoadTest extends Assert {
|
||||
private void assertItem(Item item1, Item item2){
|
||||
assertEquals(item1.getName(), item2.getName());
|
||||
assertGroup(item1.getGroup(), item2.getGroup());
|
||||
assertEquals(item1.getIllegalFactions(), item2.getIllegalFactions());
|
||||
assertEquals(item1.getIllegalGovernments(), item2.getIllegalGovernments());
|
||||
}
|
||||
|
||||
private void assertPlace(Place place1, Place place2){
|
||||
@@ -47,13 +50,19 @@ public class LoadTest extends Assert {
|
||||
assertEquals(place1.getZ(), place2.getZ(), 0.00001);
|
||||
assertEquals(place1.getFaction(), place2.getFaction());
|
||||
assertEquals(place1.getGovernment(), place2.getGovernment());
|
||||
assertEquals(place1.getPower(), place2.getPower());
|
||||
assertEquals(place1.getPowerState(), place2.getPowerState());
|
||||
}
|
||||
|
||||
private void assertVendor(Vendor vendor1, Vendor vendor2){
|
||||
assertEquals(vendor1.getName(), vendor2.getName());
|
||||
assertEquals(vendor1.getType(), vendor2.getType());
|
||||
assertEquals(vendor1.getDistance(), vendor2.getDistance(), 0.00001);
|
||||
assertEquals(vendor1.getFaction(), vendor2.getFaction());
|
||||
assertEquals(vendor1.getGovernment(), vendor2.getGovernment());
|
||||
assertEquals(vendor1.getEconomic(), vendor2.getEconomic());
|
||||
assertEquals(vendor1.getSubEconomic(), vendor2.getSubEconomic());
|
||||
assertEquals(vendor1.getModifiedTime(), vendor2.getModifiedTime());
|
||||
}
|
||||
|
||||
private void assertOffer(Offer offer1, Offer offer2){
|
||||
@@ -76,17 +85,26 @@ public class LoadTest extends Assert {
|
||||
Item item3 = market.addItem("Item 3", group2);
|
||||
Item item4 = market.addItem("Item 4", group2);
|
||||
Item item5 = market.addItem("Item 5", group3);
|
||||
item1.setIllegal(FACTION.FEDERATION, true);
|
||||
item2.setIllegal(FACTION.EMPIRE, true);
|
||||
item2.setIllegal(GOVERNMENT.DEMOCRACY, true);
|
||||
item3.setIllegal(GOVERNMENT.CORPORATE, true);
|
||||
Place place1 = market.addPlace("Place 1", 0, 1, 3);
|
||||
place1.setFaction(FACTION.ALLIANCE);
|
||||
place1.setGovernment(GOVERNMENT.PRISON_COLONY);
|
||||
place1.setPower(POWER.LAVIGNY_DUVAL, POWER_STATE.EXPLOITED);
|
||||
Place place2 = market.addPlace("Place 2",4,0,5);
|
||||
place2.setPower(POWER.DELAINE, POWER_STATE.CONTROL);
|
||||
Place place3 = market.addPlace("Place 3",0,0,0);
|
||||
Vendor vendor1 = place1.addVendor("Vendor 1");
|
||||
Vendor vendor2 = place1.addVendor("Vendor 2");
|
||||
Vendor vendor3 = place2.addVendor("Vendor 3");
|
||||
vendor1.setType(STATION_TYPE.CORIOLIS_STARPORT);
|
||||
vendor1.setDistance(10);
|
||||
vendor1.setFaction(FACTION.ALLIANCE);
|
||||
vendor1.setGovernment(GOVERNMENT.ANARCHY);
|
||||
vendor1.setEconomic(ECONOMIC_TYPE.EXTRACTION);
|
||||
vendor1.setSubEconomic(ECONOMIC_TYPE.REFINERY);
|
||||
vendor1.add(SERVICE_TYPE.MARKET);
|
||||
vendor1.add(SERVICE_TYPE.OUTFIT);
|
||||
vendor1.add(SERVICE_TYPE.REFUEL);
|
||||
@@ -98,9 +116,12 @@ public class LoadTest extends Assert {
|
||||
Offer offer6 = vendor1.addOffer(OFFER_TYPE.BUY, item5, 11,10);
|
||||
vendor2.setDistance(100.4);
|
||||
vendor2.setGovernment(GOVERNMENT.NONE);
|
||||
vendor2.setEconomic(ECONOMIC_TYPE.HIGH_TECH);
|
||||
vendor2.setType(STATION_TYPE.PLANETARY_PORT);
|
||||
vendor3.setDistance(200000.4);
|
||||
vendor3.add(SERVICE_TYPE.OUTFIT);
|
||||
vendor3.add(SERVICE_TYPE.REFUEL);
|
||||
vendor3.setModifiedTime(LocalDateTime.of(2016,10,2,10,20,0));
|
||||
|
||||
LOG.info("save market");
|
||||
File xml = new File("save_load_test.xml");
|
||||
|
||||
Reference in New Issue
Block a user