- Timestamp:
- 04/10/09 18:55:22 (11 months ago)
- Location:
- tools/routingservice/branches/wrs-2.0
- Files:
-
- 8 modified
-
data/profiles.xml (modified) (1 diff)
-
data/resources.xml (modified) (2 diffs)
-
data/services.xml (modified) (1 diff)
-
src/WRS.java (modified) (6 diffs)
-
src/handler/PgRoutingHandler.java (modified) (7 diffs)
-
src/handler/ResourceHandler.java (modified) (1 diff)
-
src/model/Resource.java (modified) (1 diff)
-
src/util/format/JSONParser.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tools/routingservice/branches/wrs-2.0/data/profiles.xml
r287 r291 1 1 <?xml version="1.0"?> 2 <profiles 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:noNamespaceSchemaLocation="http://wrs.postlbs.org/xsd/1.1.0/profile.xsd" 5 > 2 <profiles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:noNamespaceSchemaLocation="http://wrs.postlbs.org/xsd/1.1.0/profile.xsd"> 6 4 <profile name="a7391e864abf6d56c9f9b3784a88bbc7" title="My Test Profile"> 7 5 <description>My test profile I use for testing</description> 8 6 <parameters> 9 <parameter name="srid" type="integer" key="srid" value="4301" />10 <parameter name="units" type="string" key="units" value="dd" />11 </parameters> 7 <parameter name="srid" type="integer" key="srid" value="4301" /> 8 <parameter name="units" type="string" key="units" value="dd" /> 9 </parameters> 12 10 <resources> 13 <rref ref="pgrouting" enabled="true" />11 <rref ref="pgrouting" enabled="true" /> 14 12 </resources> 15 13 </profile> 16 14 17 15 </profiles> -
tools/routingservice/branches/wrs-2.0/data/resources.xml
r290 r291 1 1 <?xml version="1.0"?> 2 <resources 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:noNamespaceSchemaLocation="http://wrs.postlbs.org/xsd/1.1.0/resource.xsd" 5 > 6 <resource type="database" name="pgrouting" title="pgRouting instance on Dumbo server"> 2 <resources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:noNamespaceSchemaLocation="http://wrs.postlbs.org/xsd/1.1.0/resource.xsd"> 4 <resource type="database" name="pgrouting" 5 title="pgRouting instance on Dumbo server"> 7 6 <description>My test profile I use for testing</description> 8 7 <parameters> 9 <parameter name="srid" type="integer" key="srid" value="4301"/> 10 <parameter name="units" type="string" key="units" value="dd"/> 11 <parameter name="box" type="double" key="box" value="0.01"/> 12 <parameter name="cost" type="string" key="cost" value="length"/> 13 </parameters> 8 <parameter name="srid" type="integer" key="srid" value="4301" /> 9 <parameter name="units" type="string" key="units" value="dd" /> 10 <parameter name="box" type="double" key="box" value="0.01" /> 11 <parameter name="cost_value" type="string" key="cost_value" value="length" /> 12 <parameter name="directed" type="boolean" key="directed" 13 value="true" /> 14 <parameter name="hasrc" type="boolean" key="hasrc" value="true" /> 15 <parameter name="table" type="string" key="table" 16 value="_hcc_algo_shooting_pedestrian" /> 17 18 <parameter name="id" type="integer" key="gid"/> 19 <parameter name="cost" type="double" key="length(the_geom)"/> 20 <parameter name="line" type="geometry" key="astext(the_geom)"/> 21 22 </parameters> 14 23 <services> 15 <sref ref="route" enabled="true" />16 <sref ref=" catch" enabled="true"/>17 <sref ref=" travel" enabled="true"/>24 <sref ref="route" enabled="true" /> 25 <sref ref="travel" enabled="true" /> 26 <sref ref="catch" enabled="true" /> 18 27 </services> 19 28 <url>jdbc:postgresql://192.168.20.177:5432/hcc</url> … … 21 30 <password></password> 22 31 <query> 23 SELECT gid as id, length(the_geom) as cost, astext(the_geom) as line FROM 24 $function$('_hcc_algo_shooting_pedestrian', $parameters$, true, true) 32 SELECT $output$ FROM $function$($input$) 25 33 </query> 26 34 </resource> 27 35 28 36 </resources> -
tools/routingservice/branches/wrs-2.0/data/services.xml
r290 r291 10 10 <parameter key="startY" type="double" name="y1"/> 11 11 <parameter key="endX" type="double" name="x2"/> 12 <parameter key="endY" type="double" name="y2"/> 13 <parameter key="cost" type="string" name="cost"/> 14 <parameter key="bbox" type="double" name="box"/> 12 <parameter key="endY" type="double" name="y2"/> 15 13 </in> 16 14 <out> -
tools/routingservice/branches/wrs-2.0/src/WRS.java
r290 r291 95 95 } 96 96 } 97 97 98 98 public enum Fillers 99 99 { 100 JSON(null), GEOJSON(null), KML(null), GML(GMLTemplateFiller.class), XLS( null), GEORSS(101 null), G PX(null);100 JSON(null), GEOJSON(null), KML(null), GML(GMLTemplateFiller.class), XLS( 101 null), GEORSS(null), GPX(null); 102 102 103 103 private Class<? extends TemplateFiller> fillerType; … … 113 113 return fillerType.newInstance(); 114 114 } 115 } 115 } 116 116 117 117 public WRS(String[] args) throws Exception … … 179 179 ArrayList<HashMap<String, Parameter>> output = handler 180 180 .handle(serviceRequest, log); 181 182 String templateName = serviceRequest.getTemplate().getName(); 183 181 182 String templateName = serviceRequest.getTemplate() 183 .getName(); 184 184 185 try 185 186 { 186 TemplateFiller filler = Fillers.valueOf(templateName.toUpperCase()) 187 TemplateFiller filler = Fillers.valueOf( 188 templateName.toUpperCase()) 187 189 .getInstance(); 188 result = filler.fillOutputTemplate( serviceRequest, output,189 handler, log);190 result = filler.fillOutputTemplate( 191 serviceRequest, output, handler, log); 190 192 } 191 193 // TODO process the error more carefully 192 194 catch (InstantiationException e) 193 195 { 194 log.logger.warning("Wrong output format " + templateName); 196 log.logger.warning("Wrong output format " 197 + templateName); 195 198 } 196 199 catch (IllegalAccessException e) 197 200 { 198 log.logger.warning("Wrong output format " + templateName); 201 log.logger.warning("Wrong output format " 202 + templateName); 199 203 } 200 204 catch (NullPointerException e) 201 205 { 202 log.logger.warning("Output format " + templateName + " is not supported yet."); 206 log.logger.warning("Output format " 207 + templateName 208 + " is not supported yet."); 203 209 } 204 210 … … 257 263 } 258 264 259 260 265 public ServiceRequest parseURL(Request req) 261 266 throws ArrayIndexOutOfBoundsException, InvalidVersionException, … … 344 349 String name = ni.next(); 345 350 String value = form.getValuesMap().get(name); 346 347 Parameter p = new Parameter(); 348 p.setSource("url"); 349 p.setName(name); 350 p.setValue(value); 351 request.getParameters().put(name, p); 351 Parameter p; 352 353 if (request.getParameters().containsKey(name)) 354 { 355 p = request.getParameters().get(name); 356 p.setValue(value); 357 p.setSource("url"); 358 } 359 else 360 { 361 p = new Parameter(); 362 p.setSource("url"); 363 p.setName(name); 364 p.setValue(value); 365 request.getParameters().put(name, p); 366 } 352 367 353 368 try … … 377 392 378 393 private void addParameters(Hashtable<String, Parameter> parameters, 379 Hashtable<String, Parameter> params)394 Hashtable<String, Parameter> toAdd) 380 395 { 381 396 // TODO check for ability to override parameters 382 parameters.putAll(params); 397 398 Iterator<String> it = toAdd.keySet().iterator(); 399 while (it.hasNext()) 400 { 401 Parameter p; 402 String key = it.next(); 403 String value = toAdd.get(key).getValue(); 404 405 if (parameters.containsKey(key)) 406 { 407 p = parameters.get(key); 408 p.setValue(value); 409 p.setSource("url"); 410 } 411 else 412 { 413 p = toAdd.get(key); 414 parameters.put(key, p); 415 } 416 } 417 // parameters.putAll(toAdd); 383 418 } 384 419 -
tools/routingservice/branches/wrs-2.0/src/handler/PgRoutingHandler.java
r290 r291 35 35 36 36 public static final String FUNCTION = "function"; 37 public static final String PARAMETERS = "parameters"; 37 public static final String INPUT = "input"; 38 public static final String OUTPUT = "output"; 38 39 39 40 // Arrays in Services enum's elements specify an order of parameters … … 44 45 ArrayList getParameters() 45 46 { 46 String[] p = { "x1", "y1", "x2", "y2", "box", "cost" }; 47 String[] p = { "table", "x1", "y1", "x2", "y2", "box", "cost_value", 48 "directed", "hasrc" }; 47 49 return new ArrayList(Arrays.asList(p)); 48 50 } … … 68 70 if (this.resource != null) 69 71 { 70 System.out.println("<<<<<<< " + this.resource.getQuery() + " from "71 + this.resource.getName());72 72 73 73 String query = fillQueryTemplate(this.resource.getQuery(), request 74 74 .getService(), request.getParameters()); 75 76 System.out.println(">>>>>>> " + query);77 75 78 76 ObjectPool<Connection> pool = this.resource.getPool(); … … 140 138 query.setAttribute(FUNCTION, function); 141 139 140 // fill output 141 StringBuffer output = new StringBuffer(""); 142 Iterator<String> opit = service.getOut().keySet().iterator(); 143 while (opit.hasNext()) 144 { 145 try 146 { 147 String key = opit.next(); 148 Parameter p = this.resource.getParameters().get(key); 149 output.append(p.getKey()).append(" as ").append(p.getName()); 150 if (opit.hasNext()) 151 output.append(","); 152 } 153 catch (NullPointerException e) 154 { 155 // Required parameter is missing! 156 // TODO do something smart here 157 } 158 } 159 query.setAttribute(OUTPUT, output.toString()); 160 142 161 StringBuffer params = new StringBuffer(""); 143 162 … … 151 170 { 152 171 String key = keys.next(); 153 if (service.getIn().containsKey(key)) 172 173 Parameter p = parameters.get(key); 174 String value = p.getValue(); 175 if (p.getType().toLowerCase().equals( 176 STRING)) 154 177 { 155 Parameter p = parameters.get(key); 156 String value = p.getValue(); 157 if (service.getIn().get(key).getType().toLowerCase() 158 .equals(STRING)) 159 { 160 value = "'" + value + "'"; 161 } 162 params.append(value); 163 164 if (keys.hasNext()) 165 params.append(","); 178 value = "'" + value + "'"; 166 179 } 167 else168 { 169 // Service doesn't know about the parameter170 // TODO do something smart here171 } 180 params.append(value); 181 182 if (keys.hasNext()) 183 params.append(","); 184 172 185 } 173 186 catch (NullPointerException e) … … 178 191 } 179 192 180 System.out.println(">>PARAMETERS>>>>> " + params.toString()); 181 query.setAttribute(PARAMETERS, params.toString()); 193 query.setAttribute(INPUT, params.toString()); 182 194 183 195 return query.toString(); … … 195 207 ArrayList<Point> points = new ArrayList<Point>(); 196 208 String[] wkts = parseWKT(geom); 197 209 198 210 for (int i = 0; i < wkts.length; i++) 199 211 { -
tools/routingservice/branches/wrs-2.0/src/handler/ResourceHandler.java
r290 r291 22 22 public static final String DOUBLE = "double"; 23 23 public static final String GEOMETRY = "geometry"; 24 public static final String BOOLEAN = "boolean"; 24 25 25 26 public abstract void setResource(Resource resource); -
tools/routingservice/branches/wrs-2.0/src/model/Resource.java
r290 r291 45 45 IllegalArgumentException, SecurityException, 46 46 InvocationTargetException 47 { 48 System.out.println(">>>>" + poolType.getConstructors()[0].toString()); 49 47 { 50 48 return (ObjectPool) poolType.getConstructors()[0] 51 49 .newInstance(new Object[] { url, user, password }); -
tools/routingservice/branches/wrs-2.0/src/util/format/JSONParser.java
r290 r291 1 1 package util.format; 2 3 import handler.ResourceHandler; 2 4 3 5 import java.util.Iterator; … … 22 24 { 23 25 JSONObject json = new JSONObject(tokener); 24 System.out.println(json.toString());25 26 26 27 Iterator<String> keys = json.keys(); … … 42 43 x.setSource("url"); 43 44 x.setValue(sst.nextToken()); 44 System.out.println(x.getName() + " :" + x.getValue()); 45 x.setType(ResourceHandler.DOUBLE); 46 45 47 params.add(x); 46 48 … … 49 51 y.setSource("url"); 50 52 y.setValue(sst.nextToken()); 51 System.out.println(y.getName() + " :" + y.getValue()); 53 y.setType(ResourceHandler.DOUBLE); 54 52 55 params.add(x); 53 56 params.add(y);
