OSDN Git Service

Correct encrypted database issue where not all databases are encrypted.
authorRandy Baumgarte <randy@fbn.cx>
Tue, 12 Jul 2011 10:53:12 +0000 (06:53 -0400)
committerRandy Baumgarte <randy@Centauri.(none)>
Tue, 12 Jul 2011 22:38:13 +0000 (18:38 -0400)
src/cx/fbn/nevernote/Global.java
src/cx/fbn/nevernote/NeverNote.java
src/cx/fbn/nevernote/sql/DatabaseConnection.java

index b0da172..0ff914e 100644 (file)
@@ -138,8 +138,6 @@ public class Global {
     public static boolean enableCarriageReturnFix = false;\r
     public static boolean enableHTMLEntitiesFix = false;\r
     \r
-    //public static String name = null;   \r
-    \r
     // Used to set & retrieve ini & Windows registry settings\r
     public static QSettings    settings;     // Set & get ini settings\r
     public static boolean isConnected;    // Are we connected to Evernote\r
@@ -1221,7 +1219,7 @@ public class Global {
     // get the url (full path) of the searchable word database\r
     public static String getIndexDatabaseUrl() {\r
                settings.beginGroup("General");\r
-               String val  = (String)settings.value("DatabaseURL", "");\r
+               String val  = (String)settings.value("IndexDatabaseURL", "");\r
                settings.endGroup();\r
                if (val.equals(""))\r
                        val = "jdbc:h2:"+Global.getFileManager().getDbDirPath(Global.indexDatabaseName);\r
@@ -1231,7 +1229,7 @@ public class Global {
     // Get the url (full path) of the attachment database\r
     public static String getResourceDatabaseUrl() {\r
                settings.beginGroup("General");\r
-               String val  = (String)settings.value("DatabaseURL", "");\r
+               String val  = (String)settings.value("ResourceDatabaseURL", "");\r
                settings.endGroup();\r
                if (val.equals(""))\r
                        val = "jdbc:h2:"+Global.getFileManager().getDbDirPath(Global.resourceDatabaseName);\r
@@ -1242,6 +1240,16 @@ public class Global {
                settings.setValue("DatabaseURL", value);\r
                settings.endGroup();\r
     }\r
+    public static void setIndexDatabaseUrl(String value) {\r
+               settings.beginGroup("General");\r
+               settings.setValue("IndexDatabaseURL", value);\r
+               settings.endGroup();\r
+    }\r
+    public static void setResourceDatabaseUrl(String value) {\r
+               settings.beginGroup("General");\r
+               settings.setValue("ResourceDatabaseURL", value);\r
+               settings.endGroup();\r
+    }\r
     public static String getDatabaseUserid() {\r
                settings.beginGroup("General");\r
                String val  = (String)settings.value("databaseUserid", "");\r
@@ -1951,5 +1959,6 @@ public class Global {
                return null;\r
     }\r
 \r
+\r
 }\r
 \r
index f1cf5ae..83b2fcd 100644 (file)
@@ -826,9 +826,14 @@ public class NeverNote extends QMainWindow{
        ApplicationLogger logger = new ApplicationLogger("nevernote-database.log");
        
        File f = Global.getFileManager().getDbDirFile(Global.databaseName + ".h2.db");
-               boolean dbExists = f.exists(); 
-               if (!dbExists)
+       File fr = Global.getFileManager().getDbDirFile(Global.resourceDatabaseName + ".h2.db");
+       File fi = Global.getFileManager().getDbDirFile(Global.resourceDatabaseName + ".h2.db");
+               if (!f.exists())
                        Global.setDatabaseUrl("");
+               if (!fr.exists())
+                       Global.setResourceDatabaseUrl("");              
+               if (!fi.exists())
+                       Global.setIndexDatabaseUrl(""); 
        
         if (Global.getDatabaseUrl().toUpperCase().indexOf("CIPHER=") > -1) {
             boolean goodCheck = false;
@@ -851,18 +856,25 @@ public class NeverNote extends QMainWindow{
     // Encrypt the database upon shutdown
     private void encryptOnShutdown() {
         String dbPath= Global.getFileManager().getDbDirPath("");
-        String dbName = "NeverNote";
         try {
+               
                Statement st = conn.getConnection().createStatement();  
                st.execute("shutdown");
+               st = conn.getResourceConnection().createStatement();
+               st.execute("shutdown");
+               st = conn.getIndexConnection().createStatement();
+               st.execute("shutdown");
                if (QMessageBox.question(this, tr("Are you sure"), 
                                tr("Are you sure you wish to encrypt the database?"),
                                QMessageBox.StandardButton.Yes, 
                                QMessageBox.StandardButton.No) == StandardButton.Yes.value()) {
-                       ChangeFileEncryption.execute(dbPath, dbName, encryptCipher, null, Global.cipherPassword.toCharArray(), true);
+                       ChangeFileEncryption.execute(dbPath, "NeverNote", encryptCipher, null, Global.cipherPassword.toCharArray(), true);
+                       ChangeFileEncryption.execute(dbPath, "Resources", encryptCipher, null, Global.cipherPassword.toCharArray(), true);
+                       ChangeFileEncryption.execute(dbPath, "Index", encryptCipher, null, Global.cipherPassword.toCharArray(), true);
                        Global.setDatabaseUrl(Global.getDatabaseUrl() + ";CIPHER="+encryptCipher);
-                       Global.setDatabaseUrl(Global.getIndexDatabaseUrl() + ";CIPHER="+encryptCipher);
-                       Global.setDatabaseUrl(Global.getResourceDatabaseUrl() + ";CIPHER="+encryptCipher);
+                       Global.setResourceDatabaseUrl(Global.getResourceDatabaseUrl() + ";CIPHER="+encryptCipher);
+                       Global.setIndexDatabaseUrl(Global.getIndexDatabaseUrl() + ";CIPHER="+encryptCipher);
+
                        QMessageBox.information(this, tr("Encryption Complete"), tr("Encryption is complete"));
                }
         } catch (SQLException e) {
@@ -888,6 +900,8 @@ public class NeverNote extends QMainWindow{
 
                        ChangeFileEncryption.execute(dbPath, dbName, encryptCipher, Global.cipherPassword.toCharArray(), null, true);
                        Global.setDatabaseUrl("");
+                       Global.setResourceDatabaseUrl("");
+                       Global.setIndexDatabaseUrl("");
                        QMessageBox.information(this, tr("Decryption Complete"), tr("Decryption is complete"));
                }
                } catch (SQLException e) {
index d117f5a..21b852a 100644 (file)
@@ -151,14 +151,18 @@ public class DatabaseConnection {
                        executeSql("Update note set indexneeded='true'");
                }
                
-               // Drop the note resource table & re-connect it in case it was recently encrypted.
-/*             NSqlQuery query = new NSqlQuery(conn);
-               query.exec("drop table NoteResources;");
-               String linkcmd = "create linked table NoteResources "
-                       +"('org.h2.Driver', '"+url+"', '"+userid+"', '"+passwordString+ "', 'NoteResources')";
-               query.exec(linkcmd);
-               System.err.println(query.lastError());
-*/             
+               // If we encrypted/decrypted it the last time, we need to reconnect the tables.
+//             if (Global.relinkTables) {
+//                     NSqlQuery query = new NSqlQuery(conn);
+//                     query.exec("Drop table NoteResources;");
+//                     String linkcmd = "create linked table NoteResources "
+//                             +"('org.h2.Driver', '"+url+"', '"+userid+"', '"+passwordString+ "', 'NoteResources')";
+//                     System.out.println(linkcmd);
+//                     query.exec(linkcmd);
+//                     System.err.println(query.lastError());
+//                     Global.relinkTables = false;
+//             }
+               
                
                logger.log(logger.HIGH, "Leaving DatabaseConnection.dbSetup" +id);
        }