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");
       }
     }
   }
 }
Example #2
0
  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;
  }
    @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);
    }