private void writeContent(XmlSerializer sz, OsmPoint[] points, Action a) throws IllegalArgumentException, IllegalStateException, IOException { for (OsmPoint point : points) { if (point.getGroup() == OsmPoint.Group.POI) { OpenstreetmapPoint p = (OpenstreetmapPoint) point; if (p.getAction() == a) { sz.startTag("", "node"); sz.attribute("", "lat", p.getLatitude() + ""); sz.attribute("", "lon", p.getLongitude() + ""); sz.attribute("", "id", p.getId() + ""); for (String tag : p.getEntity().getTagKeySet()) { String val = p.getEntity().getTag(tag); sz.startTag("", "tag"); sz.attribute("", "k", tag); sz.attribute("", "v", val); sz.endTag("", "tag"); } sz.endTag("", "node"); } } else if (point.getGroup() == OsmPoint.Group.BUG) { OsmNotesPoint p = (OsmNotesPoint) point; if (p.getAction() == a) { sz.startTag("", "note"); sz.attribute("", "lat", p.getLatitude() + ""); sz.attribute("", "lon", p.getLongitude() + ""); sz.attribute("", "id", p.getId() + ""); sz.startTag("", "comment"); sz.attribute("", "text", p.getText() + ""); sz.endTag("", "comment"); sz.endTag("", "note"); } } } }
@Override protected Integer doInBackground(OsmPoint... points) { int uploaded = 0; for (OsmPoint point : points) { if (interruptUploading) break; if (point.getGroup() == OsmPoint.Group.POI) { OpenstreetmapPoint p = (OpenstreetmapPoint) point; EntityInfo entityInfo = null; if (OsmPoint.Action.CREATE != p.getAction()) { entityInfo = remotepoi.loadNode(p.getEntity()); } Node n = remotepoi.commitNodeImpl( p.getAction(), p.getEntity(), entityInfo, p.getComment(), false); if (n != null) { dbpoi.deletePOI(p); publishProgress(p); uploaded++; } } else if (point.getGroup() == OsmPoint.Group.BUG) { OsmNotesPoint p = (OsmNotesPoint) point; boolean success = false; if (p.getAction() == OsmPoint.Action.CREATE) { success = remotebug.createNewBug(p.getLatitude(), p.getLongitude(), p.getText()) == null; } else if (p.getAction() == OsmPoint.Action.MODIFY) { success = remotebug.addingComment(p.getId(), p.getText()) == null; } else if (p.getAction() == OsmPoint.Action.DELETE) { success = remotebug.closingBug(p.getId(), p.getText()) == null; } if (success) { dbbug.deleteAllBugModifications(p); uploaded++; publishProgress(p); } } } return Integer.valueOf(uploaded); }
protected List<OpenStreetNote> loadingBugs( double topLatitude, double leftLongitude, double bottomLatitude, double rightLongitude) { final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; String SITE_API; if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { SITE_API = "https://api.openstreetmap.org/"; } else { SITE_API = "http://api.openstreetmap.org/"; } List<OpenStreetNote> bugs = new ArrayList<OpenStreetNote>(); StringBuilder b = new StringBuilder(); b.append(SITE_API + "api/0.6/notes?bbox="); // $NON-NLS-1$ b.append(leftLongitude); // $NON-NLS-1$ b.append(",").append(bottomLatitude); // $NON-NLS-1$ b.append(",").append(rightLongitude); // $NON-NLS-1$ b.append(",").append(topLatitude); // $NON-NLS-1$ try { log.info("Loading bugs " + b); // $NON-NLS-1$ URLConnection connection = NetworkUtils.getHttpURLConnection(b.toString()); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); XmlPullParser parser = Xml.newPullParser(); parser.setInput(reader); int tok; OpenStreetNote current = null; int commentIndex = 0; while ((tok = parser.next()) != XmlPullParser.END_DOCUMENT) { if (tok == XmlPullParser.START_TAG) { if (parser.getName().equals("note")) { current = new OpenStreetNote(); commentIndex = -1; current.setLongitude(Double.parseDouble(parser.getAttributeValue("", "lon"))); current.setLatitude(Double.parseDouble(parser.getAttributeValue("", "lat"))); current.setOpened(true); bugs.add(current); } else if (parser.getName().equals("status") && current != null) { current.setOpened("open".equals(readText(parser, "status"))); } else if (parser.getName().equals("id") && current != null) { current.id = Long.parseLong(readText(parser, "id")); } else if (parser.getName().equals("comment")) { commentIndex++; } else if (parser.getName().equals("user") && current != null) { if (commentIndex == current.users.size()) { current.users.add(readText(parser, "user")); } } else if (parser.getName().equals("date") && current != null) { if (commentIndex == current.dates.size()) { current.dates.add(readText(parser, "date")); } } else if (parser.getName().equals("text") && current != null) { if (commentIndex == current.comments.size()) { current.comments.add(readText(parser, "text")); } } } } reader.close(); } catch (IOException e) { log.warn("Error loading bugs", e); // $NON-NLS-1$ } catch (NumberFormatException e) { log.warn("Error loading bugs", e); // $NON-NLS-1$ } catch (RuntimeException e) { log.warn("Error loading bugs", e); // $NON-NLS-1$ } catch (XmlPullParserException e) { log.warn("Error loading bugs", e); // $NON-NLS-1$ } for (OsmNotesPoint p : local.getOsmbugsPoints()) { if (p.getId() < 0) { OpenStreetNote bug = new OpenStreetNote(); bug.setId(p.getId()); bug.setLongitude(p.getLongitude()); bug.setLatitude(p.getLatitude()); bug.dates.add(""); bug.users.add(activity.getMyApplication().getSettings().USER_NAME.get()); bug.comments.add(p.getText()); bug.setOpened(p.getAction() == Action.CREATE || p.getAction() == Action.MODIFY); bug.setLocal(true); bugs.add(bug); } } return bugs; }