Changeset 291 for tools

Show
Ignore:
Timestamp:
04/10/09 18:55:22 (11 months ago)
Author:
anton
Message:

Resource and Service code refactoring

Location:
tools/routingservice/branches/wrs-2.0
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • tools/routingservice/branches/wrs-2.0/data/profiles.xml

    r287 r291  
    11<?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"> 
    64        <profile name="a7391e864abf6d56c9f9b3784a88bbc7" title="My Test Profile"> 
    75                <description>My test profile I use for testing</description> 
    86                <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> 
    1210                <resources> 
    13                         <rref ref="pgrouting" enabled="true"/> 
     11                        <rref ref="pgrouting" enabled="true" /> 
    1412                </resources> 
    1513        </profile> 
    16          
     14 
    1715</profiles> 
  • tools/routingservice/branches/wrs-2.0/data/resources.xml

    r290 r291  
    11<?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"> 
    76                <description>My test profile I use for testing</description> 
    87                <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> 
    1423                <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" /> 
    1827                </services> 
    1928                <url>jdbc:postgresql://192.168.20.177:5432/hcc</url> 
     
    2130                <password></password> 
    2231                <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$) 
    2533                </query> 
    2634        </resource> 
    27          
     35 
    2836</resources> 
  • tools/routingservice/branches/wrs-2.0/data/services.xml

    r290 r291  
    1010                        <parameter key="startY" type="double" name="y1"/> 
    1111                        <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"/>                  
    1513                </in>            
    1614                <out> 
  • tools/routingservice/branches/wrs-2.0/src/WRS.java

    r290 r291  
    9595                } 
    9696        } 
    97          
     97 
    9898        public enum Fillers 
    9999        { 
    100                 JSON(null), GEOJSON(null), KML(null), GML(GMLTemplateFiller.class), XLS(null), GEORSS( 
    101                                 null), GPX(null); 
     100                JSON(null), GEOJSON(null), KML(null), GML(GMLTemplateFiller.class), XLS( 
     101                                null), GEORSS(null), GPX(null); 
    102102 
    103103                private Class<? extends TemplateFiller> fillerType; 
     
    113113                        return fillerType.newInstance(); 
    114114                } 
    115         }        
     115        } 
    116116 
    117117        public WRS(String[] args) throws Exception 
     
    179179                                                        ArrayList<HashMap<String, Parameter>> output = handler 
    180180                                                                        .handle(serviceRequest, log); 
    181                                                          
    182                                                         String templateName = serviceRequest.getTemplate().getName(); 
    183                                                          
     181 
     182                                                        String templateName = serviceRequest.getTemplate() 
     183                                                                        .getName(); 
     184 
    184185                                                        try 
    185186                                                        { 
    186                                                                 TemplateFiller filler = Fillers.valueOf(templateName.toUpperCase()) 
     187                                                                TemplateFiller filler = Fillers.valueOf( 
     188                                                                                templateName.toUpperCase()) 
    187189                                                                                .getInstance(); 
    188                                                                 result = filler.fillOutputTemplate(serviceRequest, output, 
    189                                                                                 handler, log); 
     190                                                                result = filler.fillOutputTemplate( 
     191                                                                                serviceRequest, output, handler, log); 
    190192                                                        } 
    191193                                                        // TODO process the error more carefully 
    192194                                                        catch (InstantiationException e) 
    193195                                                        { 
    194                                                                 log.logger.warning("Wrong output format " + templateName); 
     196                                                                log.logger.warning("Wrong output format " 
     197                                                                                + templateName); 
    195198                                                        } 
    196199                                                        catch (IllegalAccessException e) 
    197200                                                        { 
    198                                                                 log.logger.warning("Wrong output format " + templateName); 
     201                                                                log.logger.warning("Wrong output format " 
     202                                                                                + templateName); 
    199203                                                        } 
    200204                                                        catch (NullPointerException e) 
    201205                                                        { 
    202                                                                 log.logger.warning("Output format " + templateName + " is not supported yet."); 
     206                                                                log.logger.warning("Output format " 
     207                                                                                + templateName 
     208                                                                                + " is not supported yet."); 
    203209                                                        } 
    204210 
     
    257263        } 
    258264 
    259  
    260265        public ServiceRequest parseURL(Request req) 
    261266                        throws ArrayIndexOutOfBoundsException, InvalidVersionException, 
     
    344349                        String name = ni.next(); 
    345350                        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                        } 
    352367 
    353368                        try 
     
    377392 
    378393        private void addParameters(Hashtable<String, Parameter> parameters, 
    379                         Hashtable<String, Parameter> params) 
     394                        Hashtable<String, Parameter> toAdd) 
    380395        { 
    381396                // 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); 
    383418        } 
    384419 
  • tools/routingservice/branches/wrs-2.0/src/handler/PgRoutingHandler.java

    r290 r291  
    3535 
    3636        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"; 
    3839 
    3940        // Arrays in Services enum's elements specify an order of parameters 
     
    4445                        ArrayList getParameters() 
    4546                        { 
    46                                 String[] p = { "x1", "y1", "x2", "y2", "box", "cost" }; 
     47                                String[] p = { "table", "x1", "y1", "x2", "y2", "box", "cost_value", 
     48                                                "directed", "hasrc" }; 
    4749                                return new ArrayList(Arrays.asList(p)); 
    4850                        } 
     
    6870                if (this.resource != null) 
    6971                { 
    70                         System.out.println("<<<<<<< " + this.resource.getQuery() + " from " 
    71                                         + this.resource.getName()); 
    7272 
    7373                        String query = fillQueryTemplate(this.resource.getQuery(), request 
    7474                                        .getService(), request.getParameters()); 
    75  
    76                         System.out.println(">>>>>>> " + query); 
    7775 
    7876                        ObjectPool<Connection> pool = this.resource.getPool(); 
     
    140138                query.setAttribute(FUNCTION, function); 
    141139 
     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 
    142161                StringBuffer params = new StringBuffer(""); 
    143162 
     
    151170                        { 
    152171                                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)) 
    154177                                { 
    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 + "'"; 
    166179                                } 
    167                                 else 
    168                                 { 
    169                                         // Service doesn't know about the parameter 
    170                                         // TODO do something smart here 
    171                                 } 
     180                                params.append(value); 
     181 
     182                                if (keys.hasNext()) 
     183                                        params.append(","); 
     184 
    172185                        } 
    173186                        catch (NullPointerException e) 
     
    178191                } 
    179192 
    180                 System.out.println(">>PARAMETERS>>>>> " + params.toString()); 
    181                 query.setAttribute(PARAMETERS, params.toString()); 
     193                query.setAttribute(INPUT, params.toString()); 
    182194 
    183195                return query.toString(); 
     
    195207                ArrayList<Point> points = new ArrayList<Point>(); 
    196208                String[] wkts = parseWKT(geom); 
    197                  
     209 
    198210                for (int i = 0; i < wkts.length; i++) 
    199211                { 
  • tools/routingservice/branches/wrs-2.0/src/handler/ResourceHandler.java

    r290 r291  
    2222        public static final String DOUBLE = "double"; 
    2323        public static final String GEOMETRY = "geometry"; 
     24        public static final String BOOLEAN = "boolean"; 
    2425 
    2526        public abstract void setResource(Resource resource); 
  • tools/routingservice/branches/wrs-2.0/src/model/Resource.java

    r290 r291  
    4545                                IllegalArgumentException, SecurityException, 
    4646                                InvocationTargetException 
    47                 { 
    48                         System.out.println(">>>>" + poolType.getConstructors()[0].toString()); 
    49                          
     47                {                        
    5048                        return (ObjectPool) poolType.getConstructors()[0] 
    5149                                        .newInstance(new Object[] { url, user, password }); 
  • tools/routingservice/branches/wrs-2.0/src/util/format/JSONParser.java

    r290 r291  
    11package util.format; 
     2 
     3import handler.ResourceHandler; 
    24 
    35import java.util.Iterator; 
     
    2224                { 
    2325                        JSONObject json = new JSONObject(tokener); 
    24                         System.out.println(json.toString()); 
    2526 
    2627                        Iterator<String> keys = json.keys(); 
     
    4243                                                x.setSource("url"); 
    4344                                                x.setValue(sst.nextToken()); 
    44                                                 System.out.println(x.getName() + " :" + x.getValue()); 
     45                                                x.setType(ResourceHandler.DOUBLE); 
     46                                                 
    4547                                                params.add(x); 
    4648 
     
    4951                                                y.setSource("url"); 
    5052                                                y.setValue(sst.nextToken()); 
    51                                                 System.out.println(y.getName() + " :" + y.getValue()); 
     53                                                y.setType(ResourceHandler.DOUBLE); 
     54                                                 
    5255                                                params.add(x); 
    5356                                                params.add(y);