-
Notifications
You must be signed in to change notification settings - Fork 74
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);
+ }
+}