Peppe,

but still Mike is right. for best performance you should wrap the 
FeatureCollection in a TableModel and _not_ duplicate all attributes in memory 
as you do now.

..ede

On 13.12.2017 15:45, Giuseppe Aruta wrote:
> On the previous way I can exclude all the search/build of geometry string and 
> it could be faster (I don't need to get all those POLYGON etc)
> 
> 
>  public static TableModel setTableModelFromFeatureCollection() {
> 
>         final DefaultTableModel model = new DefaultTableModel();
> 
>         String[] fields;
>         int iCount;
> 
>         iCount = featureCollection.getFeatures().size();
>         FeatureSchema schema = featureCollection.getFeatureSchema();
>         ArrayList<String> ar = new ArrayList<String>();
>         String name;
>         for (int j = 0; j < schema.getAttributeNames().size(); j++) {
> 
>             name = schema.getAttributeName(j).toString();
>             ar.add(name);
> 
>         }
>         fields = ar.toArray(new String[0]);
>         // fields = new String[ar.size()];
>         // fields = ar.toArray(fields);
> 
>         final String[][] data = new String[iCount][fields.length];
> 
>         // Feature[] featArray = featureCollection.getFeatures().toArray(
>         // new Feature[0]);
> 
>         for (int i = 0; i < featureCollection.size(); i++) {
>             // < featArray.length; i++) {
>             Feature feat = featureCollection.getFeatures().get(i);
>             // featArray[i];
> 
>             for (int j = 0; j < schema.getAttributeCount(); j++) {
>                 if (feat.getSchema().getAttributeType(j) != 
> AttributeType.GEOMETRY) {
>                     data[i][j] = feat.getAttribute(j).toString();
>                 } else {
>                     String geomType = feat.getGeometry().getClass().getName();
>                     int dotPos = geomType.lastIndexOf(".");
>                     if (dotPos > 0) {
>                         geomType = geomType.substring(dotPos + 1);
>                     }
> 
>                     data[i][j] = geomType.toUpperCase();
>                 }
> 
>             }
> 
>         }
> 
>         model.setDataVector(data, fields);
>         return model;
>     }
> 
> 
> ---------------------------------------------------------------------------------------------------------------
> 
> Anyhow I found an inner OJ way (using LayerTableModel  and creating a new 
> layer from the featurecollection)
> 
>         Layer layer = new Layer("name", Color.gray, featureCollection, 
> context.getLayerManager());
>         LayerTableModel layerMode = new LayerTableModel(layer);
>         List<Feature> features = resultFC.getFeatures();
>         layerMode .addAll(features);
>         AttributeTablePanel panel = new AttributeTablePanel(layerMode , true,
>                 context.getWorkbenchContext());
> 
> It has to pass through the creatuon of a new Layer, even if not loaded into 
> the view.
> Strangely if I don't add first the featurecollection to the new layer and 
> than the features (as list) again to the layer, TablePanel will be empty or I 
> have back an error
> 
> 2017-12-13 13:22 GMT+01:00 Michaël Michaud <m.michael.mich...@orange.fr 
> <mailto:m.michael.mich...@orange.fr>>:
> 
>     Hi,
> 
>     May be you can do something even more direct if you put the 
> featureCollection in an indexed list
> 
>     ArrayList list = new ArrayList(featureCollection.getFeatures())
> 
>     Then use the sample in JTable javadoc to build the model :
> 
>     TableModel dataModel = new AbstractTableModel() {
>               public int getColumnCount() { return 10; } // FeatureSchema 
> column count
>               public int getRowCount() { return 10;}     // list.size()
>               public Object getValueAt(int row, int col) { return new 
> Integer(row*col); }  // list.get(row).getAttribute(col)
>           };
> 
>     But if it is to be used in OpenJUMP, there is probably some benefits to 
> use AttributeTable
>      
>     MM
> 
> 
>     Le 13/12/2017 à 11:07, edgar.sol...@web.de <mailto:edgar.sol...@web.de> a 
> écrit :
>>     hey Peppe,
>>
>>     looks proper. performancewise i would no convert Lists to Arrays, but 
>> iterate them directly. always keep in mind that datasets might get huge.
>>
>>     ..ede
>>
>>     On 13.12.2017 11:01, Giuseppe Aruta wrote:
>>>     Hi Ede
>>>     I checked. It looks complicate for me to load a featurecollection into 
>>> a JTable.
>>>     I found a quick way from Sextante gui, that I modified.
>>>     It generates a loop to fill all JTable records with feature values.
>>>     I post the code below.
>>>
>>>      public static TableModel setTableModelFromFeatureCollection(
>>>                 FeatureCollection featureCollection) {
>>>             final DefaultTableModel model = new DefaultTableModel();
>>>             String[] fields;
>>>             int iCount;
>>>             iCount = featureCollection.getFeatures().size();
>>>             FeatureSchema schema = featureCollection.getFeatureSchema();
>>>             ArrayList<String> ar = new ArrayList<String>();
>>>             String name;
>>>             for (int j = 0; j < schema.getAttributeNames().size(); j++) {
>>>                 name = schema.getAttributeName(j).toString();
>>>                 ar.add(name);
>>>             }
>>>             fields = ar.toArray(new String[0]);
>>>             final String[][] data = new String[iCount][fields.length];
>>>             Feature[] featArray = featureCollection.getFeatures().toArray(
>>>                     new Feature[0]);
>>>             for (int i = 0; i < featArray.length; i++) {
>>>                 Feature feat = featArray[i];
>>>                 for (int j = 0; j < schema.getAttributeCount(); j++) {
>>>                     data[i][j] = feat.getAttribute(j).toString();
>>>                 }
>>>             }
>>>             model.setDataVector(data, fields);
>>>             return model;
>>>         }
>>>
>>>     Peppe
>>>
>>>     2017-12-12 18:23 GMT+01:00 <edgar.sol...@web.de 
>>> <mailto:edgar.sol...@web.de> <mailto:edgar.sol...@web.de> 
>>> <mailto:edgar.sol...@web.de>>:
>>>
>>>         Peppe,
>>>
>>>         did you check the AttributeTable plugin? if there is, it will 
>>> probably be in use there?
>>>
>>>         ..ede
>>>
>>>         On 12.12.2017 17:50, Giuseppe Aruta wrote:
>>>         > Hi all
>>>         > does OJ alreay have a way to load a featurecollection into a 
>>> JTable?
>>>         > I know Geotools has a such way 
>>> (http://docs.geotools.org/stable/userguide/tutorial/filter/query.html 
>>> <http://docs.geotools.org/stable/userguide/tutorial/filter/query.html> 
>>> <http://docs.geotools.org/stable/userguide/tutorial/filter/query.html> 
>>> <http://docs.geotools.org/stable/userguide/tutorial/filter/query.html>):
>>>         >
>>>         > JTable table
>>>         > SimpleFeatureCollection features ....
>>>         > FeatureCollectionTableModel model = new 
>>> FeatureCollectionTableModel(features);
>>>         > table.setModel(model); (*)
>>>         >
>>>         > I don't want to use geotools neither to "reinvent the wheel". Do 
>>> we have something similar (and simple)?
>>>         > thanks in advance.
>>>         >
>>>         > Peppe
>>>         >
>>>         > (*) Geometry attributes are saved as string
>>>         >
>>>         >
>>>         > 
>>> ------------------------------------------------------------------------------
>>>         > 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
>>>         > Jump-pilot-devel@lists.sourceforge.net 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net> 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net> 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net>
>>>         > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
>>>         >
>>>
>>>
>>>         
>>> ------------------------------------------------------------------------------
>>>         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
>>>         Jump-pilot-devel@lists.sourceforge.net 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net> 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net> 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net>
>>>         https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
>>>
>>>
>>>
>>>
>>>     
>>> ------------------------------------------------------------------------------
>>>     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
>>>     Jump-pilot-devel@lists.sourceforge.net 
>>> <mailto:Jump-pilot-devel@lists.sourceforge.net>
>>>     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel 
>>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
>>>
>>     
>> ------------------------------------------------------------------------------
>>     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
>>     Jump-pilot-devel@lists.sourceforge.net 
>> <mailto:Jump-pilot-devel@lists.sourceforge.net>
>>     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel 
>> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
> 
> 
>     
> ------------------------------------------------------------------------------
>     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
>     Jump-pilot-devel@lists.sourceforge.net 
> <mailto:Jump-pilot-devel@lists.sourceforge.net>
>     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel 
> <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> 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
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> 


------------------------------------------------------------------------------
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
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to