Refactoring: inheritance instead of composition
This commit is contained in:
parent
fab1df33a6
commit
1be6bc7eea
11 changed files with 400 additions and 492 deletions
|
@ -9,8 +9,7 @@ import net.osmand.osm.io.NetworkUtils;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.onlinerouting.engine.OnlineRoutingEngine;
|
import net.osmand.plus.onlinerouting.engine.OnlineRoutingEngine;
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
import net.osmand.plus.onlinerouting.engine.OnlineRoutingEngine.OnlineRoutingResponse;
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser.OnlineRoutingResponse;
|
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
@ -95,8 +94,7 @@ public class OnlineRoutingHelper {
|
||||||
boolean leftSideNavigation) throws IOException, JSONException {
|
boolean leftSideNavigation) throws IOException, JSONException {
|
||||||
String url = engine.getFullUrl(path);
|
String url = engine.getFullUrl(path);
|
||||||
String content = makeRequest(url);
|
String content = makeRequest(url);
|
||||||
ResponseParser parser = engine.getResponseParser();
|
return engine.parseResponse(content, app, leftSideNavigation);
|
||||||
return parser.parseResponse(content, app, leftSideNavigation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|
|
@ -3,12 +3,16 @@ package net.osmand.plus.onlinerouting.engine;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities;
|
||||||
|
import net.osmand.GPXUtilities.GPXFile;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.onlinerouting.EngineParameter;
|
import net.osmand.plus.onlinerouting.EngineParameter;
|
||||||
import net.osmand.plus.onlinerouting.VehicleType;
|
import net.osmand.plus.onlinerouting.VehicleType;
|
||||||
import net.osmand.plus.onlinerouting.parser.GpxParser;
|
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -56,9 +60,29 @@ public class GpxEngine extends OnlineRoutingEngine {
|
||||||
params.add(EngineParameter.CUSTOM_URL);
|
params.add(EngineParameter.CUSTOM_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
@Override
|
||||||
protected ResponseParser createParser() {
|
@Nullable
|
||||||
return new GpxParser();
|
public OnlineRoutingResponse parseResponse(@NonNull String content,
|
||||||
|
@NonNull OsmandApplication app,
|
||||||
|
boolean leftSideNavigation) {
|
||||||
|
GPXFile gpxFile = parseGpx(content);
|
||||||
|
return gpxFile != null ? new OnlineRoutingResponse(parseGpx(content)) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isResultOk(@NonNull StringBuilder errorMessage,
|
||||||
|
@NonNull String content) {
|
||||||
|
return parseGpx(content) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GPXFile parseGpx(@NonNull String content) {
|
||||||
|
InputStream gpxStream = null;
|
||||||
|
try {
|
||||||
|
gpxStream = new ByteArrayInputStream(content.getBytes("UTF-8"));
|
||||||
|
return GPXUtilities.loadGPXFile(gpxStream);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
LOG.debug("Error when parsing GPX from server response: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@ import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.onlinerouting.EngineParameter;
|
import net.osmand.plus.onlinerouting.EngineParameter;
|
||||||
import net.osmand.plus.onlinerouting.VehicleType;
|
import net.osmand.plus.onlinerouting.VehicleType;
|
||||||
import net.osmand.plus.onlinerouting.parser.JSONParser;
|
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
|
||||||
import net.osmand.plus.routing.RouteDirectionInfo;
|
import net.osmand.plus.routing.RouteDirectionInfo;
|
||||||
import net.osmand.router.TurnType;
|
import net.osmand.router.TurnType;
|
||||||
import net.osmand.util.GeoPolylineParserUtil;
|
import net.osmand.util.GeoPolylineParserUtil;
|
||||||
|
@ -26,7 +24,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import static net.osmand.util.Algorithms.isEmpty;
|
import static net.osmand.util.Algorithms.isEmpty;
|
||||||
|
|
||||||
public class GraphhopperEngine extends OnlineRoutingEngine {
|
public class GraphhopperEngine extends JsonOnlineRoutingEngine {
|
||||||
|
|
||||||
public GraphhopperEngine(@Nullable Map<String, String> params) {
|
public GraphhopperEngine(@Nullable Map<String, String> params) {
|
||||||
super(params);
|
super(params);
|
||||||
|
@ -67,12 +65,6 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
vehicles.add(new VehicleType("small_truck", R.string.routing_engine_vehicle_type_small_truck));
|
vehicles.add(new VehicleType("small_truck", R.string.routing_engine_vehicle_type_small_truck));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
protected ResponseParser createParser() {
|
|
||||||
return new GraphhopperParser();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void makeFullUrl(@NonNull StringBuilder sb,
|
protected void makeFullUrl(@NonNull StringBuilder sb,
|
||||||
@NonNull List<LatLon> path) {
|
@NonNull List<LatLon> path) {
|
||||||
|
@ -95,8 +87,6 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
sb.append('&').append("details=").append("lanes");
|
sb.append('&').append("details=").append("lanes");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class GraphhopperParser extends JSONParser {
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
protected OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
protected OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
||||||
@NonNull OsmandApplication app,
|
@NonNull OsmandApplication app,
|
||||||
|
@ -238,5 +228,5 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
protected String getRootArrayKey() {
|
protected String getRootArrayKey() {
|
||||||
return "paths";
|
return "paths";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package net.osmand.plus.onlinerouting.parser;
|
package net.osmand.plus.onlinerouting.engine;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
@ -15,10 +15,15 @@ import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static net.osmand.util.Algorithms.isEmpty;
|
import static net.osmand.util.Algorithms.isEmpty;
|
||||||
|
|
||||||
public abstract class JSONParser extends ResponseParser {
|
public abstract class JsonOnlineRoutingEngine extends OnlineRoutingEngine {
|
||||||
|
|
||||||
|
public JsonOnlineRoutingEngine(@Nullable Map<String, String> params) {
|
||||||
|
super(params);
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public OnlineRoutingResponse parseResponse(@NonNull String content,
|
public OnlineRoutingResponse parseResponse(@NonNull String content,
|
|
@ -5,16 +5,20 @@ import android.content.Context;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities.GPXFile;
|
||||||
|
import net.osmand.Location;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.onlinerouting.EngineParameter;
|
import net.osmand.plus.onlinerouting.EngineParameter;
|
||||||
import net.osmand.plus.onlinerouting.OnlineRoutingFactory;
|
import net.osmand.plus.onlinerouting.OnlineRoutingFactory;
|
||||||
import net.osmand.plus.onlinerouting.VehicleType;
|
import net.osmand.plus.onlinerouting.VehicleType;
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
import net.osmand.plus.routing.RouteDirectionInfo;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -36,7 +40,6 @@ public abstract class OnlineRoutingEngine implements Cloneable {
|
||||||
private final Map<String, String> params = new HashMap<>();
|
private final Map<String, String> params = new HashMap<>();
|
||||||
private final List<VehicleType> allowedVehicles = new ArrayList<>();
|
private final List<VehicleType> allowedVehicles = new ArrayList<>();
|
||||||
private final Set<EngineParameter> allowedParameters = new HashSet<>();
|
private final Set<EngineParameter> allowedParameters = new HashSet<>();
|
||||||
private ResponseParser responseParser;
|
|
||||||
|
|
||||||
public OnlineRoutingEngine(@Nullable Map<String, String> params) {
|
public OnlineRoutingEngine(@Nullable Map<String, String> params) {
|
||||||
if (!isEmpty(params)) {
|
if (!isEmpty(params)) {
|
||||||
|
@ -97,16 +100,13 @@ public abstract class OnlineRoutingEngine implements Cloneable {
|
||||||
@NonNull
|
@NonNull
|
||||||
public abstract String getStandardUrl();
|
public abstract String getStandardUrl();
|
||||||
|
|
||||||
@NonNull
|
@Nullable
|
||||||
public ResponseParser getResponseParser() {
|
public abstract OnlineRoutingResponse parseResponse(@NonNull String content,
|
||||||
if (responseParser == null) {
|
@NonNull OsmandApplication app,
|
||||||
responseParser = createParser();
|
boolean leftSideNavigation) throws JSONException;
|
||||||
}
|
|
||||||
return responseParser;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
public abstract boolean isResultOk(@NonNull StringBuilder errorMessage,
|
||||||
protected abstract ResponseParser createParser();
|
@NonNull String content) throws JSONException;
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public Map<String, String> getParams() {
|
public Map<String, String> getParams() {
|
||||||
|
@ -194,4 +194,34 @@ public abstract class OnlineRoutingEngine implements Cloneable {
|
||||||
return ONLINE_ROUTING_ENGINE_PREFIX + System.currentTimeMillis();
|
return ONLINE_ROUTING_ENGINE_PREFIX + System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class OnlineRoutingResponse {
|
||||||
|
|
||||||
|
private List<Location> route;
|
||||||
|
private List<RouteDirectionInfo> directions;
|
||||||
|
private GPXFile gpxFile;
|
||||||
|
|
||||||
|
// constructor for JSON responses
|
||||||
|
public OnlineRoutingResponse(List<Location> route, List<RouteDirectionInfo> directions) {
|
||||||
|
this.route = route;
|
||||||
|
this.directions = directions;
|
||||||
|
}
|
||||||
|
|
||||||
|
// constructor for GPX responses
|
||||||
|
public OnlineRoutingResponse(GPXFile gpxFile) {
|
||||||
|
this.gpxFile = gpxFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Location> getRoute() {
|
||||||
|
return route;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RouteDirectionInfo> getDirections() {
|
||||||
|
return directions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GPXFile getGpxFile() {
|
||||||
|
return gpxFile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@ import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.onlinerouting.EngineParameter;
|
import net.osmand.plus.onlinerouting.EngineParameter;
|
||||||
import net.osmand.plus.onlinerouting.VehicleType;
|
import net.osmand.plus.onlinerouting.VehicleType;
|
||||||
import net.osmand.plus.onlinerouting.parser.JSONParser;
|
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -23,7 +21,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import static net.osmand.util.Algorithms.isEmpty;
|
import static net.osmand.util.Algorithms.isEmpty;
|
||||||
|
|
||||||
public class OrsEngine extends OnlineRoutingEngine {
|
public class OrsEngine extends JsonOnlineRoutingEngine {
|
||||||
|
|
||||||
public OrsEngine(@Nullable Map<String, String> params) {
|
public OrsEngine(@Nullable Map<String, String> params) {
|
||||||
super(params);
|
super(params);
|
||||||
|
@ -64,12 +62,6 @@ public class OrsEngine extends OnlineRoutingEngine {
|
||||||
vehicles.add(new VehicleType("wheelchair", R.string.routing_engine_vehicle_type_wheelchair));
|
vehicles.add(new VehicleType("wheelchair", R.string.routing_engine_vehicle_type_wheelchair));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
protected ResponseParser createParser() {
|
|
||||||
return new OrsParser();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void makeFullUrl(@NonNull StringBuilder sb,
|
protected void makeFullUrl(@NonNull StringBuilder sb,
|
||||||
@NonNull List<LatLon> path) {
|
@NonNull List<LatLon> path) {
|
||||||
|
@ -92,8 +84,6 @@ public class OrsEngine extends OnlineRoutingEngine {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class OrsParser extends JSONParser {
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
public OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
||||||
|
@ -125,5 +115,5 @@ public class OrsEngine extends OnlineRoutingEngine {
|
||||||
protected String getRootArrayKey() {
|
protected String getRootArrayKey() {
|
||||||
return "features";
|
return "features";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@ import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.onlinerouting.EngineParameter;
|
import net.osmand.plus.onlinerouting.EngineParameter;
|
||||||
import net.osmand.plus.onlinerouting.VehicleType;
|
import net.osmand.plus.onlinerouting.VehicleType;
|
||||||
import net.osmand.plus.onlinerouting.parser.JSONParser;
|
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser;
|
|
||||||
import net.osmand.plus.routing.RouteCalculationResult;
|
import net.osmand.plus.routing.RouteCalculationResult;
|
||||||
import net.osmand.plus.routing.RouteDirectionInfo;
|
import net.osmand.plus.routing.RouteDirectionInfo;
|
||||||
import net.osmand.router.TurnType;
|
import net.osmand.router.TurnType;
|
||||||
|
@ -29,7 +27,7 @@ import java.util.Set;
|
||||||
import static net.osmand.util.Algorithms.isEmpty;
|
import static net.osmand.util.Algorithms.isEmpty;
|
||||||
import static net.osmand.util.Algorithms.objectEquals;
|
import static net.osmand.util.Algorithms.objectEquals;
|
||||||
|
|
||||||
public class OsrmEngine extends OnlineRoutingEngine {
|
public class OsrmEngine extends JsonOnlineRoutingEngine {
|
||||||
|
|
||||||
public OsrmEngine(@Nullable Map<String, String> params) {
|
public OsrmEngine(@Nullable Map<String, String> params) {
|
||||||
super(params);
|
super(params);
|
||||||
|
@ -63,12 +61,6 @@ public class OsrmEngine extends OnlineRoutingEngine {
|
||||||
vehicles.add(new VehicleType("foot", R.string.routing_engine_vehicle_type_foot));
|
vehicles.add(new VehicleType("foot", R.string.routing_engine_vehicle_type_foot));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
protected ResponseParser createParser() {
|
|
||||||
return new OsrmParser();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void makeFullUrl(@NonNull StringBuilder sb,
|
protected void makeFullUrl(@NonNull StringBuilder sb,
|
||||||
@NonNull List<LatLon> path) {
|
@NonNull List<LatLon> path) {
|
||||||
|
@ -88,8 +80,6 @@ public class OsrmEngine extends OnlineRoutingEngine {
|
||||||
sb.append('&').append("steps=true");
|
sb.append('&').append("steps=true");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class OsrmParser extends JSONParser {
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
protected OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
protected OnlineRoutingResponse parseServerResponse(@NonNull JSONObject root,
|
||||||
|
@ -250,5 +240,5 @@ public class OsrmEngine extends OnlineRoutingEngine {
|
||||||
protected String getErrorMessageKey() {
|
protected String getErrorMessageKey() {
|
||||||
return "message";
|
return "message";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
package net.osmand.plus.onlinerouting.parser;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import net.osmand.GPXUtilities;
|
|
||||||
import net.osmand.GPXUtilities.GPXFile;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
|
|
||||||
public class GpxParser extends ResponseParser {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nullable
|
|
||||||
public OnlineRoutingResponse parseResponse(@NonNull String content,
|
|
||||||
@NonNull OsmandApplication app,
|
|
||||||
boolean leftSideNavigation) {
|
|
||||||
GPXFile gpxFile = parseGpx(content);
|
|
||||||
return gpxFile != null ? new OnlineRoutingResponse(parseGpx(content)) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isResultOk(@NonNull StringBuilder errorMessage,
|
|
||||||
@NonNull String content) {
|
|
||||||
return parseGpx(content) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private GPXFile parseGpx(@NonNull String content) {
|
|
||||||
InputStream gpxStream = null;
|
|
||||||
try {
|
|
||||||
gpxStream = new ByteArrayInputStream(content.getBytes("UTF-8"));
|
|
||||||
return GPXUtilities.loadGPXFile(gpxStream);
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
LOG.debug("Error when parsing GPX from server response: " + e.getMessage());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
package net.osmand.plus.onlinerouting.parser;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import net.osmand.GPXUtilities.GPXFile;
|
|
||||||
import net.osmand.Location;
|
|
||||||
import net.osmand.PlatformUtil;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.routing.RouteDirectionInfo;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.json.JSONException;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public abstract class ResponseParser {
|
|
||||||
|
|
||||||
protected static final Log LOG = PlatformUtil.getLog(ResponseParser.class);
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public abstract OnlineRoutingResponse parseResponse(@NonNull String content,
|
|
||||||
@NonNull OsmandApplication app,
|
|
||||||
boolean leftSideNavigation) throws JSONException;
|
|
||||||
|
|
||||||
public abstract boolean isResultOk(@NonNull StringBuilder errorMessage,
|
|
||||||
@NonNull String content) throws JSONException;
|
|
||||||
|
|
||||||
public static ResponseParser emptyParser() {
|
|
||||||
return new ResponseParser() {
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public OnlineRoutingResponse parseResponse(@NonNull String content,
|
|
||||||
@NonNull OsmandApplication app,
|
|
||||||
boolean leftSideNavigation) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isResultOk(@NonNull StringBuilder errorMessage,
|
|
||||||
@NonNull String content) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class OnlineRoutingResponse {
|
|
||||||
|
|
||||||
private List<Location> route;
|
|
||||||
private List<RouteDirectionInfo> directions;
|
|
||||||
private GPXFile gpxFile;
|
|
||||||
|
|
||||||
// constructor for JSON responses
|
|
||||||
public OnlineRoutingResponse(List<Location> route, List<RouteDirectionInfo> directions) {
|
|
||||||
this.route = route;
|
|
||||||
this.directions = directions;
|
|
||||||
}
|
|
||||||
|
|
||||||
// constructor for GPX responses
|
|
||||||
public OnlineRoutingResponse(GPXFile gpxFile) {
|
|
||||||
this.gpxFile = gpxFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Location> getRoute() {
|
|
||||||
return route;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<RouteDirectionInfo> getDirections() {
|
|
||||||
return directions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GPXFile getGpxFile() {
|
|
||||||
return gpxFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -462,7 +462,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
|
||||||
boolean resultOk = false;
|
boolean resultOk = false;
|
||||||
try {
|
try {
|
||||||
String response = helper.makeRequest(exampleCard.getEditedText());
|
String response = helper.makeRequest(exampleCard.getEditedText());
|
||||||
resultOk = requestedEngine.getResponseParser().isResultOk(errorMessage, response);
|
resultOk = requestedEngine.isResultOk(errorMessage, response);
|
||||||
} catch (IOException | JSONException e) {
|
} catch (IOException | JSONException e) {
|
||||||
errorMessage.append(e.toString());
|
errorMessage.append(e.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.TargetPointsHelper;
|
import net.osmand.plus.TargetPointsHelper;
|
||||||
import net.osmand.plus.TargetPointsHelper.TargetPoint;
|
import net.osmand.plus.TargetPointsHelper.TargetPoint;
|
||||||
import net.osmand.plus.onlinerouting.OnlineRoutingHelper;
|
import net.osmand.plus.onlinerouting.OnlineRoutingHelper;
|
||||||
import net.osmand.plus.onlinerouting.parser.ResponseParser.OnlineRoutingResponse;
|
import net.osmand.plus.onlinerouting.engine.OnlineRoutingEngine.OnlineRoutingResponse;
|
||||||
import net.osmand.plus.render.NativeOsmandLibrary;
|
import net.osmand.plus.render.NativeOsmandLibrary;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
import net.osmand.plus.settings.backend.CommonPreference;
|
import net.osmand.plus.settings.backend.CommonPreference;
|
||||||
|
|
Loading…
Reference in a new issue