diff --git a/client/src/main/java/ru/trader/Settings.java b/client/src/main/java/ru/trader/Settings.java index e9f6aa7..48857ed 100644 --- a/client/src/main/java/ru/trader/Settings.java +++ b/client/src/main/java/ru/trader/Settings.java @@ -106,4 +106,19 @@ public class Settings { return Integer.valueOf(values.getProperty("ship.jumps","3")); } + public void setSegmentSize(int segmentSize){ + values.setProperty("performance.segment", String.valueOf(segmentSize)); + } + + public int getSegmentSize(){ + return Integer.valueOf(values.getProperty("performance.segment","0")); + } + + public void setPathsCount(int pathsCount){ + values.setProperty("performance.limit", String.valueOf(pathsCount)); + } + + public int getPathsCount(){ + return Integer.valueOf(values.getProperty("performance.limit","100")); + } } diff --git a/client/src/main/java/ru/trader/World.java b/client/src/main/java/ru/trader/World.java index 118ce9f..abf0031 100644 --- a/client/src/main/java/ru/trader/World.java +++ b/client/src/main/java/ru/trader/World.java @@ -2,9 +2,8 @@ package ru.trader; import org.xml.sax.SAXException; import ru.trader.core.Market; +import ru.trader.core.MarketAnalyzer; import ru.trader.core.SimpleMarket; -import ru.trader.emdn.EMDN; -import ru.trader.emdn.Station; import ru.trader.model.ModelFabrica; import ru.trader.store.Store; import ru.trader.store.XSSFImporter; @@ -45,4 +44,11 @@ public class World { public static Market getMarket() { return world; } + + public static MarketAnalyzer buildAnalyzer(Market market){ + MarketAnalyzer analyzer = new MarketAnalyzer(market); + analyzer.setSegmentSize(Main.SETTINGS.getSegmentSize()); + analyzer.setPathsCount(Main.SETTINGS.getPathsCount()); + return analyzer; + } } diff --git a/client/src/main/java/ru/trader/controllers/SettingsController.java b/client/src/main/java/ru/trader/controllers/SettingsController.java index 40f4745..7986b05 100644 --- a/client/src/main/java/ru/trader/controllers/SettingsController.java +++ b/client/src/main/java/ru/trader/controllers/SettingsController.java @@ -14,7 +14,9 @@ import org.slf4j.LoggerFactory; import ru.trader.EMDNUpdater; import ru.trader.Main; import ru.trader.World; +import ru.trader.core.MarketAnalyzer; import ru.trader.emdn.EMDN; +import ru.trader.model.MarketModel; import ru.trader.view.support.Localization; import ru.trader.view.support.NumberField; @@ -30,6 +32,10 @@ public class SettingsController { private CheckBox emdnUpdateOnly; @FXML private NumberField emdnUpdateTime; + @FXML + private NumberField segmentSize; + @FXML + private NumberField pathsCount; private final Action actSave = new AbstractAction(Localization.getString("dialog.button.save")) { { @@ -54,6 +60,8 @@ public class SettingsController { emdnOn.setSelected(Main.SETTINGS.getEMDNActive()); emdnUpdateOnly.setSelected(Main.SETTINGS.getEMDNUpdateOnly()); emdnUpdateTime.setValue(Main.SETTINGS.getEMDNAutoUpdate()); + segmentSize.setValue(Main.SETTINGS.getSegmentSize()); + pathsCount.setValue(Main.SETTINGS.getPathsCount()); } private void save() { @@ -65,6 +73,12 @@ public class SettingsController { EMDNUpdater.setUpdateOnly(emdnUpdateOnly.isSelected()); Main.SETTINGS.setEMDNAutoUpdate(emdnUpdateTime.getValue().longValue()); EMDNUpdater.setInterval(emdnUpdateTime.getValue().longValue()); + MarketModel market = MainController.getMarket(); + Main.SETTINGS.setSegmentSize(segmentSize.getValue().intValue()); + market.setSegmetnSize(segmentSize.getValue().intValue()); + Main.SETTINGS.setPathsCount(pathsCount.getValue().intValue()); + market.setLimit(pathsCount.getValue().intValue()); + } public Action showDialog(Parent parent, Parent content){ diff --git a/client/src/main/java/ru/trader/model/MarketModel.java b/client/src/main/java/ru/trader/model/MarketModel.java index 9e97a2d..6ba08a8 100644 --- a/client/src/main/java/ru/trader/model/MarketModel.java +++ b/client/src/main/java/ru/trader/model/MarketModel.java @@ -6,6 +6,7 @@ import javafx.beans.property.SimpleListProperty; import javafx.collections.ObservableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.trader.World; import ru.trader.core.*; import ru.trader.graph.PathRoute; import ru.trader.model.support.BindingsHelper; @@ -42,7 +43,7 @@ public class MarketModel { public MarketModel(Market market) { this.market = market; - analyzer = new MarketAnalyzer(market); + analyzer = World.buildAnalyzer(market); items = new SimpleListProperty(BindingsHelper.observableList(market.getItems(), this::getItemDesc)); vendors = new SimpleListProperty(BindingsHelper.observableList(market.get(), this::asModel)); } @@ -178,6 +179,14 @@ public class MarketModel { } + public void setLimit(int limit){ + analyzer.setPathsCount(limit); + } + + public void setSegmetnSize(int segmetnSize){ + analyzer.setSegmentSize(segmetnSize); + } + public void setCargo(int cargo){ analyzer.setCargo(cargo); } diff --git a/client/src/main/resources/lang/locale_en_US.properties b/client/src/main/resources/lang/locale_en_US.properties index 9e770b4..21181e6 100644 --- a/client/src/main/resources/lang/locale_en_US.properties +++ b/client/src/main/resources/lang/locale_en_US.properties @@ -102,3 +102,6 @@ settings.emdn.on=Active settings.emdn.sub=Server SUB: settings.emdn.updateOnly=Update price only: settings.emdn.auto=Auto update (sec.): +settings.performance=Performance +settings.performance.segmentSize=Segment size (0 - auto): +settings.performance.limit=Routes count: diff --git a/client/src/main/resources/lang/locale_ru_RU.properties b/client/src/main/resources/lang/locale_ru_RU.properties index dca9677..14eae54 100644 --- a/client/src/main/resources/lang/locale_ru_RU.properties +++ b/client/src/main/resources/lang/locale_ru_RU.properties @@ -104,4 +104,7 @@ settings.emdn.on=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C settings.emdn.sub=\u0421\u0435\u0440\u0432\u0435\u0440 SUB: settings.emdn.updateOnly=\u0422\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0442\u044C \u0446\u0435\u043D\u044B: settings.emdn.auto=\u041E\u0431\u043D\u043E\u0432\u043B\u044F\u0442\u044C \u0430\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0447\u0435\u0440\u0435\u0437 (\u0441\u0435\u043A.): +settings.performance=\u041F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C +settings.performance.segmentSize=\u041C\u0430\u0440\u0448\u0440\u0443\u0442\u043E\u0432 \u0432 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0435 (0 - \u0430\u0432\u0442\u043E): +settings.performance.limit=\u041A\u043E\u043B-\u0432\u043E \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u043E\u0432 \u043D\u0430 \u0432\u044B\u0432\u043E\u0434: diff --git a/client/src/main/resources/view/settings.fxml b/client/src/main/resources/view/settings.fxml index 5930383..2f204f3 100644 --- a/client/src/main/resources/view/settings.fxml +++ b/client/src/main/resources/view/settings.fxml @@ -22,5 +22,11 @@