DIAVIS-wiki
開始行:
[[:private]]
INDEX
#contents
[[論文 VISNOTE]]
----
*データの再現に必要なもの [#ke039199]
-.properties
-.script
*TODO [#tc0baf5c]
**記録するコマンド残り実装 [#o3dfc2f0]
-タイムラインナビゲーション使ったよ
-インクリメンタルサーチ使ったよ
**終了はボタン? だったらどっかに追加 [#u65e720b]
**アンケート項目決定 [#c55f4b8f]
**アンケート取得用UI作成 [#fb50f037]
**データ入力 [#i2289635]
**実験時に他の人が入力したDB内のキーワードオブジェクトが...
**バグ [#rb66260a]
setTrackTarget( 1, 112 )
***イベントの表示順序 [#accaa124]
例:坂本龍馬
同じ年のイベント場合の順序は必ずしも日付順にならないため...
解決案としては,年月日を入力してソート基準に反映するよう...
___________________________________
Manager_System.initEventText( 112)
addRelatedRowIndexies セルレンダリング用のカスタムオブ...
intValueに変換した配列の中身を確認
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIn...
at VISTORY$Manager_System.initEventText(VISTORY.java:2325)
at VISTORY$Manager_System.setClickedObjectID(VISTORY.jav...
at VISTORY$Manager_System.setStateSearchResultsToTimelin...
at VISTORY$Manager_System.incrementalSearch(VISTORY.java...
at ControlPanel.keyReleased(ControlPanel.java:136)
*DONE [#n4668de6]
**被験者テーブルにコラム追加.実験開始時刻と終了時刻 [#ze...
-ALTER TABLE SUBJECT ADD START_TIME TIMESTAMP
-ALTER TABLE SUBJECT ADD END_TIME TIMESTAMP
**実験開始時刻および修了時刻の記入(更新) [#b9f2a498]
***実験開始時刻の記録 [#rbfb0a4c]
login(SUBJECT)メソッド内
UPDATE SUBJECT SET START_TIME = NOW() WHERE ID = " + sub...
***終了時刻の記録 [#he10c0a0]
mSystem.terminateTheExperimentation()内
"UPDATE SUBJECT SET END_TIME = NOW() WHERE ID = " + subj...
***操作ログの記録 [#t2aa7b6c]
-イベント読んだよ
-ビューモードたち
*データベース [#j3eda0fd]
**USERS [#ncc025b8]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
|USERID|||
|PASSWORD|||
|SINCE|||
|LAST_UPDATE|||
**PERSON (TIMELINEのこと) [#c4bba87a]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
**EVENT [#sd8ee899]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
**HISTORY (データの入力履歴のこと) [#p7e6c52a]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
|ID|||
|USER_ID|||
|COMMAND_TYPE|||
|DATA_ID|||
|TIMESTAMP|||
|DATABASE|||
***被験者情報テーブル [#r57a3133]
|LEFT:80|LEFT:140|c
|項目|型|h
|ID or CODE|IDENTITY|
|AGE|INTEGER|
|JOB_ID|INTEGER|
|NATIONALITY_ID|INTEGER|
|RELATIONSHIP_ID|INTEGER|
|NATIONALITY|TIME|
:SQL文|CREATE TABLE SUBJECT ( ID IDENTITY, NAME VARCHAR, ...
-被験者識別コード subject identification code
*プログラム・ログ [#w40345c2]
最新のほど上
**041_VISTORY_20070114 [#yf0fa4d8]
-[[VISTORY[041_VISTORY_20070114.zip]:http://diavis.info/p...
-主な変更点
--キーワードオブジェクトに関連するイベントのハイライト
---人物を選択した際に表示されるイベントリストの中で,キー...
--問題点
--一度入力したキーワードオブジェクトを削除して別なキーワ...
---予測される原因は,人物オブジェクトからのキーワードの削...
**041_VISTORY_20070113 [#l6d538eb]
-[[VISTORY[041_VISTORY_20070113.zip]:http://diavis.info/p...
-主な変更点
--実験モードで起動するとログインダイアログの代わりに「被...
--「登録」ボタンを押すと,新たに作成した被験者情報用テー...
--操作ログが記録される
-問題点
:キーワードオブジェクトが表示される.|ヒストリを読み込む...
----
ここから古い順(要修正)
**tagによる検索バージョン [#hc877307]
-[[VISTORY[041_VISTORY.zip]:http://diavis.info/programs/0...
--2006/12/28
--tagからの検索
**3Dドラッグが出来なかった問題を解消 [#z722aaf1]
-2007/01/11 cameraクラスがFTPアップロードの際に消えて,ビ...
-ドラッグしたときにtoAglに設定
Viewer3dクラスのmouseDraggedのところで,
camera.setOrientation(camPos, camAgl);
だけだったのを
camera.setToAngle(camAgl);
camera.setOrientation(camPos, camAgl);
と一行追加.camera内では遷移中はtoAglを使ってるので,こち...
-[[VISTORY[041_VISTORY.zip]:http://diavis.info/programs/0...
**タイムラインのインクリメンタル・サーチ [#w2256ab1]
ControlPanelクラスにテキストフィールドを追加.
KeyListenerで変化を検出するごとに,ManagerSystemクラスのi...
以下のメソッドを追加.
//ControlPanelから呼ばれる.一文字変化するごとに.
public void incrementalSearch( String s) {
DataModel model = getTimeline(s);
tableForTest.setModel(model);
}
//文字列一部一致による人物の検索
public DataModel getTimeline(String s) {
ResultSet rs;
DataModel model = null;
System.out.println(" VisNote.Manager_System.getHistori...
String upperStr = s.toUpperCase();
try {
//rs = mSQL.executeSQL("select name,kana from person ...
//rs = mSQL.executeSQL("select * from person;");
//rs = mSQL.executeSQL("select person_id,name,kana,bi...
rs = mSQL.executeSQL("select person_id,name,kana from...
// 毎回のインスタンス化を避ける
System.out.println("rs " + rs );
model = new DataModel(rs);
} catch (SQLException e) {
System.out.println("" + e.toString() );
e.printStackTrace();
}
return model;
}
**操作ログとる直前 [#ja1ec6ef]
-[[VISTORY[041_VISTORY_Backup_20070112_00.zip]:http://dia...
**操作ログのいくつかをとったバージョン [#c71e97e4]
-[[VISTORY[041_VISTORY_backup20070112-13.zip]:http://diav...
キーワードの追加と削除の操作ログを残すとところでかなりは...
キーワード入力について,historyテーブルに記録するコマンド...
+従来の'INPUT_KEYWORD'(起動時に読み込んでオブジェクトの生...
+操作ログ用のキーワードの入力
の二つに分けた.起動時の読み込みは,最新のレコードのみ.
操作ログは,入力したり削除したりするたびに残ってある.
詳しくは,このページの、''キーワードオブジェクトの追加・...
以下は,このバージョンでの操作ログ記録状況
--とったの
---CLICKED_TIMELINE_OBJ
---CLICKED_KEYWORD_OBJ
---INPUTED_KEYWORD_OBJ
---DELETED_KEYWORD_OBJ
--のこり
---CLICKED_EVENT_DATA
---CLICKED_VIEWMODE_***
---USE_INCREMENTAL_SEARCH_FOR_TIMELINE
---USE_TIME_NAVIGATOR
*マニュアル [#r671f4aa]
**操作説明 [#tcc834ff]
***タイムラインを左クリック [#bfece1ea]
-クリックしたオブジェクトがセンタリングされ選択される.
-イベントビューワが表示される.
***関連性オブジェクトを左クリック [#s3ed2ca7]
-オブジェクトがセンタリングされる.
***何もない場所を左クリック [#t8d55c96]
-その位置まで移動する
***ビューの変更 [#jdf4ec6c]
:F1|3Dビューモード
:F2|グラフビューモード
:F3|タイムラインビューモード
*プログラム [#g860a068]
**オブジェクトの太くなり方を調整するには? [#g9c73b06]
-SlicePillarクラス
--メソッド calcCountToSize(int count)の返り値の算出方法を...
**最後に追加したPNLINKのキーワードオブジェクトにフォーカ...
-Vistoryクラス
--メソッドmakePNLinkPathの一番最後
---mSystem.setClickedObjectID(no.getID(), VISTORY.NOUN_OB...
*問題解決 [#ffff3453]
人物クリックしたとき出る情報パネル.
半透明にしたくて透明色セットしたらオブジェクトを切り替え...
swingとかの描画の問題かと思ってずっとずっとあきらめてたら...
とおもったらそうでもなかった.
やったこと
- InformationPaneクラスのコンストラクタの背景色の指定をコ...
//setBackground( new Color(255,255,255,240) );
とりあえず,コンポーネントの親子関係の間で,
setOpaqueの違いがあると変になっている気がする.
で,気をつけるのが,スクロール関係のコンポーネント(ここ...
ビューポートもsetOpaqueのメソッドもっていること.
これを設定し忘れると間に不透明のコンポーネントが入ってる...
**%%キーワードオブジェクトの追加・削除の記録にともなう問...
''2007/01/13 修正''
以下のようにキーワードの入力と削除を全部取っといて,起動...
無理な理由は,今の仕様だと起動前に一気に全部のコマンドを...
オブジェクトの生成が終わっていないのにコマンドによってオ...
そのため,「追加したよ」「削除したよ」という情報は新しく...
- final static int INPUTED_KEYWORD_OBJ = 19;
- final static int DELETED_KEYWORD_OBJ = 11;
で改めて追加し,
従来の,NounOオブジェクトを生成したりするのに利用していた...
-final static int INPUT_KEYWORD = 2;
したがって,削除や追加を繰り返した場合には,historyテーブ...
なので起動時には,この最新のレコードでのみ一回オブジェク...
操作的な削除や追加のログは,INPUTED_KEYWORD_OBJとDELETED_...
> 操作ログを残すにあたり,キーワードの追加だけではなく削...
これまでは,"Delete"キーで削除されたとき,単純にオブジェ...
(でも,実はレイアウト的にはあるのと一緒で見えないパスで...
けど,削除の履歴を残すときに,キーワードのIDを記録してい...
で,削除しないと,起動時の読み込みで読み込まれてしまう.
今問題自体は,少し無駄だけど,削除コマンドが実行されたと...
しかし,そのかわりオブジェクトなど追加したのと逆順で削除...
(依然,レイアウトの問題は残っている.が今回は目をつぶっ...
***追加時の順番 [#a410b263]
+addWord(Word)の呼び出し
++まず,NounObject3dをインスタンス化
++次に,レイアウトマネージャにノードとして追加.
++オブジェクトを保持するworldに追加.
++最後に,検索モード(tag/イベント本文)に応じてPNLinkを...
+++mNoun(マネージャ.なんの役に立ってるかは知らない)に...
+++reserved_pnlinksというVectorクラスに追加.次の更新まで...
+++で,updateSystem(double)内で,mCommand.update()の呼び...
++makePNLinkPathでは,reserved_pnlinksをループさせて
+++SlicePillar(タイムラインオブジェクト)にもaddPNLink(pnl...
+++しかも,PNPathを生成して,viewer3d.addPathメソッドで追...
+++layoutManager.addLink(sp.getNodeID(), no.getNodeID());...
+++no.addPNLink(pnlink);で,キーワードオブジェクトにも追...
あちこちに追加しすぎ.これをすべて戻していく.
で,上記の処理の3次元オブジェクトに関する部分は,Viewer3d...
*実験について [#hbbbb6ba]
**操作ログの記録 [#idedf18f]
これまでも利用していたAbstractCommandの継承するコマンドオ...
**現在のプログラムのコマンドオブジェクトの使い方(忘れた...
基本的には,記録すべき出来事が起こったら,
+テーブルに追加.
+コマンドオブジェクトの生成
+CommandManagerへ追加
+CommandManagerのupdate
+コマンドの実行(excute)
+receiver(Vistory.ManagerSystem)でオブジェクトで必要な処理
プログラム起動時には,
historyテーブルからデータを読み込み,コマンドオブジェクト...
一気に,CommandManagerで実行(設定によりSTEP_BY_STEPでの...
***キーワードオブジェクトの入力に関して [#mbcb147b]
+ControlPanelでキーワードの入力があると,
+app.mSystemのメソッドinsertKeyword(String keyword)に入力...
+既出チェックを行う
++ResultSet rs = mSQL.executeSQL("select COUNT(*) from ke...
+もしなければ,データベースへ追加
++mSQL.executeSQL("insert into keyword (keyword, timestam...
++DB追加時に付与されるIDを取得するためもう一度SELECT文で...
+++rs = mSQL.executeSQL("select * from keyword where keyw...
+++String int_str = Integer.toString(keyword_id); (intに...
+Word word = new Word(int_str, keyword);
+insertHistoryTable(AbstractCommand.INPUT_KEYWORD,"" + in...
++mSQL.executeSQL("insert into history(user_id, command_t...
+mCommand.createCommand_INPUT_KEYWORD(word);
**データベース table [#v595480b]
***操作ログ [#m46fb0ea]
-SESSION_ID 実験番号通し
|SESSION_ID|(USERID)|COMMAND_ID|TIMESTAMP||
***実験情報 [#p3515272]
-USER_ID
-実験開始時刻(開始ボタン)
-実験終了時刻(終了ボタンorボタン)
-出来れば実験フォームで(紙じゃなくて)
**COMMAND_ID [#x882e0fc]
|CENTER:10|LEFT:160|LEFT:400|c
|COMMAND_ID|NAME(文字列表現)|説明|h
|-|FOCUSED_TIMELINE_OBJ|タイムラインへのマウスへのフォー...
|-|CLICKED_TIMELINE_OBJ|タイムラインへのマウスのクリック|
|-|FOCUSED_KEYWORD_OBJ|関連性(キーワード)オブジェクトへ...
|-|CLICKED_KEYWORD_OBJ|関連性(キーワード)オブジェクトの...
|-|INPUTED_KEYWORD_OBJ|キーワード(検索ワード)の入力・オ...
|-|DELETED_KEYWORD_OBJ|キーワードオブジェクトの削除|
|-|USE_INCREMENTAL_SEARCH_FOR_TIMELINE|キーワードによるタ...
|-|CLICKED_EVENTDATA|リストから選択し詳細情報を表示(読ん...
|-|CLICKED_VIEWMODE_TIMELINE|「TIMELINE」ボタンのクリック|
|-|CLICKED_VIEWMODE_RELATION|「RELATION」ボタンのクリック|
|-|CLICKED_VIEWMODE_ISOMETRIC|「ISOMETRIC」ボタンのクリッ...
|-|USED_TIME_NAVIGATOR|画面横にある時間移動用のスライドバ...
(とるかは未定。すごい数になるし結果に使用できるかは不明...
|-|DRAGGED|ドラッグ|
|-|ZOOM-IN|ズームイン|
|-|ZOOM-OUT|ズームアウト|
*動作のプロセス [#dbb96236]
**起動 [#c4972ef6]
***loadUserHistory() [#z527d700]
DBのhistoryテーブルからログインしたユーザのIDと選択したDB...
> ResultSet rs = app.mSQL.executeSQL("select * from histo...
switch-case文でタイプに応じて適切なコマンドオブジェクト(...
-createCommand_INPUT_PERSON(Vector)
-createCommand_INPUT_KEYWORD(Vector)
-createCommand_INPUT_EVENT(Vector)
終了行:
[[:private]]
INDEX
#contents
[[論文 VISNOTE]]
----
*データの再現に必要なもの [#ke039199]
-.properties
-.script
*TODO [#tc0baf5c]
**記録するコマンド残り実装 [#o3dfc2f0]
-タイムラインナビゲーション使ったよ
-インクリメンタルサーチ使ったよ
**終了はボタン? だったらどっかに追加 [#u65e720b]
**アンケート項目決定 [#c55f4b8f]
**アンケート取得用UI作成 [#fb50f037]
**データ入力 [#i2289635]
**実験時に他の人が入力したDB内のキーワードオブジェクトが...
**バグ [#rb66260a]
setTrackTarget( 1, 112 )
***イベントの表示順序 [#accaa124]
例:坂本龍馬
同じ年のイベント場合の順序は必ずしも日付順にならないため...
解決案としては,年月日を入力してソート基準に反映するよう...
___________________________________
Manager_System.initEventText( 112)
addRelatedRowIndexies セルレンダリング用のカスタムオブ...
intValueに変換した配列の中身を確認
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIn...
at VISTORY$Manager_System.initEventText(VISTORY.java:2325)
at VISTORY$Manager_System.setClickedObjectID(VISTORY.jav...
at VISTORY$Manager_System.setStateSearchResultsToTimelin...
at VISTORY$Manager_System.incrementalSearch(VISTORY.java...
at ControlPanel.keyReleased(ControlPanel.java:136)
*DONE [#n4668de6]
**被験者テーブルにコラム追加.実験開始時刻と終了時刻 [#ze...
-ALTER TABLE SUBJECT ADD START_TIME TIMESTAMP
-ALTER TABLE SUBJECT ADD END_TIME TIMESTAMP
**実験開始時刻および修了時刻の記入(更新) [#b9f2a498]
***実験開始時刻の記録 [#rbfb0a4c]
login(SUBJECT)メソッド内
UPDATE SUBJECT SET START_TIME = NOW() WHERE ID = " + sub...
***終了時刻の記録 [#he10c0a0]
mSystem.terminateTheExperimentation()内
"UPDATE SUBJECT SET END_TIME = NOW() WHERE ID = " + subj...
***操作ログの記録 [#t2aa7b6c]
-イベント読んだよ
-ビューモードたち
*データベース [#j3eda0fd]
**USERS [#ncc025b8]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
|USERID|||
|PASSWORD|||
|SINCE|||
|LAST_UPDATE|||
**PERSON (TIMELINEのこと) [#c4bba87a]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
**EVENT [#sd8ee899]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
**HISTORY (データの入力履歴のこと) [#p7e6c52a]
|LEFT:50|LEFT:50|LEFT:100|c
|コラム名|型|説明|h
|ID|||
|USER_ID|||
|COMMAND_TYPE|||
|DATA_ID|||
|TIMESTAMP|||
|DATABASE|||
***被験者情報テーブル [#r57a3133]
|LEFT:80|LEFT:140|c
|項目|型|h
|ID or CODE|IDENTITY|
|AGE|INTEGER|
|JOB_ID|INTEGER|
|NATIONALITY_ID|INTEGER|
|RELATIONSHIP_ID|INTEGER|
|NATIONALITY|TIME|
:SQL文|CREATE TABLE SUBJECT ( ID IDENTITY, NAME VARCHAR, ...
-被験者識別コード subject identification code
*プログラム・ログ [#w40345c2]
最新のほど上
**041_VISTORY_20070114 [#yf0fa4d8]
-[[VISTORY[041_VISTORY_20070114.zip]:http://diavis.info/p...
-主な変更点
--キーワードオブジェクトに関連するイベントのハイライト
---人物を選択した際に表示されるイベントリストの中で,キー...
--問題点
--一度入力したキーワードオブジェクトを削除して別なキーワ...
---予測される原因は,人物オブジェクトからのキーワードの削...
**041_VISTORY_20070113 [#l6d538eb]
-[[VISTORY[041_VISTORY_20070113.zip]:http://diavis.info/p...
-主な変更点
--実験モードで起動するとログインダイアログの代わりに「被...
--「登録」ボタンを押すと,新たに作成した被験者情報用テー...
--操作ログが記録される
-問題点
:キーワードオブジェクトが表示される.|ヒストリを読み込む...
----
ここから古い順(要修正)
**tagによる検索バージョン [#hc877307]
-[[VISTORY[041_VISTORY.zip]:http://diavis.info/programs/0...
--2006/12/28
--tagからの検索
**3Dドラッグが出来なかった問題を解消 [#z722aaf1]
-2007/01/11 cameraクラスがFTPアップロードの際に消えて,ビ...
-ドラッグしたときにtoAglに設定
Viewer3dクラスのmouseDraggedのところで,
camera.setOrientation(camPos, camAgl);
だけだったのを
camera.setToAngle(camAgl);
camera.setOrientation(camPos, camAgl);
と一行追加.camera内では遷移中はtoAglを使ってるので,こち...
-[[VISTORY[041_VISTORY.zip]:http://diavis.info/programs/0...
**タイムラインのインクリメンタル・サーチ [#w2256ab1]
ControlPanelクラスにテキストフィールドを追加.
KeyListenerで変化を検出するごとに,ManagerSystemクラスのi...
以下のメソッドを追加.
//ControlPanelから呼ばれる.一文字変化するごとに.
public void incrementalSearch( String s) {
DataModel model = getTimeline(s);
tableForTest.setModel(model);
}
//文字列一部一致による人物の検索
public DataModel getTimeline(String s) {
ResultSet rs;
DataModel model = null;
System.out.println(" VisNote.Manager_System.getHistori...
String upperStr = s.toUpperCase();
try {
//rs = mSQL.executeSQL("select name,kana from person ...
//rs = mSQL.executeSQL("select * from person;");
//rs = mSQL.executeSQL("select person_id,name,kana,bi...
rs = mSQL.executeSQL("select person_id,name,kana from...
// 毎回のインスタンス化を避ける
System.out.println("rs " + rs );
model = new DataModel(rs);
} catch (SQLException e) {
System.out.println("" + e.toString() );
e.printStackTrace();
}
return model;
}
**操作ログとる直前 [#ja1ec6ef]
-[[VISTORY[041_VISTORY_Backup_20070112_00.zip]:http://dia...
**操作ログのいくつかをとったバージョン [#c71e97e4]
-[[VISTORY[041_VISTORY_backup20070112-13.zip]:http://diav...
キーワードの追加と削除の操作ログを残すとところでかなりは...
キーワード入力について,historyテーブルに記録するコマンド...
+従来の'INPUT_KEYWORD'(起動時に読み込んでオブジェクトの生...
+操作ログ用のキーワードの入力
の二つに分けた.起動時の読み込みは,最新のレコードのみ.
操作ログは,入力したり削除したりするたびに残ってある.
詳しくは,このページの、''キーワードオブジェクトの追加・...
以下は,このバージョンでの操作ログ記録状況
--とったの
---CLICKED_TIMELINE_OBJ
---CLICKED_KEYWORD_OBJ
---INPUTED_KEYWORD_OBJ
---DELETED_KEYWORD_OBJ
--のこり
---CLICKED_EVENT_DATA
---CLICKED_VIEWMODE_***
---USE_INCREMENTAL_SEARCH_FOR_TIMELINE
---USE_TIME_NAVIGATOR
*マニュアル [#r671f4aa]
**操作説明 [#tcc834ff]
***タイムラインを左クリック [#bfece1ea]
-クリックしたオブジェクトがセンタリングされ選択される.
-イベントビューワが表示される.
***関連性オブジェクトを左クリック [#s3ed2ca7]
-オブジェクトがセンタリングされる.
***何もない場所を左クリック [#t8d55c96]
-その位置まで移動する
***ビューの変更 [#jdf4ec6c]
:F1|3Dビューモード
:F2|グラフビューモード
:F3|タイムラインビューモード
*プログラム [#g860a068]
**オブジェクトの太くなり方を調整するには? [#g9c73b06]
-SlicePillarクラス
--メソッド calcCountToSize(int count)の返り値の算出方法を...
**最後に追加したPNLINKのキーワードオブジェクトにフォーカ...
-Vistoryクラス
--メソッドmakePNLinkPathの一番最後
---mSystem.setClickedObjectID(no.getID(), VISTORY.NOUN_OB...
*問題解決 [#ffff3453]
人物クリックしたとき出る情報パネル.
半透明にしたくて透明色セットしたらオブジェクトを切り替え...
swingとかの描画の問題かと思ってずっとずっとあきらめてたら...
とおもったらそうでもなかった.
やったこと
- InformationPaneクラスのコンストラクタの背景色の指定をコ...
//setBackground( new Color(255,255,255,240) );
とりあえず,コンポーネントの親子関係の間で,
setOpaqueの違いがあると変になっている気がする.
で,気をつけるのが,スクロール関係のコンポーネント(ここ...
ビューポートもsetOpaqueのメソッドもっていること.
これを設定し忘れると間に不透明のコンポーネントが入ってる...
**%%キーワードオブジェクトの追加・削除の記録にともなう問...
''2007/01/13 修正''
以下のようにキーワードの入力と削除を全部取っといて,起動...
無理な理由は,今の仕様だと起動前に一気に全部のコマンドを...
オブジェクトの生成が終わっていないのにコマンドによってオ...
そのため,「追加したよ」「削除したよ」という情報は新しく...
- final static int INPUTED_KEYWORD_OBJ = 19;
- final static int DELETED_KEYWORD_OBJ = 11;
で改めて追加し,
従来の,NounOオブジェクトを生成したりするのに利用していた...
-final static int INPUT_KEYWORD = 2;
したがって,削除や追加を繰り返した場合には,historyテーブ...
なので起動時には,この最新のレコードでのみ一回オブジェク...
操作的な削除や追加のログは,INPUTED_KEYWORD_OBJとDELETED_...
> 操作ログを残すにあたり,キーワードの追加だけではなく削...
これまでは,"Delete"キーで削除されたとき,単純にオブジェ...
(でも,実はレイアウト的にはあるのと一緒で見えないパスで...
けど,削除の履歴を残すときに,キーワードのIDを記録してい...
で,削除しないと,起動時の読み込みで読み込まれてしまう.
今問題自体は,少し無駄だけど,削除コマンドが実行されたと...
しかし,そのかわりオブジェクトなど追加したのと逆順で削除...
(依然,レイアウトの問題は残っている.が今回は目をつぶっ...
***追加時の順番 [#a410b263]
+addWord(Word)の呼び出し
++まず,NounObject3dをインスタンス化
++次に,レイアウトマネージャにノードとして追加.
++オブジェクトを保持するworldに追加.
++最後に,検索モード(tag/イベント本文)に応じてPNLinkを...
+++mNoun(マネージャ.なんの役に立ってるかは知らない)に...
+++reserved_pnlinksというVectorクラスに追加.次の更新まで...
+++で,updateSystem(double)内で,mCommand.update()の呼び...
++makePNLinkPathでは,reserved_pnlinksをループさせて
+++SlicePillar(タイムラインオブジェクト)にもaddPNLink(pnl...
+++しかも,PNPathを生成して,viewer3d.addPathメソッドで追...
+++layoutManager.addLink(sp.getNodeID(), no.getNodeID());...
+++no.addPNLink(pnlink);で,キーワードオブジェクトにも追...
あちこちに追加しすぎ.これをすべて戻していく.
で,上記の処理の3次元オブジェクトに関する部分は,Viewer3d...
*実験について [#hbbbb6ba]
**操作ログの記録 [#idedf18f]
これまでも利用していたAbstractCommandの継承するコマンドオ...
**現在のプログラムのコマンドオブジェクトの使い方(忘れた...
基本的には,記録すべき出来事が起こったら,
+テーブルに追加.
+コマンドオブジェクトの生成
+CommandManagerへ追加
+CommandManagerのupdate
+コマンドの実行(excute)
+receiver(Vistory.ManagerSystem)でオブジェクトで必要な処理
プログラム起動時には,
historyテーブルからデータを読み込み,コマンドオブジェクト...
一気に,CommandManagerで実行(設定によりSTEP_BY_STEPでの...
***キーワードオブジェクトの入力に関して [#mbcb147b]
+ControlPanelでキーワードの入力があると,
+app.mSystemのメソッドinsertKeyword(String keyword)に入力...
+既出チェックを行う
++ResultSet rs = mSQL.executeSQL("select COUNT(*) from ke...
+もしなければ,データベースへ追加
++mSQL.executeSQL("insert into keyword (keyword, timestam...
++DB追加時に付与されるIDを取得するためもう一度SELECT文で...
+++rs = mSQL.executeSQL("select * from keyword where keyw...
+++String int_str = Integer.toString(keyword_id); (intに...
+Word word = new Word(int_str, keyword);
+insertHistoryTable(AbstractCommand.INPUT_KEYWORD,"" + in...
++mSQL.executeSQL("insert into history(user_id, command_t...
+mCommand.createCommand_INPUT_KEYWORD(word);
**データベース table [#v595480b]
***操作ログ [#m46fb0ea]
-SESSION_ID 実験番号通し
|SESSION_ID|(USERID)|COMMAND_ID|TIMESTAMP||
***実験情報 [#p3515272]
-USER_ID
-実験開始時刻(開始ボタン)
-実験終了時刻(終了ボタンorボタン)
-出来れば実験フォームで(紙じゃなくて)
**COMMAND_ID [#x882e0fc]
|CENTER:10|LEFT:160|LEFT:400|c
|COMMAND_ID|NAME(文字列表現)|説明|h
|-|FOCUSED_TIMELINE_OBJ|タイムラインへのマウスへのフォー...
|-|CLICKED_TIMELINE_OBJ|タイムラインへのマウスのクリック|
|-|FOCUSED_KEYWORD_OBJ|関連性(キーワード)オブジェクトへ...
|-|CLICKED_KEYWORD_OBJ|関連性(キーワード)オブジェクトの...
|-|INPUTED_KEYWORD_OBJ|キーワード(検索ワード)の入力・オ...
|-|DELETED_KEYWORD_OBJ|キーワードオブジェクトの削除|
|-|USE_INCREMENTAL_SEARCH_FOR_TIMELINE|キーワードによるタ...
|-|CLICKED_EVENTDATA|リストから選択し詳細情報を表示(読ん...
|-|CLICKED_VIEWMODE_TIMELINE|「TIMELINE」ボタンのクリック|
|-|CLICKED_VIEWMODE_RELATION|「RELATION」ボタンのクリック|
|-|CLICKED_VIEWMODE_ISOMETRIC|「ISOMETRIC」ボタンのクリッ...
|-|USED_TIME_NAVIGATOR|画面横にある時間移動用のスライドバ...
(とるかは未定。すごい数になるし結果に使用できるかは不明...
|-|DRAGGED|ドラッグ|
|-|ZOOM-IN|ズームイン|
|-|ZOOM-OUT|ズームアウト|
*動作のプロセス [#dbb96236]
**起動 [#c4972ef6]
***loadUserHistory() [#z527d700]
DBのhistoryテーブルからログインしたユーザのIDと選択したDB...
> ResultSet rs = app.mSQL.executeSQL("select * from histo...
switch-case文でタイプに応じて適切なコマンドオブジェクト(...
-createCommand_INPUT_PERSON(Vector)
-createCommand_INPUT_KEYWORD(Vector)
-createCommand_INPUT_EVENT(Vector)
ページ名: