OSDN Git Service

ノートコンテンツをwordテーブルに登録しないように変更。
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / Global.java
index ef276f2..f73ea0a 100644 (file)
@@ -23,6 +23,7 @@ package cx.fbn.nevernote;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -40,6 +41,7 @@ import com.evernote.edam.type.User;
 import com.evernote.edam.type.UserAttributes;
 import com.swabunga.spell.engine.Configuration;
 import com.trolltech.qt.core.QByteArray;
+import com.trolltech.qt.core.QFile;
 import com.trolltech.qt.core.QSettings;
 import com.trolltech.qt.core.QSize;
 import com.trolltech.qt.gui.QPalette;
@@ -51,6 +53,7 @@ import cx.fbn.nevernote.config.StartupConfig;
 import cx.fbn.nevernote.gui.ContainsAttributeFilterTable;
 import cx.fbn.nevernote.gui.DateAttributeFilterTable;
 import cx.fbn.nevernote.gui.ShortcutKeys;
+import cx.fbn.nevernote.sql.driver.NSqlQuery;
 import cx.fbn.nevernote.utilities.ApplicationLogger;
 import cx.fbn.nevernote.utilities.Pair;
 
@@ -65,8 +68,8 @@ import cx.fbn.nevernote.utilities.Pair;
 public class Global {
        // Set current version and the known versions.
        // ICHANGED 自分用に変更
-       public static String version = "0.1";
-       public static String[] validVersions = {"0.1"};
+       public static String version = "0.1.3";
+       public static String[] validVersions = {"0.1.3", "0.1.2", "0.1.1", "0.1"};
        
     public static String username = ""; 
     //public static String password = "";     
@@ -196,8 +199,19 @@ public class Global {
        
     // Do initial setup 
     public static void setup(StartupConfig startupConfig) throws InitializationException  {
-       // ICHANGED 設定値の保存先を変更
-        settings = new QSettings("NeighborNote.ini", QSettings.Format.IniFormat);
+       String settingFileName = new String("NeighborNote.ini");
+       
+       // バージョン0.1.2以下で作成された古い設定ファイルを見つけたら、ホームディレクトリに移動させる。
+       String oldSettingPath = new QSettings(settingFileName, QSettings.Format.IniFormat).fileName();
+       File homeDir = new File(FileManager.toPlatformPathSeparator(startupConfig.getHomeDirPath()));
+       String homePath = FileManager.slashTerminatePath(homeDir.getPath());
+       if (QFile.exists(oldSettingPath)) {
+               QFile file = new QFile(oldSettingPath);
+               file.copy(homePath + settingFileName);
+               file.remove();
+       }
+       
+        settings = new QSettings(homePath + settingFileName, QSettings.Format.IniFormat);
         
         disableViewing = startupConfig.getDisableViewing();
         syncOnly = startupConfig.isSyncOnly();
@@ -1763,13 +1777,19 @@ public class Global {
     }
     public static String getUpdatesAvailableUrl() {
                settings.beginGroup("Upgrade");
-               String text = (String)settings.value("avialableUrl", "http://nevernote.sourceforge.net/versions.txt");
+               String text = (String)settings.value("avialableUrl", "http://puma.cis.ibaraki.ac.jp/products/neighbornote/develop/versions.txt");
                settings.endGroup();    
                return text;
     }
     public static String getUpdateAnnounceUrl() {
                settings.beginGroup("Upgrade");
-               String text = (String)settings.value("announceUrl", "http://nevernote.sourceforge.net/upgrade.html");
+               String text = (String)settings.value("announceUrl", "http://puma.cis.ibaraki.ac.jp/products/neighbornote/develop/upgrade.html");
+               settings.endGroup();    
+               return text;
+    }
+    public static String getUpdateDownloadUrl() {
+               settings.beginGroup("Upgrade");
+               String text = (String)settings.value("downloadUrl", "http://puma.cis.ibaraki.ac.jp/products/neighbornote/download.html");
                settings.endGroup();    
                return text;
     }
@@ -1999,27 +2019,27 @@ public class Global {
     }
     
     // If we should automatically wildcard searches
-    public static boolean automaticWildcardSearches() {
-               settings.beginGroup("General");
-               try {
-                       String value = (String)settings.value("automaticWildcard", "false");
-                       settings.endGroup();
-                       if (value.equals("true"))
-                               return true;
-                       else
-                               return false;
-               } catch (java.lang.ClassCastException e) {
-                       Boolean value = (Boolean) settings.value("automaticWildcard", false);
-                       settings.endGroup();
-                       return value;
-               }
-
-    }
-    public static void setAutomaticWildcardSearches(boolean value) {
-               settings.beginGroup("General");
-               settings.setValue("automaticWildcard", value);
-               settings.endGroup();    
-    }
+//    public static boolean automaticWildcardSearches() {
+//             settings.beginGroup("General");
+//             try {
+//                     String value = (String)settings.value("automaticWildcard", "false");
+//                     settings.endGroup();
+//                     if (value.equals("true"))
+//                             return true;
+//                     else
+//                             return false;
+//             } catch (java.lang.ClassCastException e) {
+//                     Boolean value = (Boolean) settings.value("automaticWildcard", false);
+//                     settings.endGroup();
+//                     return value;
+//             }
+//
+//    }
+//    public static void setAutomaticWildcardSearches(boolean value) {
+//             settings.beginGroup("General");
+//             settings.setValue("automaticWildcard", value);
+//             settings.endGroup();    
+//    }
 
     // If we should automatically select the children of any tag
     public static boolean displayRightToLeft() {
@@ -2304,26 +2324,52 @@ public class Global {
                return value;
        }
        
-       // 最後に開いていたノート群を取得
-       public static HashMap<Integer, String> getLastViewedTabs() {
-               settings.beginGroup("General");
+       // タグを排除してプレーンテキストを抽出
+       public static String extractPlainText(String sourceText) {
+               String plainText = sourceText.replaceAll("<.+?>", "");  // タグを除去
+               plainText = plainText.replaceAll("\\s{2,}", " ");               // 2個以上の空白文字を1文字の空白に変換
+               String kaigyo = System.getProperty("line.separator");
+               plainText = plainText.replaceAll(kaigyo, "");                   // 改行を除去
+//             plainText = plainText.replaceAll("&lt;.+?&gt;", "");    // &lt;で始まり&gt;で終わる文字列を除去
                
-               @SuppressWarnings("unchecked")
-               HashMap<Integer, String> tabWindows = (HashMap<Integer, String>) settings.value("lastViewedTabs", null);
+               // HTML特殊文字のサニタイジングを解除
+               plainText = plainText.replaceAll("&#39;", "'");
+               plainText = plainText.replaceAll("&quot;", "\"");
+               plainText = plainText.replaceAll("&gt;", ">");
+               plainText = plainText.replaceAll("&lt;", "<");
+               plainText = plainText.replaceAll("&amp;", "&");
                
-               settings.endGroup();
-               return tabWindows;
+               plainText = plainText.replaceAll("&.+?;", "");                  // その他HTML特殊文字があれば除去
+               
+               return plainText;
        }
        
-       // 最後に開いていたノート群をセット
-       public static void setLastViewedTabs(HashMap<Integer, String> tabs) {
-               settings.beginGroup("General");
-               if (tabs != null) {
-                       settings.setValue("lastViewedTabs", tabs);
-               } else {
-                       settings.setValue("lastViewedTabs", "");
+       // 全文検索機能の対象となるテーブルとカラムを再構築
+       public static boolean rebuildFullTextTarget(NSqlQuery query) {
+               StringBuilder noteTableTarget = new StringBuilder();
+               boolean success = true;
+               
+               if (Global.indexNoteBody()) {
+                       noteTableTarget.append("CONTENTTEXT");
                }
-               settings.endGroup();
+               if (Global.indexNoteTitle()) {
+                       if (noteTableTarget.length() > 0) {
+                               noteTableTarget.append(", ");
+                       }
+                       noteTableTarget.append("TITLE");
+               }
+               
+               // TODO 他の項目もあとで追加
+               
+               if (noteTableTarget.length() > 0) {
+                       query.prepare("CALL FTL_CREATE_INDEX('PUBLIC', 'NOTE', :column);");
+                       query.bindValue(":column", noteTableTarget.toString());
+                       if (!query.exec()) {
+                               success = false;
+                       }
+               }
+               
+               return success;
        }
 }