*
*/
-// ICHANGED
package cx.fbn.nevernote.gui;
import java.util.ArrayList;
private String guid;
private int allPointSum;
- public RensoNoteList(DatabaseConnection c, NeverNote p, SyncRunner syncRunner) {
- logger = new ApplicationLogger("rensoNoteList.log");
- logger.log(logger.HIGH, "Setting up rensoNoteList");
+ public RensoNoteList(DatabaseConnection c, NeverNote p, SyncRunner syncRunner, ApplicationLogger logger) {
+ this.logger = logger;
+ this.logger.log(this.logger.HIGH, "Setting up rensoNoteList");
allPointSum = 0;
this.conn = c;
this.guid = new String();
mergedHistory = new HashMap<String, Integer>();
enRelatedNotesCache = new HashMap<String, List<String>>();
- this.enRelatedNotesRunner = new ENRelatedNotesRunner(this.syncRunner);
+ this.enRelatedNotesRunner = new ENRelatedNotesRunner(this.syncRunner, this.logger);
this.enRelatedNotesRunner.enRelatedNotesSignal.getENRelatedNotesFinished.connect(this, "enRelatedNotesComplete()");
+ this.enRelatedNotesRunner.limitSignal.rateLimitReached.connect(parent, "informRateLimit(Integer)");
this.enRelatedNotesThread = new QThread(enRelatedNotesRunner, "ENRelatedNotes Thread");
- this.enRelatedNotesThread.start();
+ this.getEnRelatedNotesThread().start();
rensoNoteListItems = new HashMap<QListWidgetItem, String>();
rensoNoteListTrueItems = new ArrayList<RensoNoteListItem>();
menu.addAction(excludeNoteAction);
menu.aboutToHide.connect(this, "contextMenuHidden()");
- logger.log(logger.HIGH, "rensoNoteList setup complete");
+ this.logger.log(this.logger.HIGH, "rensoNoteList setup complete");
+ }
+
+ // オーバーロード
+ // 現在開いているノートの連想ノートリストをリフレッシュ
+ public void refreshRensoNoteList() {
+ refreshRensoNoteList(guid);
}
// 連想ノートリストをリフレッシュ
public void refreshRensoNoteList(String guid) {
- logger.log(logger.HIGH, "Entering RensoNoteList.refreshRensoNoteList");
+ logger.log(logger.HIGH, "Entering RensoNoteList.refreshRensoNoteList guid = " + guid);
this.clear();
rensoNoteListItems.clear();
// 操作履歴をデータベースから取得してノートごとの関連度を算出、その後mergedHistoryに追加
private void calculateHistory(String guid) {
+ logger.log(logger.EXTREME, "Entering RensoNoteList.calculateHistory guid = " + guid);
+
// browseHistory<guid, 回数(ポイント)>
HashMap<String, Integer> browseHistory = conn.getHistoryTable().getBehaviorHistory("browse", guid);
addWeight(browseHistory, Global.getBrowseWeight());
- mergedHistory = mergeHistory(browseHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(browseHistory), mergedHistory);
// copy&pasteHistory<guid, 回数(ポイント)>
HashMap<String, Integer> copyAndPasteHistory = conn.getHistoryTable().getBehaviorHistory("copy & paste", guid);
addWeight(copyAndPasteHistory, Global.getCopyPasteWeight());
- mergedHistory = mergeHistory(copyAndPasteHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(copyAndPasteHistory), mergedHistory);
// addNewNoteHistory<guid, 回数(ポイント)>
HashMap<String, Integer> addNewNoteHistory = conn.getHistoryTable().getBehaviorHistory("addNewNote", guid);
addWeight(addNewNoteHistory, Global.getAddNewNoteWeight());
- mergedHistory = mergeHistory(addNewNoteHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(addNewNoteHistory), mergedHistory);
// rensoItemClickHistory<guid, 回数(ポイント)>
HashMap<String, Integer> rensoItemClickHistory = conn.getHistoryTable().getBehaviorHistory("rensoItemClick", guid);
addWeight(rensoItemClickHistory, Global.getRensoItemClickWeight());
- mergedHistory = mergeHistory(rensoItemClickHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(rensoItemClickHistory), mergedHistory);
// sameTagHistory<guid, 回数(ポイント)>
HashMap<String, Integer> sameTagHistory = conn.getHistoryTable().getBehaviorHistory("sameTag", guid);
addWeight(sameTagHistory, Global.getSameTagWeight());
- mergedHistory = mergeHistory(sameTagHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(sameTagHistory), mergedHistory);
// sameNotebookNoteHistory<guid, 回数(ポイント)>
HashMap<String, Integer> sameNotebookHistory = conn.getHistoryTable().getBehaviorHistory("sameNotebook", guid);
addWeight(sameNotebookHistory, Global.getSameNotebookWeight());
- mergedHistory = mergeHistory(sameNotebookHistory, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(sameNotebookHistory), mergedHistory);
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.calculateHistory");
}
// 操作回数に重み付けする
private void addWeight(HashMap<String, Integer> history, int weight){
+ logger.log(logger.EXTREME, "Entering RensoNoteList.addWeight");
+
Set<String> keySet = history.keySet();
Iterator<String> hist_iterator = keySet.iterator();
while(hist_iterator.hasNext()){
String key = hist_iterator.next();
history.put(key, history.get(key) * weight);
}
+
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.addWeight");
}
// 連想ノートリストを再描画
private void repaintRensoNoteList(boolean needClear) {
+ logger.log(logger.EXTREME, "Entering RensoNoteList.repaintRensoNoteList");
+
if (needClear) {
this.clear();
rensoNoteListItems.clear();
}
addRensoNoteList(mergedHistory);
+
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.repaintRensoNoteList");
}
// 引数1と引数2をマージしたハッシュマップを返す
private HashMap<String, Integer> mergeHistory(HashMap<String, Integer> History1, HashMap<String, Integer> History2){
+ logger.log(logger.EXTREME, "Entering RensoNoteList.mergeHistory");
+
HashMap<String, Integer> mergedHistory = new HashMap<String, Integer>();
mergedHistory.putAll(History1);
mergedHistory.put(key, History2.get(key));
}
}
-
+
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.mergeHistory");
return mergedHistory;
}
// 連想ノートリストにハッシュマップのデータを追加
private void addRensoNoteList(HashMap<String, Integer> History){
+ logger.log(logger.EXTREME, "Entering RensoNoteList.addRensoNoteList");
+
String currentNoteGuid = new String(parent.getCurrentNoteGuid());
// スター付きノートとスター無しノートを分ける
}
}
}
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.addRensoNoteList");
}
// リストのアイテムから対象ノートのguidを取得
// 関連ノートリストの右クリックメニュー
@Override
public void contextMenuEvent(QContextMenuEvent event){
+ logger.log(logger.EXTREME, "Entering RensoNoteList.contextMenuEvent");
+
if (rensoNotePressedItemGuid == null || rensoNotePressedItemGuid.equals("")) {
return;
}
menu.exec(event.globalPos());
rensoNotePressedItemGuid = null;
+
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.contextMenuEvent");
}
// コンテキストメニューが表示されているかどうか
// ユーザが連想ノートリストのアイテムを選択した時の処理
@SuppressWarnings("unused")
private void rensoNoteItemPressed(QListWidgetItem current) {
+ logger.log(logger.HIGH, "Entering RensoNoteList.rensoNoteItemPressed");
+
rensoNotePressedItemGuid = null;
// 右クリックだったときの処理
if (QApplication.mouseButtons().isSet(MouseButton.RightButton)) {
rensoNotePressedItemGuid = getNoteGuid(current);
}
+
+ logger.log(logger.HIGH, "Leaving RensoNoteList.rensoNoteItemPressed");
}
// Evernoteの関連ノートの取得が完了
@SuppressWarnings("unused")
private void enRelatedNotesComplete() {
+ logger.log(logger.HIGH, "Entering RensoNoteList.enRelatedNotesComplete");
+
Pair<String, List<String>> enRelatedNoteGuidPair = enRelatedNotesRunner.getENRelatedNoteGuids(); // <元ノートguid, 関連ノートguidリスト>
if (enRelatedNoteGuidPair == null) {
}
}
}
+
+ logger.log(logger.HIGH, "Leaving RensoNoteList.enRelatedNotesComplete");
}
// Evernote関連ノートの関連度情報をmergedHistoryに追加
private void addENRelatedNotes(List<String> relatedNoteGuids) {
+ logger.log(logger.EXTREME, "Entering RensoNoteList.addENRelatedNotes");
+
// Evernote関連ノート<guid, 関連ポイント>
HashMap<String, Integer> enRelatedNotes = new HashMap<String, Integer>();
enRelatedNotes.put(relatedGuid, Global.getENRelatedNotesWeight());
}
- mergedHistory = mergeHistory(enRelatedNotes, mergedHistory);
+ mergedHistory = mergeHistory(filterHistory(enRelatedNotes), mergedHistory);
+
+ logger.log(logger.EXTREME, "Leaving RensoNoteList.addENRelatedNotes");
}
// Evernoteの関連ノート取得スレッドを終了させる
public boolean stopThread() {
+ logger.log(logger.HIGH, "Entering RensoNoteList.stopThread");
+
if (enRelatedNotesRunner.addStop()) {
+ logger.log(logger.HIGH, "RensoNoteList.stopThread succeeded");
return true;
}
+ logger.log(logger.HIGH, "RensoNoteList.stopThread failed");
return false;
}
+
+ public QThread getEnRelatedNotesThread() {
+ return enRelatedNotesThread;
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+
+ // ローカルに存在していて、かつアクティブなノートだけを返す
+ private HashMap<String, Integer> filterHistory(HashMap<String, Integer> sourceHistory) {
+ HashMap<String, Integer> dstHistory = new HashMap<String, Integer>();
+
+ for (String guid : sourceHistory.keySet()) {
+ if (conn.getNoteTable().exists(guid)) {
+ if (conn.getNoteTable().getNote(guid, false, false, false, false, false).isActive()) {
+ dstHistory.put(guid, sourceHistory.get(guid));
+ }
+ }
+ }
+
+ return dstHistory;
+ }
}