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>:

> 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 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> 
> <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>):
>     >
>     > 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> 
> <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>
>     >
>
>
>     
> ------------------------------------------------------------------------------
>     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> 
> <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>
>
>
>
>
> ------------------------------------------------------------------------------
> 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 
> listJump-pilot-devel@lists.sourceforge.nethttps://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 
> listJump-pilot-devel@lists.sourceforge.nethttps://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