[josm-dev] Tasks for all of you
Russ Nelson
nelson at crynwr.com
Mon Dec 29 16:07:40 GMT 2008
Dirk Stöcker writes:
> On Sun, 28 Dec 2008, Russ Nelson wrote:
>
> > Potential improvements:
> > o convert all invocations of OsmReader.parseDataSet() to
> > OsmReader.parseDataSetOsm() to gain access to getParseNotes().
>
> When useful, do it, but be aware of potential problems with plugins when
> changing the interface :-). The drawback of our open plugin interface.
Understood. That's why I didn't change the interface, but instead
added a new call.
I'm not certain it's correct to change the other calls:
In io/OsmServerObjectReader.java, it's reading from the API. Will the
API ever hand out ways without their nodes?
Same for io/OsmServerLocationReader.java and io/BoundingBoxDownloader.java.
> > o Doing something more sensible with the output presentation if
> > there are too many warnings than can fit on the screen (or will it
> > switch to a scrollbox?)
>
> Cut after a certain number of lines and add "..."?
Fixed. 5 lines.
> > o It's possible that DataSet ought to be the entity that has
> > parseNotes. That would make for a simpler patch, but not
> > necessarily more correct.
>
> I don't think this is a good idea. The DataSet remains during lifetime,
> but these notes are only related to import.
Agreed.
> Never construct string or use them without tr() or there is no
> translation.
OOPS!
> Do you provide an updated patch?
Index: src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/OpenFileAction.java (revision 1180)
+++ src/org/openstreetmap/josm/actions/OpenFileAction.java (working copy)
@@ -74,10 +74,20 @@
private void openAsData(File file) throws SAXException, IOException, FileNotFoundException {
String fn = file.getName();
if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
- DataSet dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
+ OsmReader osm = OsmReader.parseDataSetOsm(new FileInputStream(file), null, Main.pleaseWaitDlg);
+ DataSet dataSet = osm.getDs();
OsmDataLayer layer = new OsmDataLayer(dataSet, file.getName(), file);
Main.main.addLayer(layer);
layer.fireDataChange();
+ if (osm.getParseNotes().length() != 0) {
+ /* display at most five lines */
+ String notes = osm.getParseNotes();
+ int j = 0;
+ for (int i = 0; i < 5; i++) {
+ j = notes.indexOf('\n', j + 1);
+ }
+ JOptionPane.showMessageDialog(Main.parent, notes.substring(0, j));
+ }
}
else
JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("Unknown file extension: {0}", fn.substring(file.getName().lastIndexOf('.')+1)));
Index: src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- src/org/openstreetmap/josm/io/OsmReader.java (revision 1180)
+++ src/org/openstreetmap/josm/io/OsmReader.java (working copy)
@@ -59,8 +59,18 @@
* The dataset to add parsed objects to.
*/
private DataSet ds = new DataSet();
+ public DataSet getDs() { return ds; }
/**
+ * Record warnings. If there were any data inconsistencies, append
+ * a newline-terminated string.
+ */
+ private String parseNotes = new String();
+ public String getParseNotes() {
+ return parseNotes;
+ }
+
+ /**
* The visitor to use to add the data to the set.
*/
private AddVisitor adder = new AddVisitor(ds);
@@ -332,6 +342,7 @@
for (long id : e.getValue()) {
Node n = findNode(id);
if (n == null) {
+ parseNotes += tr("Skipping a way because it includes a node that doesn't exist: {0}\n", id);
failed = true;
break;
}
@@ -434,6 +445,10 @@
* elemet found there is returned.
*/
public static DataSet parseDataSet(InputStream source, DataSet ref, PleaseWaitDialog pleaseWaitDlg) throws SAXException, IOException {
+ return parseDataSetOsm(source, ref, pleaseWaitDlg).ds;
+ }
+
+ public static OsmReader parseDataSetOsm(InputStream source, DataSet ref, PleaseWaitDialog pleaseWaitDlg) throws SAXException, IOException {
OsmReader osm = new OsmReader();
osm.references = ref == null ? new DataSet() : ref;
@@ -467,6 +482,6 @@
if (o.id < 0)
o.id = 0;
- return osm.ds;
+ return osm;
}
}
--
--my blog is at http://blog.russnelson.com | Delegislation is a slippery
Crynwr sells support for free software | PGPok | slope to prosperity.
521 Pleasant Valley Rd. | +1 315-323-1241 | Fewer laws, more freedom.
Potsdam, NY 13676-3213 | Sheepdog | (Not a GOP supporter).
More information about the josm-dev
mailing list