Browse Source

temporal library: Default temporal database path is now mapset specific. Correct handling of environment switch for mapset specific metadata reading.

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@61983 15284696-431f-4ddb-bdfa-cd5b030d7da7
Soeren Gebbert 10 years ago
parent
commit
eff5f11eab
3 changed files with 18 additions and 32 deletions
  1. 2 1
      include/temporal.h
  2. 14 12
      lib/temporal/lib/connect.c
  3. 2 19
      lib/temporal/lib/default_name.c

+ 2 - 1
include/temporal.h

@@ -7,7 +7,8 @@
 
 
 #define TGISDB_DEFAULT_DRIVER "sqlite"
-#define TGISDB_DEFAULT_SQLITE_PATH "PERMANENT/tgis/sqlite.db"
+/* Default path in the current location */
+#define TGISDB_DEFAULT_SQLITE_PATH "tgis/sqlite.db"
 
 
 int tgis_set_connection(dbConnection * connection);

+ 14 - 12
lib/temporal/lib/connect.c

@@ -91,26 +91,28 @@ static char *get_mapset_connection_name(const char *mapset, int contype)
 {
     const char *val = NULL;
     char *ret_val = NULL;
-    const char *orig_mapset;
     int ret;
 
-    orig_mapset = G__getenv("MAPSET");
-
-    ret = G__mapset_permissions2(G__getenv("GISDBASE"), G__getenv("LOCATION_NAME"), mapset);
+    ret = G__mapset_permissions2(G__getenv("GISDBASE"), 
+                                 G__getenv("LOCATION_NAME"), mapset);
     switch (ret) {
     case 0:
-        G_fatal_error(_("You don't have permission to access the mapset <%s>"),
+        G_warning(_("You don't have permission to access the mapset <%s>"),
                       mapset);
         break;
     case -1:
-        G_fatal_error(_("Mapset <%s> does not exist."),
+        G_warning(_("Mapset <%s> does not exist."),
 	              mapset);
         break;
     default:
         break;
     }    
 
-    G_setenv("MAPSET", mapset);
+    G_create_alt_env();
+    G__setenv("GISDBASE", G_gisdbase());
+    G__setenv("LOCATION_NAME", G_location());
+    G__setenv("MAPSET", mapset);
+    G__read_mapset_env();
  
     if(contype == DATABASE_NAME) {
         if ((val = G__getenv2("TGISDB_DATABASE", G_VAR_MAPSET)))
@@ -120,7 +122,7 @@ static char *get_mapset_connection_name(const char *mapset, int contype)
             ret_val = G_store(val);
     }
 
-    G_setenv("MAPSET", orig_mapset);
+    G_switch_env();
     
     return ret_val;
 }
@@ -129,8 +131,8 @@ static char *get_mapset_connection_name(const char *mapset, int contype)
 /*!
  * \brief Get TGIS driver name from a specific mapset
  *
- * This function will call G_fatal_error() in case the mapset does not exists
- * or it is not allowed to access the mapset.
+ * This function give a warning in case the mapset does not exists
+ * or it is not allowed to access the mapset. NULL is returned in this case.
  * 
  * \param mapset The name of the mapset to receive the driver name from
  *
@@ -145,8 +147,8 @@ char *tgis_get_mapset_driver_name(const char *mapset)
 /*!
  * \brief Get TGIS database name
  * 
- * This function will call G_fatal_error() in case the mapset does not exists
- * or it is not allowed to access the mapset.
+ * This function give a warning in case the mapset does not exists
+ * or it is not allowed to access the mapset. NULL is returned in this case..
  * 
  * \param mapset The name of the mapset to receive the driver name from
  

+ 2 - 19
lib/temporal/lib/default_name.c

@@ -39,26 +39,9 @@ const char *tgis_get_default_driver_name(void)
 char *tgis_get_default_database_name(void)
 {
     char default_connection[2048];
-    char use_current_mapset = 0;
 
-    /* Check GRASS environmental variable if mapset specific
-     * temporal databases should be created 
-     * */
-
-    if(G__getenv2("TGIS_USE_CURRENT_MAPSET", G_VAR_MAPSET)) {
-        use_current_mapset = 1;
-    } else {
-        if(G__getenv2("TGIS_USE_CURRENT_MAPSET", G_VAR_GISRC))
-            use_current_mapset = 1;
-    }
-
-    if(!use_current_mapset) {
-        G_snprintf(default_connection, 2048, "%s/%s/%s", G_gisdbase(), G_location(),
-                   TGISDB_DEFAULT_SQLITE_PATH);
-    } else {
-        G_snprintf(default_connection, 2048, "%s/%s/%s/tgis/sqlite.db", G_gisdbase(), G_location(),
-                   G_mapset());
-    }
+    G_snprintf(default_connection, 2048, "%s/%s/%s/%s", G_gisdbase(), G_location(),
+               G_mapset(), TGISDB_DEFAULT_SQLITE_PATH);
 
     return G_store(default_connection);
 }