import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
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;
import cx.fbn.nevernote.gui.ContainsAttributeFilterTable;
import cx.fbn.nevernote.gui.DateAttributeFilterTable;
import cx.fbn.nevernote.gui.ShortcutKeys;
+import cx.fbn.nevernote.sql.DatabaseConnection;
+import cx.fbn.nevernote.sql.driver.NSqlQuery;
import cx.fbn.nevernote.utilities.ApplicationLogger;
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.2";
+ public static String[] validVersions = {"0.2", "0.1.3", "0.1.2", "0.1.1", "0.1"};
public static String username = "";
//public static String password = "";
//public static int minimumWordCount = 2;
// Regular expression to parse text with when indexing
- private static String wordRegex;
+// private static String wordRegex;
// Experimental fixes. Set via Edit/Preferences/Debugging
public static boolean enableCarriageReturnFix = false;
// 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();
getServer(); // Setup URL to connect to
// Get regular expressions used to parse out words
- settings.beginGroup("General");
- String regex = (String) settings.value("regex", "[,\\s]+");
- setWordRegex(regex);
- settings.endGroup();
+// settings.beginGroup("General");
+// String regex = (String) settings.value("regex", "[,\\s]+");
+// setWordRegex(regex);
+// settings.endGroup();
//Setup debugging information
settings.beginGroup("Debug");
}
// Get/Set word parsing regular expression
- public static String getWordRegex() {
- return wordRegex;
- }
- public static void setWordRegex(String r) {
- wordRegex = r;
- }
+// public static String getWordRegex() {
+// return wordRegex;
+// }
+// public static void setWordRegex(String r) {
+// wordRegex = r;
+// }
// Set the debug message level
public static void setMessageLevel(String msglevel) {
}
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;
}
settings.endGroup();
}
// Get/Set characters that shouldn't be removed from a word
- public static String getSpecialIndexCharacters() {
- settings.beginGroup("Index");
- String text = (String)settings.value("specialCharacters", "");
- settings.endGroup();
- return text;
- }
- public static void setSpecialIndexCharacters(String value) {
- settings.beginGroup("Index");
- settings.setValue("specialCharacters", value);
- settings.endGroup();
- databaseCache = value;
- }
+// public static String getSpecialIndexCharacters() {
+// settings.beginGroup("Index");
+// String text = (String)settings.value("specialCharacters", "");
+// settings.endGroup();
+// return text;
+// }
+// public static void setSpecialIndexCharacters(String value) {
+// settings.beginGroup("Index");
+// settings.setValue("specialCharacters", value);
+// settings.endGroup();
+// databaseCache = value;
+// }
//*****************************************************************************
// Control how tag selection behaves (should they be "and" or "or" selections
}
// 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() {
settings.endGroup();
return value;
}
+
+ // Evernote関連ノート機能統合に対する重み付け
+ public static void setENRelatedNotesWeight(int weight) {
+ settings.beginGroup("RensoNoteList");
+ settings.setValue("enRelatedNotesWeight", weight);
+ settings.endGroup();
+ }
+ public static int getENRelatedNotesWeight() {
+ settings.beginGroup("RensoNoteList");
+ Integer value;
+ try {
+ String val = (String)settings.value("enRelatedNotesWeight", 10);
+ value = new Integer(val.trim());
+ } catch (Exception e) {
+ try {
+ value = (Integer)settings.value("enRelatedNotesWeight", 10);
+ } catch (Exception e1) {
+ value = 10;
+ }
+ }
+ settings.endGroup();
+ return value;
+ }
//*******************
// ノートのマージ・複製の関連ノートリストへの適用
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("<.+?>", ""); // <で始まり>で終わる文字列を除去
- @SuppressWarnings("unchecked")
- HashMap<Integer, String> tabWindows = (HashMap<Integer, String>) settings.value("lastViewedTabs", null);
+ // HTML特殊文字のサニタイジングを解除
+ plainText = plainText.replaceAll("'", "'");
+ plainText = plainText.replaceAll(""", "\"");
+ plainText = plainText.replaceAll(">", ">");
+ plainText = plainText.replaceAll("<", "<");
+ plainText = plainText.replaceAll("&", "&");
- settings.endGroup();
- return tabWindows;
+ plainText = plainText.replaceAll("&.+?;", ""); // その他HTML特殊文字があれば除去
+
+ return plainText;
}
- // 最後に開いていたノート群を保存
- public static void saveLastViewedTabs(HashMap<Integer, String> tabs) {
- settings.beginGroup("General");
- if (tabs != null) {
- settings.setValue("lastViewedTabs", tabs);
- } else {
- settings.setValue("lastViewedTabs", "");
+ // 全文検索機能の対象となるテーブルとカラムを再構築
+ public static boolean rebuildFullTextNoteTarget(DatabaseConnection dbConn) {
+ NSqlQuery nQuery = new NSqlQuery(dbConn.getConnection());
+ 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");
+ }
+
+ if (noteTableTarget.length() > 0) {
+ nQuery.prepare("CALL FTL_CREATE_INDEX('PUBLIC', 'NOTE', :column);");
+ nQuery.bindValue(":column", noteTableTarget.toString());
+ if (!nQuery.exec()) {
+ success = false;
+ }
+ }
+
+ return success;
}
- // 最後に開いていたタブのインデックスを取得
- public static int getLastViewedTabIndex() {
- settings.beginGroup("General");
- Integer index;
- try {
- String val = (String) settings.value("lastViewedTabIndex", 0);
- index = new Integer(val.trim());
- } catch (Exception e) {
- try {
- index = (Integer) settings.value("lastViewedTabIndex", 0);
- } catch (Exception e1) {
- index = 0;
- }
+ public static boolean rebuildFullTextResourceTarget(DatabaseConnection dbConn) {
+ NSqlQuery rQuery = new NSqlQuery(dbConn.getResourceConnection());
+ StringBuilder resourceTableTarget = new StringBuilder();
+ boolean success = true;
+
+ if (Global.indexAttachmentsLocally()) {
+ resourceTableTarget.append("RESOURCETEXT");
}
- settings.endGroup();
- return index;
- }
-
- // 最後に開いていたタブのインデックスを保存
- public static void saveLastViewedTabIndex(Integer index) {
- settings.beginGroup("General");
- if (index != null) {
- settings.setValue("lastViewedTabIndex", index);
- } else {
- settings.setValue("lastViewedTabIndex", 0);
+
+ if (resourceTableTarget.length() > 0) {
+ rQuery.prepare("CALL FTL_CREATE_INDEX('PUBLIC', 'NOTERESOURCES', :column);");
+ rQuery.bindValue(":column", resourceTableTarget.toString());
+ if (!rQuery.exec()) {
+ success = false;
+ }
}
- settings.endGroup();
- }
+
+ return success;
+ }
}