Archived
0

implement import systems from eddb

This commit is contained in:
Mo
2016-11-09 15:34:42 +03:00
parent 595f2fe1d5
commit f728fbd699
14 changed files with 561 additions and 21 deletions

View File

@@ -11,7 +11,9 @@ import org.xml.sax.SAXException;
import ru.trader.Main;
import ru.trader.ServicesManager;
import ru.trader.World;
import ru.trader.eddb.EDDBParser;
import ru.trader.model.*;
import ru.trader.services.ImportTask;
import ru.trader.services.MaddavoParserTask;
import ru.trader.services.PowerPlayParserTask;
import ru.trader.view.support.Localization;
@@ -327,6 +329,15 @@ public class MainController {
}
@FXML
private void importEDDBSystems() {
chooseFile(new FileChooser.ExtensionFilter("EDDB Systems file (systems*.json)","systems*.json"), file -> {
EDDBParser parser = EDDBParser.createSystemParser(file);
ImportTask task = new ImportTask(parser, World.getMarket());
Screeners.showProgress(Localization.getString("message.import.systems"), task, () -> ViewUtils.doFX(this::reload));
});
}
private void chooseFile(FileChooser.ExtensionFilter filter, Consumer<File> action) {
FileChooser fileChooser = new FileChooser();

View File

@@ -0,0 +1,29 @@
package ru.trader.services;
import javafx.concurrent.Task;
import ru.trader.core.Market;
import ru.trader.store.imp.Importer;
public class ImportTask extends Task<Void> {
private final Market market;
private final Importer importer;
public ImportTask(Importer importer, Market market) {
this.importer = importer;
this.market = market;
}
@Override
protected void cancelled() {
importer.cancel();
}
@Override
protected Void call() throws Exception {
importer.imp(market);
return null;
}
}

View File

@@ -22,6 +22,9 @@
<MenuItem text="StarSystem" onAction="#importPowerPlaySystems"/>
<MenuItem text="Prediction" onAction="#importPowerPlayPrediction"/>
</Menu>
<Menu text="EDDB">
<MenuItem text="%market.systems" onAction="#importEDDBSystems"/>
</Menu>
<MenuItem text="XML" onAction="#importWorld"/>
<MenuItem text="EDCE JSON" onAction="#importEDCE"/>
</Menu>