package edu.ucdavis.cstars.client.tasks; import com.google.gwt.core.client.JavaScriptObject; import edu.ucdavis.cstars.client.callback.RouteSolveCallback; import edu.ucdavis.cstars.client.dojo.Deferred; import edu.ucdavis.cstars.client.event.ErrorHandler; import edu.ucdavis.cstars.client.event.RouteSolveHandler; /** * Solves a route on a route layer resource in a Network Analyst service exposed by the ArcGIS Server REST API. * * @author Justin Merz */ public class RouteTask extends JavaScriptObject { protected RouteTask() {} /** * Creates a new RouteTask object. * * @param url - URL to the ArcGIS Server REST resource that represents a network analysis service. * @return RouteTask */ public static native RouteTask create(String url) /*-{ return new $wnd.esri.tasks.RouteTask(url); }-*/; /** * URL to the ArcGIS Server REST resource that represents a network analysis service. * * @return String url. */ public final native String getUrl() /*-{ return this.url; }-*/; /** * Solves the route against the route layer with the route parameters. * * @param params - Route parameters used as input to generate the route. * @param callback - The function to call when the method has completed. * @return Deferred */ public final native Deferred solve(RouteParameters params, RouteSolveCallback callback) /*-{ this.solve(params, function(solveResult) { callback.@edu.ucdavis.cstars.client.callback.RouteSolveCallback::onSolveComplete(Ledu/ucdavis/cstars/client/event/RouteSolveHandler$SolveResult;)(solveResult); }, function(error) { callback.@edu.ucdavis.cstars.client.callback.RouteSolveCallback::onError(Ledu/ucdavis/cstars/client/Error;)(error); } ); }-*/; /** * Solves the route against the route layer with the route parameters. * * @param params - Route parameters used as input to generate the route. * @return Deferred */ public final native Deferred solve(RouteParameters params) /*-{ this.solve(params); }-*/; /** * Add event handler for errors. * * @param handler - Fires when an error occurs when executing the task. */ public final native void addErrorHandler(ErrorHandler handler) /*-{ $wnd.dojo.connect(this, "onError", function(error) { handler.@edu.ucdavis.cstars.client.event.ErrorHandler::onError(Ledu/ucdavis/cstars/client/Error;)(error); } ); }-*/; /** * Add event handler for solve. * * @param handler - Fires when RouteTask.solve() has completed. */ public final native void addSolveHandler(RouteSolveHandler handler) /*-{ $wnd.dojo.connect(this, "onSolveComplete", function(solveResult) { handler.@edu.ucdavis.cstars.client.event.RouteSolveHandler::onSolveComplete(Ledu/ucdavis/cstars/client/event/RouteSolveHandler$SolveResult;)(solveResult); } ); }-*/; }