Adapt for GeoTools 2.7.2
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 25 Jun 2011 08:29:05 +0000 (08:29 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 25 Jun 2011 08:29:05 +0000 (08:29 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4602 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java
gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jdbc/PostgisDataStoreFactory.java [new file with mode: 0644]

index 41c03ab21a63585aee255aea5d1969648d4f84d5..b2f21489a06a028574144b321f417a328de9d445 100644 (file)
@@ -19,6 +19,7 @@ import org.geotools.data.FeatureSource;
 import org.geotools.geometry.jts.ReferencedEnvelope;
 import org.geotools.map.DefaultMapContext;
 import org.geotools.map.DefaultMapLayer;
+import org.geotools.map.MapContext;
 import org.geotools.map.MapLayer;
 import org.geotools.renderer.lite.StreamingRenderer;
 import org.geotools.styling.Style;
@@ -42,7 +43,10 @@ public class SwingMapViewer extends AbstractMapViewer {
                embedded = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
                Frame frame = SWT_AWT.new_Frame(embedded);
 
-               mapPane = new JMapPane(new StreamingRenderer(), new DefaultMapContext());
+               MapContext mapContext = new DefaultMapContext();
+               // dummy call to make sure that the layers are initialized
+               mapContext.layers();
+               mapPane = new JMapPane(new StreamingRenderer(), mapContext);
                versatileZoomTool = new VersatileZoomTool();
                mapPane.setCursorTool(versatileZoomTool);
                mapPane.setBackground(Color.WHITE);
diff --git a/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jdbc/PostgisDataStoreFactory.java b/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jdbc/PostgisDataStoreFactory.java
new file mode 100644 (file)
index 0000000..f7c8506
--- /dev/null
@@ -0,0 +1,30 @@
+package org.argeo.geotools.jdbc;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.sql.DataSource;
+
+import org.argeo.ArgeoException;
+import org.geotools.data.DataStore;
+import org.geotools.data.postgis.PostgisNGDataStoreFactory;
+
+/**
+ * Simplified data store to avoid issues with Spring and OSGi when Springs scans
+ * for all available factory methods.
+ */
+public class PostgisDataStoreFactory {
+       private PostgisNGDataStoreFactory wrappedFactory = new PostgisNGDataStoreFactory();
+
+       @SuppressWarnings({ "unchecked", "rawtypes" })
+       public DataStore createDataStore(DataSource dataSource) {
+               try {
+                       Map params = new HashMap();
+                       params.put(PostgisNGDataStoreFactory.DATASOURCE.key, dataSource);
+                       return wrappedFactory.createDataStore(params);
+               } catch (IOException e) {
+                       throw new ArgeoException("Cannot create PostGIS data store", e);
+               }
+       }
+}