Revision: 5978
          http://sourceforge.net/p/jump-pilot/code/5978
Author:   ma15569
Date:     2018-10-12 11:45:51 +0000 (Fri, 12 Oct 2018)
Log Message:
-----------
Changed to org.openjump.sigle.utilities.geom.FeatureCollectionUtil methods 
which seem to work better

Modified Paths:
--------------
    core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java

Modified: core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java 2018-10-12 
09:26:28 UTC (rev 5977)
+++ core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java 2018-10-12 
11:45:51 UTC (rev 5978)
@@ -6,18 +6,16 @@
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.nio.channels.FileChannel;
-import java.util.BitSet;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 
 import org.apache.commons.io.FileUtils;
 import org.openjump.core.apitools.IOTools;
-import org.openjump.core.geomutils.GeoUtils;
 import org.openjump.core.rasterimage.RasterImageIOUtils;
 import org.openjump.core.rasterimage.RasterImageLayer;
 import org.openjump.core.rasterimage.WorldFileHandler;
 import org.openjump.core.rasterimage.styler.SLDHandler;
+import org.openjump.sigle.utilities.geom.FeatureCollectionUtil;
 
 import com.vividsolutions.jts.geom.Envelope;
 import com.vividsolutions.jts.geom.Geometry;
@@ -260,27 +258,33 @@
      * 
      * @param layer
      * @return boolean - true if the vector layer has only polygon/multipolygon
-     *         geometries
+     *         geometries (Shapefile model)
      */
     public static boolean isPolygonalLayer(Layer layer) {
         final FeatureCollectionWrapper featureCollection = layer
                 .getFeatureCollectionWrapper();
-        final List<Feature> featureList = featureCollection.getFeatures();
-        BitSet layerBit = new BitSet();
-        BitSet currFeatureBit = new BitSet();
-        if (featureList.size() > 0) {
-            final Geometry firstGeo = featureList.iterator().next()
-                    .getGeometry();
-            layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the 
layer
-                                                            // type
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 2) {
+
+            return true;
+        } else {
+            return false;
         }
+    }
 
