Mercurial > hg > Papers > 2017 > tatsuki-master
annotate jungleTreeBrowser.tex @ 37:14267d61122d
commit
author | tatsuki |
---|---|
date | Sun, 19 Feb 2017 10:19:11 +0900 |
parents | c1d7270965c5 |
children |
rev | line source |
---|---|
8
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
1 \chapter{Jungleを使ったアプリケーション} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
2 本章では、Jungleを使用した例題アプリケーションを記述する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
3 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
4 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
5 \section{Jungle Tree ブラウザ} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
6 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
7 Jungleの木に対する変更において、{\tt JungleTreeEditor}クラスを用いる方法はプログラム上では便利だが、手動で変更するのには向いていない。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
8 よって、組み込みWEBサーバーであるJettyを使用し、Servletとして木の表示と編集を実現した。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
9 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
10 \subsection{木構造の表示} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
11 JungleTreeブラウザにおいて、Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
12 %図\ref{printNode}は、サーバからデータを送り、ブラウザ上でノードを可視化するまでの流れである。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
13 この流れは、Jungleの{\tt NodePath}の処理を除けば通常のデータベースのレコードの表示と同等である。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
14 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
15 編集するノードのパスはURLで記述されている。例えば、 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
16 {\small |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
17 \verb! http://localhost/showBoardMessage?! |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
18 \verb! bname=Layout&path=-1,0,2! |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
19 } |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
20 などとなる。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
21 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
22 以下にJungleTreeブラウザを用いて、ノードを表示するまでの流れを記述する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
23 \begin{enumerate} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
24 \item ユーザーは表示したいノードのパスをURLでJungleTreeブラウザに送る。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
25 \item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
26 \item JungleTreブラウザは、パスで指定した位置のノードを木から取得する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
27 \item 取得したノードの中身を、JungleTreeブラウザが表示する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
28 \end{enumerate} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
29 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
30 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
31 \subsection{Jungle Tree ブラウザを使った木の編集} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
32 %図\ref{JungleEdit}はブラウザを用いたJungleの木の更新の流れである。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
33 以下にJungle Treeブラウザを用いた木の編集の流れを示す。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
34 \begin{enumerate} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
35 \item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する 。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
36 \item ユーザーはJungleTreeブラウザに木の変更要求を送る。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
37 \item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
38 \item 編集を行う木から、{\tt JungleTreeEditor}クラスを取得し、木の変更を行う。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
39 \item 木の変更をJungleにコミットする。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
40 \item 木の変更の結果を表示する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
41 \end{enumerate} |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
42 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
43 パスを使用することにより、木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
44 ブラウザとWEBサーバは、セッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
45 ただし、編集し終わった時に、他の編集が割り込んでいたら、その編集は無効となる。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
46 %この点が既存のRDBとは異なる。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
47 また巨大な木を操作する時には、Pathを直接URLに含むことはできないので、他の工夫が必要になると考えられる。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
48 このアプリケーションでは任意の木を取り扱うので、木の大きさの現実的な制限を除けば木の設計の問題はない。 |
c1d7270965c5
add databases.tex jungleTreeBrowser renderingEngine.tex
tatsuki
parents:
diff
changeset
|
49 |