@@ -307,4 +307,75 @@ class Workspace {
307307 [key : param. name, type : param. type. name, required : param. required]
308308 }
309309 }
310+
311+ /**
312+ * Get a Workspace from a parameter string
313+ * @param paramString The parameter string
314+ * @return A Workspace or null
315+ */
316+ static Workspace getWorkspace (String paramString ) {
317+ getWorkspace(getParametersFromString(paramString))
318+ }
319+
320+ /**
321+ * Get a Workspace from a connection paramater Map
322+ * @param params The Map of connection parameters
323+ * @return A Workspace or null
324+ */
325+ static Workspace getWorkspace (Map params ) {
326+ wrap(DataStoreFinder . getDataStore(params))
327+ }
328+
329+ /**
330+ * Wrap a GeoTools DataStore in the appropriate GeoScript Workspace
331+ * @param ds The GeoTools DataStore
332+ * @return A GeoScript Workspace or null
333+ */
334+ static Workspace wrap (DataStore ds ) {
335+ if (ds == null ) {
336+ null
337+ }
338+ else if (ds instanceof org.geotools.data.directory.DirectoryDataStore ||
339+ ds instanceof org.geotools.data.shapefile.ShapefileDataStore ) {
340+ new Directory (ds)
341+ }
342+ else if (ds instanceof org.geotools.data.memory.MemoryDataStore ) {
343+ new Memory (ds)
344+ }
345+ else if (ds instanceof org.geotools.data.property.PropertyDataStore ) {
346+ new Property (ds)
347+ }
348+ else if (ds instanceof org.geotools.data.wfs.WFSDataStore ) {
349+ new WFS(ds)
350+ }
351+ else if (ds instanceof org.geotools.jdbc.JDBCDataStore ) {
352+ def jdbcds = ds as org.geotools.jdbc.JDBCDataStore
353+ if (jdbcds. dataStoreFactory instanceof org.geotools.geopkg.GeoPkgDataStoreFactory ) {
354+ new GeoPackage (ds)
355+ }
356+ else if (jdbcds. dataStoreFactory instanceof org.geotools.data.h2.H2DataStoreFactory ||
357+ jdbcds. dataStoreFactory instanceof org.geotools.data.h2.H2JNDIDataStoreFactory ) {
358+ new H2(ds)
359+ }
360+ else if (jdbcds. dataStoreFactory instanceof org.geotools.data.mysql.MySQLDataStoreFactory ||
361+ jdbcds. dataStoreFactory instanceof org.geotools.data.mysql.MySQLJNDIDataStoreFactory ) {
362+ new MySQL (ds)
363+ }
364+ else if (jdbcds. dataStoreFactory instanceof org.geotools.data.postgis.PostgisNGDataStoreFactory ||
365+ jdbcds. dataStoreFactory instanceof org.geotools.data.postgis.PostgisNGJNDIDataStoreFactory ) {
366+ new PostGIS (ds)
367+ }
368+ else if (jdbcds. dataStoreFactory instanceof org.geotools.data.spatialite.SpatiaLiteDataStoreFactory ||
369+ jdbcds. dataStoreFactory instanceof org.geotools.data.spatialite.SpatiaLiteJNDIDataStoreFactory ) {
370+ new SpatiaLite (ds)
371+ }
372+ else (ds instanceof org.geotools.jdbc.JDBCDataStore ) {
373+ new Database (ds)
374+ }
375+ }
376+ else {
377+ new Workspace (ds)
378+ }
379+ }
380+
310381}
0 commit comments