Revision: 5290
          http://sourceforge.net/p/jump-pilot/code/5290
Author:   edso
Date:     2016-12-28 14:11:48 +0000 (Wed, 28 Dec 2016)
Log Message:
-----------
make GML/JML reader cancellable and show already parsed featcount

Modified Paths:
--------------
    core/trunk/ChangeLog
    core/trunk/src/com/vividsolutions/jump/io/GMLReader.java
    core/trunk/src/com/vividsolutions/jump/io/JMLReader.java
    core/trunk/src/com/vividsolutions/jump/io/geojson/GeoJSONReader.java
    core/trunk/src/language/jump.properties
    core/trunk/src/language/jump_cz.properties
    core/trunk/src/language/jump_de.properties
    core/trunk/src/language/jump_es.properties
    core/trunk/src/language/jump_fi.properties
    core/trunk/src/language/jump_fr.properties
    core/trunk/src/language/jump_hu.properties
    core/trunk/src/language/jump_it.properties
    core/trunk/src/language/jump_ja_JP.properties
    core/trunk/src/language/jump_ml.properties
    core/trunk/src/language/jump_pt.properties
    core/trunk/src/language/jump_pt_BR.properties
    core/trunk/src/language/jump_ta_IN.properties
    core/trunk/src/language/jump_te.properties
    core/trunk/src/language/jump_zh_CN.properties
    core/trunk/src/language/jump_zh_HK.properties

Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog        2016-12-28 13:06:00 UTC (rev 5289)
+++ core/trunk/ChangeLog        2016-12-28 14:11:48 UTC (rev 5290)
@@ -3,6 +3,9 @@
 # 2. make sure that lines break at 80 chars for constricted display situations
 #<-------------------------------- 80 chars 
---------------------------------->#
 
+2016-12-28 ede
+  * make GML/JML reader cancellable and show already parsed featcount
+
 2016-12-28 mmichaud <[email protected]>
   * fix #449 severe regression in "save project as" introduced in r5178
 

Modified: core/trunk/src/com/vividsolutions/jump/io/GMLReader.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/io/GMLReader.java    2016-12-28 
13:06:00 UTC (rev 5289)
+++ core/trunk/src/com/vividsolutions/jump/io/GMLReader.java    2016-12-28 
14:11:48 UTC (rev 5290)
@@ -32,7 +32,12 @@
 package com.vividsolutions.jump.io;
 
 import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jump.I18N;
 import com.vividsolutions.jump.feature.*;
+import com.vividsolutions.jump.task.TaskMonitor;
+import com.vividsolutions.jump.task.TaskMonitorSupport;
+import com.vividsolutions.jump.task.TaskMonitorUtil;
+import com.vividsolutions.jump.util.Timer;
 
 import org.xml.sax.*;
 import org.xml.sax.helpers.DefaultHandler;
@@ -216,7 +221,7 @@
  * ['...1...','...2...','...3...']
  *
  */
