Skip to content

v0.2.52..v0.2.53 changeset HootOsmReader.java

Garret Voltz edited this page Feb 12, 2020 · 1 revision
diff --git a/hoot-josm/src/main/java/hoot/core/josm/HootOsmReader.java b/hoot-josm/src/main/java/hoot/core/josm/HootOsmReader.java
new file mode 100644
index 0000000..c9b6c72
--- /dev/null
+++ b/hoot-josm/src/main/java/hoot/core/josm/HootOsmReader.java
@@ -0,0 +1,68 @@
+/*
+ * This file is part of Hootenanny.
+ *
+ * Hootenanny is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * --------------------------------------------------------------------
+ *
+ * The following copyright notices are generated automatically. If you
+ * have a new notice to add, please use the format:
+ * " * @copyright Copyright ..."
+ * This will properly maintain the copyright information. DigitalGlobe
+ * copyrights will be updated automatically.
+ *
+ * @copyright Copyright (C) 2019, 2020 DigitalGlobe (http://www.digitalglobe.com/)
+ */
+package hoot.core.josm;
+
+import java.io.InputStream;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.io.IllegalDataException;
+
+/**
+ * Reads data for use by JOSM validation/cleaning requests from hoot
+ *
+ * The default behavior of OsmReader is to convert all negative ID elements to positive in
+ * preparation for upload to the server. In hoot's case, we want to retain all ID's no matter what.
+ * This overrides the default JOSM OSM reading behavior.
+ */
+public class HootOsmReader extends OsmReader
+{
+  /*
+   * Builds an OsmPrimitive which always retains the source ID
+   */
+  protected OsmPrimitive buildPrimitive(PrimitiveData pd)
+  {
+    OsmPrimitive p;
+    p = pd.getType().newInstance(pd.getUniqueId(), true);
+    p.setVisible(pd.isVisible());
+    p.load(pd);
+    externalIdMap.put(pd.getPrimitiveId(), p);
+    return p;
+  }
+
+  /**
+   * @see OsmReader.parseDataSet
+   */
+  public static DataSet parseDataSet(InputStream source) throws IllegalDataException
+  {
+    Logging.debug("Converting input elements from xml with hoot reader...");
+    return new HootOsmReader().doParseDataSet(source, null);
+  }
+}
Clone this wiki locally