-        for (final Feature feature : featureList) {
-            final Geometry geo = feature.getGeometry();
-            currFeatureBit = GeoUtils.setBit(currFeatureBit, geo);
-        }
-        if (layerBit.get(GeoUtils.polyBit)
-                && currFeatureBit.get(GeoUtils.polyBit)) {
+    /**
+     * check if selected featureCollection has only polygons and/or
+     * multipolygons
+     * 
+     * @param featureCollection
+     * @return boolean - true if the vector layer has only polygon/multipolygon
+     *         geometries (Shapefile model)
+     */
+    public static boolean isPolygonalLayer(FeatureCollection 
featureCollection) {
+
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 2) {
+
             return true;
         } else {
             return false;
@@ -292,27 +296,32 @@
      * 
      * @param layer
      * @return boolean - true if the vector layer has only point/multipoint
-     *         geometries
+     *         geometries (Shapefile model)
      */
     public static boolean isPointLayer(Layer layer) {
         final FeatureCollectionWrapper featureCollection = layer
                 .getFeatureCollectionWrapper();
-        final List<Feature> featureList = featureCollection.getFeatures();
-        BitSet layerBit = new BitSet();
-        BitSet currFeatureBit = new BitSet();
-        if (featureList.size() > 0) {
-            final Geometry firstGeo = featureList.iterator().next()
-                    .getGeometry();
-            layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the 
layer
-                                                            // type
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 0) {
+
+            return true;
+        } else {
+            return false;
         }
+    }
 
-        for (final Feature feature : featureList) {
-            final Geometry geo = feature.getGeometry();
-            currFeatureBit = GeoUtils.setBit(currFeatureBit, geo);
-        }
-        if (layerBit.get(GeoUtils.pointBit)
-                && currFeatureBit.get(GeoUtils.pointBit)) {
+    /**
+     * Check if selected featureCollection has only points and/or multipoints
+     * 
+     * @param featureCollection
+     * @return boolean - true if the vector layer has only point/multipoint
+     *         geometries (Shapefile model)
+     */
+    public static boolean isPointLayer(FeatureCollection featureCollection) {
+
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 0) {
+
             return true;
         } else {
             return false;
@@ -325,27 +334,35 @@
      * 
      * @param layer
      * @return boolean - true if the vector layer has only
-     *         LineString/MultiLineString geometries
+     *         LineString/MultiLineString geometries (Shapefile model)
      */
     public static boolean isLinealLayer(Layer layer) {
         final FeatureCollectionWrapper featureCollection = layer
                 .getFeatureCollectionWrapper();
-        final List<Feature> featureList = featureCollection.getFeatures();
-        BitSet layerBit = new BitSet();
-        BitSet currFeatureBit = new BitSet();
-        if (featureList.size() > 0) {
-            final Geometry firstGeo = featureList.iterator().next()
-                    .getGeometry();
-            layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the 
layer
-                                                            // type
+
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 1) {
+
+            return true;
+        } else {
+            return false;
         }
 
-        for (final Feature feature : featureList) {
-            final Geometry geo = feature.getGeometry();
-            currFeatureBit = GeoUtils.setBit(currFeatureBit, geo);
-        }
-        if (layerBit.get(GeoUtils.lineBit)
-                && currFeatureBit.get(GeoUtils.lineBit)) {
+    }
+
+    /**
+     * Check if selected FeatureCollection has only linestring and/or
+     * multilinestring and/or multilinearings (Shapefile model)
+     * 
+     * @param FeatureCollection
+     * @return boolean - true if the vector layer has only
+     *         LineString/MultiLineString geometries (Shapefile model)
+     */
+    public static boolean isLinealLayer(FeatureCollection featureCollection) {
+
+        if (FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == 1) {
+
             return true;
         } else {
             return false;
@@ -353,37 +370,19 @@
     }
 
     /**
-     * Layer.class
+     * Check if selected layer has geoemtries of different types
      * 
-     * @return true if the selected layer has multiple geometry types ex. 
points
-     *         with linestrings, polygons with points, etc It exclude 
collection
-     *         of geometries and multigeometries ex. points with multipoints,
-     *         linestrings with linearing, linestrings with multilinestrings,
-     *         etc
+     * @return true if the selected layer has features of different geometries
+     *         types (Shapefile model) (Shapefile model)
      */
 
     public static boolean isMixedGeometryType(Layer layer) {
         final FeatureCollectionWrapper featureCollection = layer
                 .getFeatureCollectionWrapper();
-        final List<Feature> featureList = featureCollection.getFeatures();
-        BitSet layerBit = new BitSet();
-        BitSet currFeatureBit = new BitSet();
-        if (featureList.size() > 0) {
-            final Geometry firstGeo = featureList.iterator().next()
-                    .getGeometry();
-            layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the 
layer
-                                                            // type
-        }
-        for (Feature feature : featureList) {
-            final Geometry geo = feature.getGeometry();
-            currFeatureBit = GeoUtils.setBit(currFeatureBit, geo);
-        }
-        if ((layerBit.get(GeoUtils.pointBit) && currFeatureBit
-                .get(GeoUtils.lineBit))
-                || (layerBit.get(GeoUtils.polyBit) && currFeatureBit
-                        .get(GeoUtils.lineBit))
-                || (layerBit.get(GeoUtils.pointBit) && currFeatureBit
-                        .get(GeoUtils.polyBit))) {
+        if ((FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == -1)
+                && featureCollection.size() > 0) {
+
             return true;
         } else {
             return false;
@@ -390,28 +389,20 @@
         }
     }
 
+    /**
+     * Check if selected FeatureCollection has geoemtries of different types
+     * 
+     * @return true if the selected layer has features of different geometries
+     *         types (Shapefile model)
+     */
+
     public static boolean isMixedGeometryType(
             FeatureCollection featureCollection) {
 
-        final List<Feature> featureList = featureCollection.getFeatures();
-        BitSet layerBit = new BitSet();
-        BitSet currFeatureBit = new BitSet();
-        if (featureList.size() > 0) {
-            final Geometry firstGeo = featureList.iterator().next()
-                    .getGeometry();
-            layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the 
layer
-                                                            // type
-        }
-        for (Feature feature : featureList) {
-            final Geometry geo = feature.getGeometry();
-            currFeatureBit = GeoUtils.setBit(currFeatureBit, geo);
-        }
-        if ((layerBit.get(GeoUtils.pointBit) && currFeatureBit
-                .get(GeoUtils.lineBit))
-                || (layerBit.get(GeoUtils.polyBit) && currFeatureBit
-                        .get(GeoUtils.lineBit))
-                || (layerBit.get(GeoUtils.pointBit) && currFeatureBit
-                        .get(GeoUtils.polyBit))) {
+        if ((FeatureCollectionUtil
+                .getFeatureCollectionDimension(featureCollection) == -1)
+                && featureCollection.size() > 0) {
+
             return true;
         } else {
             return false;



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to