added param collector

This commit is contained in:
afischerdev 2023-09-30 17:15:15 +02:00
parent 3acb0b1fdb
commit 298893352c

View file

@ -12,10 +12,10 @@ import java.util.List;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import btools.router.OsmNodeNamed; import btools.router.OsmNodeNamed;
import btools.router.OsmNogoPolygon;
import btools.router.OsmTrack; import btools.router.OsmTrack;
import btools.router.RoutingContext; import btools.router.RoutingContext;
import btools.router.RoutingEngine; import btools.router.RoutingEngine;
import btools.router.RoutingParamCollector;
public class BRouterWorker { public class BRouterWorker {
private static final int OUTPUT_FORMAT_GPX = 0; private static final int OUTPUT_FORMAT_GPX = 0;
@ -59,6 +59,42 @@ public class BRouterWorker {
rc.rawTrackPath = rawTrackPath; rc.rawTrackPath = rawTrackPath;
rc.localFunction = profilePath; rc.localFunction = profilePath;
RoutingParamCollector routingParamCollector = new RoutingParamCollector();
// parameter pre control
if (params.containsKey("lonlats")) {
waypoints = routingParamCollector.getWayPointList(params.getString("lonlats"));
params.remove("lonlats");
}
if (params.containsKey("lats")) {
double[] lats = params.getDoubleArray("lats");
double[] lons = params.getDoubleArray("lons");
waypoints = routingParamCollector.readPositions(lons, lats);
params.remove("lons");
params.remove("lats");
}
if (waypoints == null) {
throw new IllegalArgumentException("no points!");
}
if (engineMode == 0) {
if (waypoints.size() < 2) {
throw new IllegalArgumentException("we need two lat/lon points at least!");
}
} else {
if (waypoints.size() < 1) {
throw new IllegalArgumentException("we need two lat/lon points at least!");
}
}
if (nogoList != null && nogoList.size() > 0) {
// forward already read nogos from filesystem
if (rc.nogopoints == null) {
rc.nogopoints = nogoList;
} else {
rc.nogopoints.addAll(nogoList);
}
String tiFormat = params.getString("turnInstructionFormat"); String tiFormat = params.getString("turnInstructionFormat");
if (tiFormat != null) { if (tiFormat != null) {
if ("osmand".equalsIgnoreCase(tiFormat)) { if ("osmand".equalsIgnoreCase(tiFormat)) {
@ -147,6 +183,45 @@ public class BRouterWorker {
} }
} }
Map<String, String> theParams = new HashMap<>();
for (String key : params.keySet()) {
Object value = params.get(key);
if (value instanceof double[]) {
theParams.put(key, Arrays.toString(params.getDoubleArray(key)));
} else {
theParams.put(key, value.toString());
}
}
routingParamCollector.setParams(rc, waypoints, theParams);
if (params.containsKey("extraParams")) {
Map<String, String> profileparams = null;
try {
profileparams = routingParamCollector.getUrlParams(params.getString("extraParams"));
routingParamCollector.setProfileParams(rc, profileparams);
} catch (UnsupportedEncodingException e) {
// ignore
}
}
String pathToFileResult = params.getString("pathToFileResult");
if (pathToFileResult != null) {
File f = new File(pathToFileResult);
File dir = f.getParentFile();
if (!dir.exists() || !dir.canWrite()) {
return "file folder does not exists or can not be written!";
}
}
long maxRunningTime = 60000;
String sMaxRunningTime = params.getString("maxRunningTime");
if (sMaxRunningTime != null) {
maxRunningTime = Integer.parseInt(sMaxRunningTime) * 1000L;
}
try { try {
writeTimeoutData(rc); writeTimeoutData(rc);
} catch (Exception e) { } catch (Exception e) {
@ -170,18 +245,15 @@ public class BRouterWorker {
return cr.getErrorMessage(); return cr.getErrorMessage();
} }
String format = params.getString("trackFormat");
int writeFromat = OUTPUT_FORMAT_GPX; int writeFromat = OUTPUT_FORMAT_GPX;
if (format != null) { if (rc.outputFormat != null) {
if ("kml".equals(format)) writeFromat = OUTPUT_FORMAT_KML; if ("kml".equals(rc.outputFormat)) writeFromat = OUTPUT_FORMAT_KML;
if ("json".equals(format)) writeFromat = OUTPUT_FORMAT_JSON; if ("json".equals(rc.outputFormat)) writeFromat = OUTPUT_FORMAT_JSON;
} }
OsmTrack track = cr.getFoundTrack(); OsmTrack track = cr.getFoundTrack();
if (track != null) { if (track != null) {
if (params.containsKey("exportWaypoints")) { track.exportWaypoints = rc.exportWaypoints;
track.exportWaypoints = (params.getInt("exportWaypoints", 0) == 1);
}
if (pathToFileResult == null) { if (pathToFileResult == null) {
switch (writeFromat) { switch (writeFromat) {
case OUTPUT_FORMAT_GPX: case OUTPUT_FORMAT_GPX:
@ -431,7 +503,7 @@ public class BRouterWorker {
bw.write(rc.rawTrackPath); bw.write(rc.rawTrackPath);
bw.write("\n"); bw.write("\n");
writeWPList(bw, waypoints); writeWPList(bw, waypoints);
writeWPList(bw, nogoList); writeWPList(bw, rc.nogopoints);
bw.close(); bw.close();
} }