Fix how CRS is set in GeoTools
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 26 May 2011 15:38:37 +0000 (15:38 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 26 May 2011 15:38:37 +0000 (15:38 +0000)
NEW - bug 31: Add Swing based map viewer in RCP
https://bugzilla.argeo.org/show_bug.cgi?id=31

git-svn-id: https://svn.argeo.org/commons/trunk@4541 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrIndex.java
gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/SimpleGeoJcrMapper.java

index 7e4f28702cf726e9ab7ee9a39b11420b9d80d7c0..b9281b8229d1c9e19d1df22ebc1ea62e46fd4773 100644 (file)
@@ -35,16 +35,20 @@ import org.geotools.feature.FeatureCollections;
 import org.geotools.feature.simple.SimpleFeatureBuilder;
 import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
 import org.geotools.filter.FilterFactoryImpl;
+import org.geotools.referencing.CRS;
 import org.opengis.feature.simple.SimpleFeature;
 import org.opengis.feature.simple.SimpleFeatureType;
 import org.opengis.filter.FilterFactory2;
 import org.opengis.filter.identity.FeatureId;
+import org.opengis.referencing.FactoryException;
+import org.opengis.referencing.NoSuchAuthorityCodeException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.Point;
 import com.vividsolutions.jts.geom.Polygon;
 
+/** Index JCR nodes containing or referencing GIS data. */
 public class GeoJcrIndex implements EventListener, GisNames, GisTypes {
        // PostGIS convention
        final static String DEFAULT_GEOM_NAME = "the_geom";
@@ -55,6 +59,8 @@ public class GeoJcrIndex implements EventListener, GisNames, GisTypes {
        private Session session;
        private Executor systemExecutionService;
 
+       private String crs = "EPSG:4326";
+
        /** The key is the workspace */
        private Map<String, FeatureStore<SimpleFeatureType, SimpleFeature>> geoJcrIndexes = Collections
                        .synchronizedMap(new HashMap<String, FeatureStore<SimpleFeatureType, SimpleFeature>>());
@@ -178,9 +184,15 @@ public class GeoJcrIndex implements EventListener, GisNames, GisTypes {
        }
 
        protected SimpleFeatureType getWorkspaceGeoJcrIndexType(String workspaceName) {
+
                SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
                builder.setNamespaceURI(GIS_NAMESPACE);
                builder.setName(workspaceName + "_geojcr_index");
+               try {
+                       builder.setCRS(CRS.decode(crs));
+               } catch (Exception e) {
+                       throw new ArgeoException("Cannot set CRS " + crs, e);
+               }
 
                builder.setDefaultGeometry(JcrUtils.normalize(GIS_BBOX));
                builder.add(JcrUtils.normalize(GIS_BBOX), Polygon.class);
index f7ac0df8ae3cd51f58f5a0fd34f6e712e4c463d3..27da93738e19fa93a0d816dce153b0664c57fd6f 100644 (file)
@@ -36,6 +36,7 @@ import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.Point;
 import com.vividsolutions.jts.geom.Polygon;
 
+/** Maps geographical information meta data in a JCR repository. */
 public class SimpleGeoJcrMapper implements GeoJcrMapper, GisNames {
        private final static Log log = LogFactory.getLog(SimpleGeoJcrMapper.class);
 
@@ -277,6 +278,10 @@ public class SimpleGeoJcrMapper implements GeoJcrMapper, GisNames {
                                        + "' property");
                        return;
                }
+
+               if (!systemSession.isLive())
+                       return;
+
                String alias = properties.get(GeoToolsConstants.ALIAS_KEY);
                registeredDataStores.remove(alias);
                Node dataStoreNode = getDataStoreNode(systemSession, alias);