-public class GMLReader extends DefaultHandler implements JUMPReader {
+public class GMLReader extends DefaultHandler implements JUMPReader, 
TaskMonitorSupport {
 
   private static int STATE_GET_COLUMNS = 3;
   private Collection<Exception> exceptions;
@@ -382,6 +387,10 @@
    */
   public void endElement(String uri, String name, String qName)
       throws SAXException {
+    
+    // allow cancellation
+    if (getTaskMonitor().isCancelRequested()) throw new 
SAXCancelledException();
+    
     try {
       int index;
 
@@ -527,6 +536,8 @@
           }
 
           fc.add(currentFeature);
+          report(fc.size());
+
           currentFeature = null;
 
           return;
@@ -754,6 +765,9 @@
 
     try {
       xr.parse(is);
+    } catch (SAXCancelledException e){
+      // we were cancelled
+      fc = null;
     } catch (SAXParseException e) {
       throw new ParseException(e.getMessage() + "  Last Opened Tag: "
           + lastStartTag_qName + ".  Reader reports last line read as "
@@ -797,6 +811,10 @@
    */
   public void startElement(String uri, String name, String qName,
       Attributes atts) throws SAXException {
+    
+    // allow cancellation
+    if (getTaskMonitor().isCancelRequested()) throw new 
SAXCancelledException();
+    
     try {
       // System.out.println("Start element: " + qName);
       tagBody = new StringBuffer();
@@ -1077,4 +1095,32 @@
       exceptions = new ArrayList<>();
     return exceptions;
   }
+  
+  private TaskMonitor taskMonitor = null;
+  
+  public void setTaskMonitor(TaskMonitor taskMonitor) {
+    this.taskMonitor = taskMonitor;
+  }
+
+  public TaskMonitor getTaskMonitor() {
+    return taskMonitor;
+  }
+  
+  private long milliSeconds = 0;
+
+  private void report( int num ){
+    long now = Timer.milliSecondsSince(0);
+    // show status every .5s
+    if (now - 500 >= milliSeconds) {
+      milliSeconds = now;
+      TaskMonitorUtil.report(
+          getTaskMonitor(),
+          I18N.getMessage("Reader.parsed-{0}-features",
+              String.format("%,10d", num)));
+    }
+  }
 }
+
+class SAXCancelledException extends SAXException{
+  // dummy to allow proper cancellation
+}
\ No newline at end of file

Modified: core/trunk/src/com/vividsolutions/jump/io/JMLReader.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/io/JMLReader.java    2016-12-28 
13:06:00 UTC (rev 5289)
+++ core/trunk/src/com/vividsolutions/jump/io/JMLReader.java    2016-12-28 
14:11:48 UTC (rev 5290)
@@ -110,6 +110,7 @@
         }
 
         gmlReader = new GMLReader();
+        gmlReader.setTaskMonitor(getTaskMonitor());
 
         return gmlReader.read(dp);
     }

Modified: core/trunk/src/com/vividsolutions/jump/io/geojson/GeoJSONReader.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/io/geojson/GeoJSONReader.java        
2016-12-28 13:06:00 UTC (rev 5289)
+++ core/trunk/src/com/vividsolutions/jump/io/geojson/GeoJSONReader.java        
2016-12-28 14:11:48 UTC (rev 5290)
@@ -87,7 +87,7 @@
     private Stack valueStack;
     private Object featsId = null;
     private GeoJSONFeatureCollectionWrapper fcwrap = null;
-    private long milliSeconds = 0;;
+    private long milliSeconds = 0;
 
     public Transformer(GeoJSONFeatureCollectionWrapper fcwrap) {
       this.fcwrap = fcwrap;
@@ -120,7 +120,7 @@
             milliSeconds = now;
             TaskMonitorUtil.report(
                 monitor,
-                I18N.getMessage("GeoJSONReader.parsed-{0}-features",
+                I18N.getMessage("Reader.parsed-{0}-features",
                     String.format("%,10d", fcwrap.size())));
           }
         } catch (Exception e) {

Modified: core/trunk/src/language/jump.properties
===================================================================
--- core/trunk/src/language/jump.properties     2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump.properties     2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2777,4 +2777,4 @@
 org.openjump.core.ui.plugin.layer.ExtractLayersByGeometry.empty=empty
 org.openjump.core.ui.plugin.layer.ExtractLayersByGeometry.line=Line
 GeoJSONWriter.writing-features=Writing features...
-GeoJSONReader.parsed-{0}-features=Parsed {0} features.
\ No newline at end of file
+Reader.parsed-{0}-features=Parsed {0} features.
\ No newline at end of file

Modified: core/trunk/src/language/jump_cz.properties
===================================================================
--- core/trunk/src/language/jump_cz.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_cz.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2749,7 +2749,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_de.properties
===================================================================
--- core/trunk/src/language/jump_de.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_de.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2745,7 +2745,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=Schreibe Objekte...
-GeoJSONReader.parsed-{0}-features={0} Objekte gelesen.
+Reader.parsed-{0}-features={0} Objekte gelesen.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_es.properties
===================================================================
--- core/trunk/src/language/jump_es.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_es.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2728,7 +2728,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_fi.properties
===================================================================
--- core/trunk/src/language/jump_fi.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_fi.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2722,7 +2722,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_fr.properties
===================================================================
--- core/trunk/src/language/jump_fr.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_fr.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2752,7 +2752,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=Supprimer les petits 
trous
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=Simplifier 
(Supprimer les petits segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=le point int\xE9rieur intersecte
 ui.GenericNames.intersects-interior-point=intersecte le point int\xE9rieur
 org.openjump.core.ui.plugin.queries.Operator.intip=intersecte le point 
int\xE9rieur

Modified: core/trunk/src/language/jump_hu.properties
===================================================================
--- core/trunk/src/language/jump_hu.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_hu.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2745,7 +2745,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_it.properties
===================================================================
--- core/trunk/src/language/jump_it.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_it.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2728,7 +2728,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=Rimuovi piccoli buchi
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=Simplifica (Rimuovi 
piccoli segmenti)
 GeoJSONWriter.writing-features=Scrivendo elementi...
-GeoJSONReader.parsed-{0}-features=Analizzati {0} elementi.
+Reader.parsed-{0}-features=Analizzati {0} elementi.
 ui.GenericNames.interior-point-intersects=Intersezioni punto interiore
 ui.GenericNames.intersects-interior-point=Interseca punto interiore
 org.openjump.core.ui.plugin.queries.Operator.intip=Intersezioni punto interiore

Modified: core/trunk/src/language/jump_ja_JP.properties
===================================================================
--- core/trunk/src/language/jump_ja_JP.properties       2016-12-28 13:06:00 UTC 
(rev 5289)
+++ core/trunk/src/language/jump_ja_JP.properties       2016-12-28 14:11:48 UTC 
(rev 5290)
@@ -2747,7 +2747,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_ml.properties
===================================================================
--- core/trunk/src/language/jump_ml.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_ml.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -4018,7 +4018,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_pt.properties
===================================================================
--- core/trunk/src/language/jump_pt.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_pt.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -2743,7 +2743,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_pt_BR.properties
===================================================================
--- core/trunk/src/language/jump_pt_BR.properties       2016-12-28 13:06:00 UTC 
(rev 5289)
+++ core/trunk/src/language/jump_pt_BR.properties       2016-12-28 14:11:48 UTC 
(rev 5290)
@@ -2744,7 +2744,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_ta_IN.properties
===================================================================
--- core/trunk/src/language/jump_ta_IN.properties       2016-12-28 13:06:00 UTC 
(rev 5289)
+++ core/trunk/src/language/jump_ta_IN.properties       2016-12-28 14:11:48 UTC 
(rev 5290)
@@ -2746,7 +2746,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_te.properties
===================================================================
--- core/trunk/src/language/jump_te.properties  2016-12-28 13:06:00 UTC (rev 
5289)
+++ core/trunk/src/language/jump_te.properties  2016-12-28 14:11:48 UTC (rev 
5290)
@@ -3252,7 +3252,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_zh_CN.properties
===================================================================
--- core/trunk/src/language/jump_zh_CN.properties       2016-12-28 13:06:00 UTC 
(rev 5289)
+++ core/trunk/src/language/jump_zh_CN.properties       2016-12-28 14:11:48 UTC 
(rev 5290)
@@ -2907,7 +2907,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (Remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=#T:intersects interior point
 org.openjump.core.ui.plugin.queries.Operator.intip=#T:intersects interior point

Modified: core/trunk/src/language/jump_zh_HK.properties
===================================================================
--- core/trunk/src/language/jump_zh_HK.properties       2016-12-28 13:06:00 UTC 
(rev 5289)
+++ core/trunk/src/language/jump_zh_HK.properties       2016-12-28 14:11:48 UTC 
(rev 5290)
@@ -2908,7 +2908,7 @@
 ui.plugin.analysis.GeometryFunction.Remove-Small-Holes=#T:Remove Small Holes
 ui.plugin.analysis.GeometryFunction.Remove-Small-Segments=#T:Simplify (remove 
small segments)
 GeoJSONWriter.writing-features=#T:Writing features...
-GeoJSONReader.parsed-{0}-features=#T:Parsed {0} features.
+Reader.parsed-{0}-features=#T:Parsed {0} features.
 ui.GenericNames.interior-point-intersects=#T:interior point intersects
 ui.GenericNames.intersects-interior-point=
 org.openjump.core.ui.plugin.queries.Operator.ipint=#T:interior point intersects


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to