Hi Ede,
Seems related to the special way OJ handles GeoJSON features and
FeatureSchema.
I explored the feature attributes and schema of the GeoJSON feature with
beanshell,
but could not find what goes wrong :
- the feature seems to have a normal schema with two attributes
(GEOMETRY and attribute1)
- but GeoJSONFeatureCollectionWrapper$1.getAttribute(1) throw the exception
It looks like if feature has a normal schema modified by the
FeatureSchema editing tool
and the original schema from GeoJSONFeatureCollectionWrapper which miss
the new attribute
Michaël
Le 16/01/2020 à 02:00, Rahkonen Jukka (MML) a écrit :
Now with the images I promised to attach.
-Jukka-
*Lähettäjä:*Rahkonen Jukka (MML) <jukka.rahko...@maanmittauslaitos.fi>
*Lähetetty:* torstai 16. tammikuuta 2020 2.02
*Vastaanottaja:* OpenJump develop and use
(jump-pilot-devel@lists.sourceforge.net)
<jump-pilot-devel@lists.sourceforge.net>
*Aihe:* [JPP-Devel] Why attribute panel goes to ghost mode?
Hi,
I have been wondering what happens when OpenJUMP encounters some error
and after that it responds slowly and some panels show only partially.
I try to explain how to make that happen.
1. Start OpenJUMP
2. Add a new layer
3. Add one feature as WKT: POINT (0 0)
4. Save the layer as GeoJSON “point.json”
5. Open that GeoJSON file
6. Open attribute table and see that everything seems normal
7. Make layer editable
8. Edit schema and add a new attribute as “attribute1; String”
9. Apply changes
10. Open the attribute table
The table opens for me as in the attached image #1. If I move the
mouse around where I suppose that the table is I can get some more
details visible (image #2).
I believe there are two issues involved:
1. for some reason the schema of a GeoJSON layer is not properly editable
2. something happens due to 1) that sets the the attribute table into
a spooky state
I have experienced that the ghost window behavior can appear also
after some after unsuccessful operations but I can’t remember any
other examples. Anyway it means that fixing the issue with GeoJSON
will not fix the ghost table issue generally.
Here is the log from the unsuccessful schema edit.
[INFO] 01:56:15.476 Done. Current committed
memory:plugin.AbstractPlugIn.executing = Executing51 MB
Exception in thread "AWT-EventQueue-0"
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at
com.vividsolutions.jump.feature.FeatureSchema.getAttributeType(FeatureSchema.java:144)
at
com.vividsolutions.jump.io.geojson.GeoJSONFeatureCollectionWrapper$1.getAttribute(GeoJSONFeatureCollectionWrapper.java:85)
at
com.vividsolutions.jump.workbench.ui.LayerTableModel$4.getValue(LayerTableModel.java:166)
at
com.vividsolutions.jump.workbench.ui.LayerTableModel$MyColumn.getValueAt(LayerTableModel.java:70)
at
com.vividsolutions.jump.workbench.ui.ColumnBasedTableModel.getValueAt(ColumnBasedTableModel.java:141)
at javax.swing.JTable.getValueAt(Unknown Source)
at javax.swing.JTable.prepareRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown
Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown
Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$1200(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown
Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown
Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown
Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown
Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
-Jukka-
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel