add callbacks to crawler
This commit is contained in:
@@ -10,6 +10,7 @@ import javafx.collections.ObservableList;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.trader.World;
|
||||
import ru.trader.analysis.AnalysisCallBack;
|
||||
import ru.trader.analysis.Route;
|
||||
import ru.trader.controllers.ProgressController;
|
||||
import ru.trader.controllers.Screeners;
|
||||
@@ -67,6 +68,10 @@ public class MarketModel {
|
||||
return analyzer;
|
||||
}
|
||||
|
||||
public MarketAnalyzer getAnalyzer(AnalysisCallBack callback) {
|
||||
return analyzer.changeCallBack(callback);
|
||||
}
|
||||
|
||||
public ModelFabric getModeler() {
|
||||
return modeler;
|
||||
}
|
||||
|
||||
@@ -4,14 +4,8 @@ import javafx.application.Platform;
|
||||
import javafx.beans.property.LongProperty;
|
||||
import javafx.beans.property.SimpleLongProperty;
|
||||
import javafx.concurrent.Task;
|
||||
import ru.trader.analysis.graph.Vertex;
|
||||
import ru.trader.analysis.AnalysisCallBack;
|
||||
import ru.trader.core.MarketAnalyzer;
|
||||
import ru.trader.core.MarketAnalyzerCallBack;
|
||||
import ru.trader.core.Place;
|
||||
import ru.trader.core.Vendor;
|
||||
import ru.trader.graph.Connectable;
|
||||
import ru.trader.graph.GraphCallBack;
|
||||
import ru.trader.graph.RouteSearcherCallBack;
|
||||
import ru.trader.model.MarketModel;
|
||||
import ru.trader.view.support.Localization;
|
||||
|
||||
@@ -19,8 +13,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
public abstract class AnalyzerTask<T> extends Task<T> {
|
||||
private final AnalyzerCallBack callback;
|
||||
protected final MarketAnalyzer analyzer;
|
||||
private final AnalyzerCallBack callback; protected final MarketAnalyzer analyzer;
|
||||
|
||||
private final LongProperty found;
|
||||
private final AtomicReference<Long> foundUpdate;
|
||||
@@ -28,9 +21,8 @@ public abstract class AnalyzerTask<T> extends Task<T> {
|
||||
public AnalyzerTask(MarketModel market) {
|
||||
foundUpdate = new AtomicReference<>((long) 0);
|
||||
found = new SimpleLongProperty(0);
|
||||
analyzer = market.getAnalyzer();
|
||||
callback = new AnalyzerCallBack();
|
||||
analyzer.setCallback(callback);
|
||||
analyzer = market.getAnalyzer(callback);
|
||||
}
|
||||
|
||||
public long getFound() {
|
||||
@@ -59,7 +51,7 @@ public abstract class AnalyzerTask<T> extends Task<T> {
|
||||
callback.cancel();
|
||||
}
|
||||
|
||||
private class AnalyzerCallBack extends MarketAnalyzerCallBack {
|
||||
private class AnalyzerCallBack extends AnalysisCallBack {
|
||||
private final AtomicLong max;
|
||||
private final AtomicLong counter;
|
||||
private final AtomicLong found;
|
||||
@@ -70,21 +62,20 @@ public abstract class AnalyzerTask<T> extends Task<T> {
|
||||
found = new AtomicLong(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RouteSearcherCallBack getRouteSearcherCallBackInstance() {
|
||||
return new RSCallBack();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected GraphCallBack<Place> getGraphCallBackInstance() {
|
||||
return new GCallBack<Place>();
|
||||
public void startStage(String id) {
|
||||
super.startStage(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onEnd() {
|
||||
updateProgress(counter.incrementAndGet(), max.get());
|
||||
updateMessage(Localization.getString("analyser.finish"));
|
||||
public String getMessage(String key) {
|
||||
return Localization.getString(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void print(String message) {
|
||||
super.print(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,69 +86,12 @@ public abstract class AnalyzerTask<T> extends Task<T> {
|
||||
@Override
|
||||
public void inc() {
|
||||
updateProgress(counter.incrementAndGet(), max.get());
|
||||
updateFound(found.incrementAndGet());
|
||||
}
|
||||
|
||||
private class RSCallBack extends RouteSearcherCallBack {
|
||||
@Override
|
||||
protected GraphCallBack<Vendor> getGraphCallBackInstance() {
|
||||
return new GCallBack<Vendor>(){
|
||||
@Override
|
||||
public void onStartBuild(Vendor from) {
|
||||
updateMessage(String.format(Localization.getString("analyzer.graph.station.build"), from.getPlace().getName(), from.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartFind(Vertex<Vendor> from, Vertex<Vendor> to) {
|
||||
if (to != null) {
|
||||
updateMessage(String.format(Localization.getString("analyzer.find.route"),
|
||||
from.getEntry().getPlace().getName(),
|
||||
from.getEntry().getName(),
|
||||
to.getEntry().getPlace().getName(),
|
||||
to.getEntry().getName()
|
||||
));
|
||||
} else {
|
||||
updateMessage(String.format(Localization.getString("analyzer.find.routes"),
|
||||
from.getEntry().getPlace().getName(),
|
||||
from.getEntry().getName()
|
||||
));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private class GCallBack<T extends Connectable<T>> extends GraphCallBack<T> {
|
||||
|
||||
@Override
|
||||
public void onStartBuild(T from) {
|
||||
updateMessage(String.format(Localization.getString("analyzer.graph.build"), from));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEndBuild() {
|
||||
updateProgress(counter.incrementAndGet(), max.get());
|
||||
updateMessage(Localization.getString("analyzer.graph.success"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFound() {
|
||||
updateFound(found.incrementAndGet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEndFind() {
|
||||
updateMessage(String.format(Localization.getString("analyzer.find.success"), found.get()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMax(long value) {
|
||||
max.addAndGet(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inc() {
|
||||
updateProgress(counter.incrementAndGet(), max.get());
|
||||
}
|
||||
@Override
|
||||
public void endStage(String id) {
|
||||
updateProgress(counter.incrementAndGet(), max.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user