ToDoListサンプル (for Seaside日本語パッチ版 with DB) 簡易なToDoListのサンプルです。セッションアダプタクラスを切り替えることで、各種DBに接続できます。 @アクセス@ http://localhost:9090/seaside/toDoList ユーザ名とパスワードを聞かれます。'user1'/'pwd1'、'user2'/'pwd2'のどちらかでログインできます。 @セッションアダプタ@ セッションアダプタとして以下が用意されています。 ToDoSession ToDo用セッションアダプタの抽象クラス ToDoSessionMemory オンメモリDB用 ToDoSessionSStore SStore用 ToDoSessionOmniBase OmniBase接続用 ToDoSessionGlorp GlorpによるRDB(PostgreSQL)接続用 デフォルトではオンメモリDB用のアダプタ(ToDoSessionMemory)が有効になっています。 オンメモリのDB(ToDoMemoryDB)は単なるシングルトンでSqueakのイメージ内にデータを保持します。(イメージを保存しないとToDoのデータは消えてしまうことになります。外部のDBにデータを保存するためには、別のセッションアダプタを使う必要があります。) @セッションアダプタの準備@ 以下、OmniBaseに接続する例で説明します。ワークスペースで下記を実行します。 "DB環境の準備" "<セッションアダプタクラス> prepareEnvironment" ToDoSessionOmniBase prepareEnvironment. "デフォルトユーザ(user1,user2)の追加:" "<セッションアダプタクラス> addDefaultUsers" ToDoSessionOmniBase addDefaultUsers. 上記が必要なのは最初にDBにアクセスするときのみです。addDefaultUsersによるユーザの追加は常に上書きであり、これを行うと既存のuser1、user2のデータがあった場合は初期化されます。 Glorpの場合、prepareEnvironmentを送った時点でpostgresユーザのパスワードを聞いてくるので、適切に入力してください。接続先のポート番号など、さらに細かな指定を行いたい場合は、ToDoDescriptorSystem class >> buildConnectionArguments を編集します。 @セッションアダプタの切り替え@ ワークスペースで下記を実行します。<セッションアダプタクラス>にactivateを送ります。 "<セッションアダプタクラス> activate" ToDoSessionOmniBase activate. またはWebブラウザ上から切り替えることも出来ます。ToDoのアプリが表示されている状態で、ページ下の"Configure"をクリックすると設定画面が開きます。"General"欄の"Session Class"のプルダウンメニューで、適切なセッションアダプタクラスを選択し、"Close"します。 "Configure"リンクは現在どのアダプタクラスが使われているかを確認するために使うこともできます。 @セッションアダプタの準備と切り替えを一度に@ 便利メソッドとしてsetUpというものが用意されています。prepareEnvironment, addDefaultUsers, activateをまとめて行います。 "<セッションアダプタクラス> setUp" ToDoSessionOmniBase setUp. @環境の保存@ 現在アクティブなセッションアダプタ、PostgreSQLへの接続情報などを次回立ち上げ時にも有効にするには、Squeakのイメージを保存します。デスクトップをクリックして"保存"を選びます。 @ソースコードの読み方@ ToDoアプリは、4つのクラスカテゴリに分かれています。 'ToDo-Component' Seasideのコンポーネント群(View + Controller) 'ToDo-Model' ToDoのモデル(Model) 'ToDo-Session' セッションアダプタクラス群 'ToDo-Glorp' Glorp用RDBマッピングクラス ToDoTaskコンポーネントがhttp://localhost:9090/seaside/toDoListのURLで開くエントリポイントとなっているので、そこから読み進めると良いでしょう。DBとの接続の仕方の興味がある人は、セッションアダプタクラス内のユーザ管理('actions-user')やToDo管理('actions-todo')プロトコルのメソッド群を見ていくと、それぞれのDBの使い方の感触がつかめると思います。 Enjoy! --- [:masashi | ^umezawa] 2009/1/18 22:03