From e6ebd091678988baf8e12f74516de5222d244e4e Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 16 Jul 2015 15:41:16 +0300 Subject: [PATCH] implement export/import to properties --- .../src/main/java/ru/trader/core/Profile.java | 41 ++++++++++++++----- core/src/main/java/ru/trader/core/Ship.java | 23 +++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/ru/trader/core/Profile.java b/core/src/main/java/ru/trader/core/Profile.java index 8460b75..d9635d8 100644 --- a/core/src/main/java/ru/trader/core/Profile.java +++ b/core/src/main/java/ru/trader/core/Profile.java @@ -1,5 +1,7 @@ package ru.trader.core; +import java.util.Properties; + public class Profile { public static enum PATH_PRIORITY {FAST, ECO} @@ -10,7 +12,6 @@ public class Profile { private boolean refill; private int routesCount; //Scorer multipliers - private int scoreOrdersCount; private double distanceMult; private double jumpMult; private double landMult; @@ -23,7 +24,6 @@ public class Profile { jumps = 6; lands = 4; routesCount = 30; - scoreOrdersCount = 5; distanceMult = 0.8; landMult = 0.95; fuelPrice = 100; @@ -79,14 +79,6 @@ public class Profile { this.routesCount = routesCount; } - public int getScoreOrdersCount() { - return scoreOrdersCount; - } - - public void setScoreOrdersCount(int scoreOrdersCount) { - this.scoreOrdersCount = scoreOrdersCount; - } - public double getDistanceMult() { return distanceMult; } @@ -126,4 +118,33 @@ public class Profile { public void setPathPriority(PATH_PRIORITY pathPriority) { this.pathPriority = pathPriority; } + + public static Profile readFrom(Properties values){ + Ship ship = Ship.readFrom(values); + Profile profile = new Profile(ship); + profile.setBalance(Double.valueOf(values.getProperty("profile.balance","1000"))); + profile.setJumps(Integer.valueOf(values.getProperty("profile.jumps", "6"))); + profile.setLands(Integer.valueOf(values.getProperty("profile.lands","4"))); + profile.setPathPriority(PATH_PRIORITY.valueOf(values.getProperty("profile.search.priority","FAST"))); + profile.setRoutesCount(Integer.valueOf(values.getProperty("profile.search.routes","100"))); + profile.setFuelPrice(Double.valueOf(values.getProperty("profile.search.fuel.price","100"))); + profile.setDistanceMult(Double.valueOf(values.getProperty("profile.search.mult.distance","0.8"))); + profile.setLandMult(Double.valueOf(values.getProperty("profile.search.mult.land","0.95"))); + profile.setJumpMult(Double.valueOf(values.getProperty("profile.search.mult.jump","0.5"))); + return profile; + } + + public void writeTo(Properties values){ + values.setProperty("profile.balance", String.valueOf(balance)); + values.setProperty("profile.jumps", String.valueOf(jumps)); + values.setProperty("profile.lands", String.valueOf(lands)); + values.setProperty("profile.search.priority", String.valueOf(pathPriority)); + values.setProperty("profile.search.routes", String.valueOf(routesCount)); + values.setProperty("profile.search.fuel.price", String.valueOf(fuelPrice)); + values.setProperty("profile.search.mult.distance", String.valueOf(distanceMult)); + values.setProperty("profile.search.mult.land", String.valueOf(landMult)); + values.setProperty("profile.search.mult.jump", String.valueOf(jumpMult)); + ship.writeTo(values); + } + } diff --git a/core/src/main/java/ru/trader/core/Ship.java b/core/src/main/java/ru/trader/core/Ship.java index 9abf53b..8f38aea 100644 --- a/core/src/main/java/ru/trader/core/Ship.java +++ b/core/src/main/java/ru/trader/core/Ship.java @@ -1,5 +1,9 @@ package ru.trader.core; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class Ship { private final static int REFILL_FUEL_STEP = 10; @@ -281,5 +285,24 @@ public class Ship { } } + private final static Pattern ENGINE_REGEXP = Pattern.compile("(\\d)(\\w)"); + public static Ship readFrom(Properties values){ + Ship ship = new Ship(); + ship.setMass(Double.valueOf(values.getProperty("ship.mass", "44.9"))); + ship.setCargo(Integer.valueOf(values.getProperty("ship.cargo","4"))); + ship.setTank(Double.valueOf(values.getProperty("ship.tank", "2"))); + String e = values.getProperty("ship.engine","2E"); + Matcher matcher = ENGINE_REGEXP.matcher(e); + if (matcher.find()){ + ship.setEngine(Integer.valueOf(matcher.group(1)), matcher.group(2).charAt(0)); + } + return ship; + } + public void writeTo(Properties values){ + values.setProperty("ship.mass", String.valueOf(mass)); + values.setProperty("ship.cargo", String.valueOf(cargo)); + values.setProperty("ship.tank", String.valueOf(tank)); + values.setProperty("ship.engine", String.valueOf(engine.getClazz()) + engine.getRating()); + } }