List of usage examples for com.google.gson.stream JsonReader beginArray
public void beginArray() throws IOException
From source file:de.sabian.objectstore.ObjectStoreRaw.java
License:Apache License
public <T, X> boolean fillMap(String identifier, Class<T> classOfKeys, Class<X> classOfValues, Map<T, X> map) throws IOException { if (contains(identifier)) { JsonReader jReader = new JsonReader(new StringReader(mJsonStorage.getJson(identifier))); jReader.beginArray(); while (jReader.hasNext()) { jReader.beginObject();/*from w w w . j a v a 2s.co m*/ String name = jReader.nextName(); if (!name.equals("key")) throw new IOException("expected name key but found: " + name); T key = mGson.fromJson(jReader, classOfKeys); name = jReader.nextName(); if (!name.equals("value")) throw new IOException("expected name value but found: " + name); X value = mGson.fromJson(jReader, classOfValues); jReader.endObject(); map.put(key, value); } jReader.endArray(); jReader.close(); return true; } else return false; }
From source file:de.winniehell.battlebeavers.storage.GameStorage.java
License:Open Source License
/** * loads the storage from file//from w ww.j a v a2 s.c om * @throws FileNotFoundException */ private void loadFromFile() throws FileNotFoundException { if (!(new File(getFileName())).exists()) { final GameInfo info = GameInfo.fromFile(context, game); Log.d(TAG, "Copying maps/" + info.getMapName() + "/setup.json"); try { final InputStream src = context.getAssets().open("maps/" + info.getMapName() + "/setup.json"); final FileOutputStream dest = new FileOutputStream(getFileName()); StreamUtils.copyAndClose(src, dest); } catch (final IOException e) { Log.e(TAG, "Copying map failed!", e); return; } } try { Log.d(TAG, "loading: " + StreamUtils.readFully(new FileInputStream(getFileName()))); } catch (final Exception e) { Log.e(TAG, e.getMessage()); return; } final Gson gson = CustomGSON.getInstance(); final JsonReader reader = CustomGSON.getReader(context, getFileName()); // file does not exist if (reader == null) { throw new FileNotFoundException(getFileName()); } try { reader.beginArray(); while (reader.hasNext()) { final Soldier soldier = gson.fromJson(reader, Soldier.class); try { addSoldier(soldier); } catch (final UnexpectedTileContentException e) { Log.e(TAG, "Adding soldier failed!", e); } } reader.endArray(); } catch (final Exception e) { Log.e(TAG, "Loading game storage failed!", e); } finally { try { reader.close(); } catch (final IOException e) { Log.e(TAG, "Closing reader failed!", e); } } }
From source file:edu.isi.karma.modeling.alignment.GraphUtil.java
License:Apache License
public static DirectedWeightedMultigraph<Node, DefaultLink> readGraph(JsonReader reader) throws IOException { DirectedWeightedMultigraph<Node, DefaultLink> graph = new DirectedWeightedMultigraph<Node, DefaultLink>( LabeledLink.class); Node n, source, target;//from w w w . j a va2 s . co m DefaultLink l; Double[] weight = new Double[1]; HashMap<String, Node> idToNodes = new HashMap<>(); reader.beginObject(); while (reader.hasNext()) { String key = reader.nextName(); if (key.equals("nodes") && reader.peek() != JsonToken.NULL) { reader.beginArray(); while (reader.hasNext()) { n = readNode(reader); if (n != null) { idToNodes.put(n.getId(), n); graph.addVertex(n); } } reader.endArray(); } else if (key.equals("links") && reader.peek() != JsonToken.NULL) { reader.beginArray(); while (reader.hasNext()) { l = readLink(reader, weight); if (l != null) { source = idToNodes.get(LinkIdFactory.getLinkSourceId(l.getId())); target = idToNodes.get(LinkIdFactory.getLinkTargetId(l.getId())); if (source != null && target != null) { graph.addEdge(source, target, l); if (weight[0] != null) graph.setEdgeWeight(l, weight[0].doubleValue()); } } } reader.endArray(); } else { reader.skipValue(); } } reader.endObject(); return graph; }
From source file:edu.isi.karma.modeling.alignment.GraphUtil.java
License:Apache License
private static Node readNode(JsonReader reader) throws IOException { String id = null;/*from w w w . ja va 2 s . c om*/ Label label = null; NodeType type = null; String hNodeId = null; String columnName = null; Label rdfLiteralType = null; String language = null; Label datatype = null; String value = null; boolean isUri = false; SemanticType userSelectedSemanticType = null; List<SemanticType> learnedSemanticTypes = null; List<SemanticType> userSemanticTypes = null; Set<String> modelIds = null; reader.beginObject(); while (reader.hasNext()) { String key = reader.nextName(); if (key.equals("id") && reader.peek() != JsonToken.NULL) { id = reader.nextString(); } else if (key.equals("label") && reader.peek() != JsonToken.NULL) { label = readLabel(reader); } else if (key.equals("type") && reader.peek() != JsonToken.NULL) { type = NodeType.valueOf(reader.nextString()); } else if (key.equals("hNodeId") && reader.peek() != JsonToken.NULL) { hNodeId = reader.nextString(); } else if (key.equals("columnName") && reader.peek() != JsonToken.NULL) { columnName = reader.nextString(); } else if (key.equals("datatype") && reader.peek() != JsonToken.NULL) { datatype = readLabel(reader); } else if (key.equals("value") && reader.peek() != JsonToken.NULL) { value = reader.nextString(); } else if (key.equals("isUri") && reader.peek() != JsonToken.NULL) { isUri = Boolean.parseBoolean(reader.nextString()); } else if (key.equals("rdfLiteralType") && reader.peek() != JsonToken.NULL) { rdfLiteralType = readLabel(reader); } else if (key.equals("language") && reader.peek() != JsonToken.NULL) { language = reader.nextString(); } else if (key.equals("userSelectedSemanticType") && reader.peek() != JsonToken.NULL) { userSelectedSemanticType = readSemanticType(reader); } else if (key.equals("suggestedSemanticTypes") && reader.peek() != JsonToken.NULL) { learnedSemanticTypes = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { SemanticType semanticType = readSemanticType(reader); learnedSemanticTypes.add(semanticType); } reader.endArray(); } else if (key.equals("userSemanticTypes") && reader.peek() != JsonToken.NULL) { userSemanticTypes = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { SemanticType semanticType = readSemanticType(reader); userSemanticTypes.add(semanticType); } reader.endArray(); } else if (key.equals("learnedSemanticTypes") && reader.peek() != JsonToken.NULL) { learnedSemanticTypes = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { SemanticType semanticType = readSemanticType(reader); learnedSemanticTypes.add(semanticType); } reader.endArray(); } else if (key.equals("modelIds") && reader.peek() != JsonToken.NULL) { modelIds = readModelIds(reader); } else { reader.skipValue(); } } reader.endObject(); Node n = null; if (type == NodeType.InternalNode) { n = new InternalNode(id, label); } else if (type == NodeType.ColumnNode) { n = new ColumnNode(id, hNodeId, columnName, rdfLiteralType, language); if (userSemanticTypes == null && userSelectedSemanticType != null) { userSemanticTypes = new ArrayList<>(); userSemanticTypes.add(userSelectedSemanticType); } if (userSemanticTypes != null) { for (SemanticType st : userSemanticTypes) ((ColumnNode) n).assignUserType(st); } ((ColumnNode) n).setLearnedSemanticTypes(learnedSemanticTypes); } else if (type == NodeType.LiteralNode) { n = new LiteralNode(id, value, datatype, language, isUri); } else { logger.error("cannot instanciate a node from the type: " + type.toString()); return null; } n.setModelIds(modelIds); return n; }
From source file:edu.isi.karma.modeling.alignment.GraphUtil.java
License:Apache License
private static Set<String> readModelIds(JsonReader reader) throws IOException { Set<String> modelIds = new HashSet<>(); reader.beginArray(); while (reader.hasNext()) { modelIds.add(reader.nextString()); }/*ww w. j a v a 2 s. co m*/ reader.endArray(); return modelIds; }
From source file:edu.isi.karma.modeling.alignment.SemanticModel.java
License:Apache License
private static SemanticModel readModel(JsonReader reader) throws IOException { String id = null;//from w w w.j av a 2 s. c o m String name = null; String description = null; DirectedWeightedMultigraph<Node, DefaultLink> graph = null; List<ColumnNode> sourceColumns = null; HashMap<String, ColumnNode> sourceColumnIds = null; Map<String, String> mappingToSourceColumnsIds = null; reader.beginObject(); while (reader.hasNext()) { String key = reader.nextName(); if (key.equals("id") && reader.peek() != JsonToken.NULL) { id = reader.nextString(); } else if (key.equals("name") && reader.peek() != JsonToken.NULL) { name = reader.nextString(); } else if (key.equals("description") && reader.peek() != JsonToken.NULL) { description = reader.nextString(); } else if (key.equals("sourceColumns") && reader.peek() != JsonToken.NULL) { sourceColumns = new LinkedList<>(); sourceColumnIds = new HashMap<>(); reader.beginArray(); while (reader.hasNext()) { ColumnNode cn = readSourceColumn(reader); if (cn != null) { sourceColumns.add(cn); sourceColumnIds.put(cn.getId(), cn); } } reader.endArray(); } else if (key.equals("mappingToSourceColumns") && reader.peek() != JsonToken.NULL) { mappingToSourceColumnsIds = new HashMap<>(); Map<String, String> oneEntryMapping; reader.beginArray(); while (reader.hasNext()) { oneEntryMapping = readMappingToSourceColumn(reader); if (oneEntryMapping != null && oneEntryMapping.size() == 1) mappingToSourceColumnsIds.putAll(oneEntryMapping); } reader.endArray(); } else if (key.equals("graph") && reader.peek() != JsonToken.NULL) { graph = GraphUtil.readGraph(reader); } else { reader.skipValue(); } } reader.endObject(); Map<ColumnNode, ColumnNode> mappingToSourceColumns = new HashMap<>(); if (graph != null && mappingToSourceColumnsIds != null && !mappingToSourceColumnsIds.isEmpty()) { for (Node n : graph.vertexSet()) { if (n instanceof ColumnNode) { ColumnNode cn = (ColumnNode) n; String sourceColumnId = mappingToSourceColumnsIds.get(cn.getId()); if (sourceColumnId != null) { ColumnNode sourceColumn = sourceColumnIds.get(sourceColumnId); if (sourceColumn != null) mappingToSourceColumns.put(cn, sourceColumn); } } } } SemanticModel semanticModel = new SemanticModel(id, GraphUtil.asLabeledGraph(graph), sourceColumns, mappingToSourceColumns); semanticModel.setName(name); semanticModel.setDescription(description); return semanticModel; }
From source file:edu.rpi.shuttles.data.RPIShuttleDataProvider.java
License:Apache License
public SparseArray<Stop> fetchStops() throws IOException { // Download stop data. URL stopsURL = new URL(mStopsUrl); URLConnection stopsConnection = stopsURL.openConnection(); stopsConnection.setRequestProperty("User-Agent", mUserAgent); InputStream in = new BufferedInputStream(stopsConnection.getInputStream()); JsonReader reader = new JsonReader(new InputStreamReader(in)); mStops.clear();/*from w w w . j a va2 s . c o m*/ mRouteStopsMap.clear(); reader.beginArray(); while (reader.hasNext()) { Stop stop = readStop(reader); mStops.put(stop.id, stop); } reader.endArray(); reader.close(); return mStops; }
From source file:edu.rpi.shuttles.data.RPIShuttleDataProvider.java
License:Apache License
private Stop readStop(JsonReader reader) throws IOException { Stop stop = new Stop(); ArrayList<Integer> routes = new ArrayList<Integer>(); reader.beginObject();/* w w w . jav a 2 s.c om*/ reader.nextName(); reader.beginObject(); while (reader.hasNext()) { String key = reader.nextName(); if (key.equals("id")) { stop.id = reader.nextInt(); } else if (key.equals("name")) { stop.name = reader.nextString(); } else if (key.equals("short_name")) { stop.short_name = reader.nextString(); } else if (key.equals("enabled")) { stop.enabled = reader.nextBoolean(); } else if (key.equals("latitude")) { stop.latitude = reader.nextDouble(); } else if (key.equals("longitude")) { stop.longitude = reader.nextDouble(); } else if (key.equals("routes")) { reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); while (reader.hasNext()) { if (reader.nextName().equals("id")) { routes.add(reader.nextInt()); } else { reader.skipValue(); } } reader.endObject(); } reader.endArray(); } else { stop.extraAttributes.put(key, reader.nextString()); } } reader.endObject(); reader.endObject(); Log.d("RPIDataProvider", String.format("Pulling stop %S (%S)...", Integer.toString(stop.id), stop.name)); for (int i = 0; i < routes.size(); i++) { ArrayList<Integer> route = mRouteStopsMap.get(routes.get(i), new ArrayList<Integer>()); route.add(stop.id); mRouteStopsMap.put(routes.get(i), route); } return stop; }
From source file:edu.rpi.shuttles.data.RPIShuttleDataProvider.java
License:Apache License
public SparseArray<Route> fetchRoutes() throws IOException { URL routesURL = new URL(mRoutesUrl); URLConnection routesConnection = routesURL.openConnection(); routesConnection.setRequestProperty("User-Agent", mUserAgent); InputStream in = new BufferedInputStream(routesConnection.getInputStream()); URL routePathsURL = new URL(mRoutePathsUrl); URLConnection routePathsConnection = routePathsURL.openConnection(); routePathsConnection.setRequestProperty("User-Agent", mUserAgent); InputStream pathInputStream = new BufferedInputStream(routePathsConnection.getInputStream()); mRoutes.clear();/*from w w w . java 2 s. com*/ JsonReader routesReader = new JsonReader(new InputStreamReader(in)); routesReader.beginArray(); while (routesReader.hasNext()) { Route route = readRoute(routesReader); mRoutes.put(route.id, route); } routesReader.endArray(); JsonReader routePathReader = new JsonReader(new InputStreamReader(pathInputStream)); routePathReader.beginObject(); while (routePathReader.hasNext()) { Log.d("RouteDataProvider", "Entering L1."); String key = routePathReader.nextName(); Log.d("RouteDataProvider", String.format("L1: %s", key)); if (key.equals("routes")) { Log.d("RouteDataProvider", "Found 'routes' tag."); routePathReader.beginArray(); while (routePathReader.hasNext()) { populateRoutePath(routePathReader); } routePathReader.endArray(); } else { Log.d("RouteDataProvider", "Found other tag."); routePathReader.skipValue(); } } routePathReader.endObject(); return mRoutes; }
From source file:edu.rpi.shuttles.data.RPIShuttleDataProvider.java
License:Apache License
private void populateRoutePath(JsonReader reader) throws IOException { ArrayList<Coordinate> path = new ArrayList<Coordinate>(); Integer path_id = 0;//from www .j a v a 2 s.c o m reader.beginObject(); while (reader.hasNext()) { // Process attributes of a route. // We have the array of coordinates making up the path of the route on a map. String key = reader.nextName(); if (key.equals("coords")) { Double latitude = 0.0; Double longitude = 0.0; reader.beginArray(); // Read coordinate attributes and add to path. while (reader.hasNext()) { reader.beginObject(); // Read coordinate attributes. while (reader.hasNext()) { String coordinate_key = reader.nextName(); if (coordinate_key.equals("latitude")) { latitude = reader.nextDouble(); } else if (coordinate_key.equals("longitude")) { longitude = reader.nextDouble(); } else { reader.skipValue(); } } reader.endObject(); // Add coordinate to path. path.add(new Coordinate(latitude, longitude)); Log.d("CreatePoint", String.format("Inserting point %S, %S", latitude.toString(), longitude.toString())); } reader.endArray(); } else if (key.equals("id")) { path_id = reader.nextInt(); } else { reader.skipValue(); } } reader.endObject(); Route route = mRoutes.get(path_id); route.map_polyline = path; mRoutes.put(path_id, route); Log.d("RouteDataProvider", String.format("Pulling route %S (%S) with %s coordinates...", Integer.toString(route.id), route.name, Integer.valueOf(route.map_polyline.size()).toString())); }