root/tools/routingservice/branches/wrs-2.0/src/util/format/JSONParser.java

Revision 347, 3.4 KB (checked in by anton, 14 months ago)

900913 projection added to GeoTools?, points reprojection fixed

Line 
1/*  WRS 2.0
2 *  Copyright (C) 2009 Anton Patrushev
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18package util.format;
19
20import java.util.Iterator;
21import java.util.StringTokenizer;
22import java.util.Vector;
23
24import org.json.JSONArray;
25import org.json.JSONException;
26import org.json.JSONObject;
27import org.json.JSONTokener;
28
29import util.Parameter;
30
31public class JSONParser extends FormatParser
32{
33
34        @SuppressWarnings("unchecked")
35        @Override
36        public Vector<Parameter> parseInput(String text)
37        {
38                Vector<Parameter> params = new Vector<Parameter>();
39                JSONTokener tokener = new JSONTokener(text);
40                try
41                {
42                        JSONObject json = new JSONObject(tokener);
43
44                        Iterator<String> keys = json.keys();
45                        while (keys.hasNext())
46                        {
47                                String key = keys.next();
48                                switch (DataTypes.valueOf(key.toUpperCase()))
49                                {
50                                case POINTS:
51                                        JSONArray data = json.getJSONArray(key);
52                                        for(int i = 0; i < data.length(); ++i)
53                                        {
54                                                String point = data.getString(i);
55                                                StringTokenizer sst = new StringTokenizer(point, " ");
56                                                Parameter x = new Parameter();
57                                                x.setName("x" + (i+1));
58                                                x.setSource("url");
59                                                x.setValue(sst.nextToken().trim());
60                                                x.setType(DataTypes.DOUBLE.name());
61
62                                                params.add(x);
63
64                                                Parameter y = new Parameter();
65                                                y.setName("y" + (i+1));
66                                                y.setSource("url");
67                                                y.setValue(sst.nextToken().trim());
68                                                y.setType(DataTypes.DOUBLE.name());
69
70                                                params.add(y);
71                                        }
72                                        break;
73                                case DISTANCE:
74                                        String distance = json.getString(key).trim();
75                                        Parameter dist = new Parameter();
76                                        dist.setName("distance");
77                                        dist.setSource("url");
78                                        dist.setValue(distance);
79                                        dist.setType(DataTypes.DOUBLE.name());
80                                        params.add(dist);
81                                        break;
82                                case CRS:
83                                        String crs = json.getString(key);
84                                        StringTokenizer crsst = new StringTokenizer(crs, ",");
85
86                                        Parameter in = new Parameter();
87                                        in.setName("srid_in");
88                                        in.setSource("url");
89                                        in.setValue(crsst.nextToken().trim());
90                                        in.setType(DataTypes.INTEGER.name());
91
92                                        params.add(in);
93                                       
94                                        Parameter out = new Parameter();
95                                        out.setName("srid_out");
96                                        out.setSource("url");
97
98                                        if (crsst.hasMoreTokens())
99                                        {
100                                                out.setValue(crsst.nextToken().trim());
101                                        }
102                                        else
103                                        {
104                                                out.setValue(in.getValue());
105                                        }
106                                                                               
107                                        out.setType(DataTypes.INTEGER.name());
108
109                                        params.add(out);
110                                       
111                                        break;
112                                case ADDRESS:
113                                        String address = json.getString(key).trim();
114                                        Parameter addr = new Parameter();
115                                        addr.setName("address");
116                                        addr.setSource("url");
117                                        addr.setValue(address);
118                                        addr.setType(DataTypes.STRING.name());
119                                        params.add(addr);
120                                        break;
121                                //TODO add default case here for overridable parameters
122                                }
123                        }
124
125                }
126                catch (JSONException e)
127                {
128                        // TODO Auto-generated catch block
129                        e.printStackTrace();
130                }
131                return params;
132        }
133
134}
Note: See TracBrowser for help on using the browser.