2010/05/03

GAE/J入門 第三回 ~Googleアカウントの使用~ [ GAE ]

GAEではGoogleアカウントにログインしているユーザは
Googleアカウント情報を使ったサービスを提供する事ができます。
今回はそのGoogleアカウントの使用方法を。
例によって参照してるのはこちら

1.GoogleAccount情報の取得
GoogleAccountの使用方法は非常に簡単で、UserServiceクラスを使えば
ほとんどこのクラスからGoogleAccount情報を取得できます。
作成方法も簡単。

UserService userService = UserServiceFactory.getUserService();


これだけ!
このUserServiceクラスについては以前こちらこちらである程度書いたので
割愛しますが、こんな簡単な方法でGoogleAccount情報を使う事ができます。


2.アクセス制限をかける
次に、アクセス制限をかける方法です。
JavaではFilterという物を使うとServletが呼び出される前にFilterの
プログラムが実行されるらしいです。
具体的にはjavax.servelt.Filterインタフェースを実装します。
このインタフェースのdoFilterメソッドを実装する事で、権限を持たない
ユーザの場合はTOPへリダイレクトさせたりすることができます。
ただし勿論このFilterインタフェースを実装したクラスを作るだけでは
ダメで、web.xmlにFilterの設定を行う必要があります。

記述方法は今までのservlet等とほとんど同じです。まずFilter自体の記述を

<filter>
 <filter-name>[Filterの名称]</filter-name>
 <filter-class>[実装したFilterクラスのクラスパス]</filter-class>
</filter>


上記のように記述します。後は↑で定義したFilterのマッピングの定義を

<filter-mapping>
 <filter-name>[適用したいFilterの名前]</filter-name>
 <url-pattern>[Filterが適用されるUrlパターン]</url-pattern>
 <dispatcher>[Filterが適用されるタイミング]</dispatcher>
</filter-mapping>


上記のように定義します。filter-nameはそのまんま、url-patternもそのままですね。
例えばhttp://localhost:8080/admin/配下へのアクセスをフィルタリングしたい場合
このurl-patternは/admin/*となる訳です。
最後にdispatcherという項目がありますが、ここは指定できる値が決まってます。
具体的には以下の通りです。

REQUEST URLがリクエストされた時
FORWARD フォワードが行われた時
INCLUDE インクルードが行われた時
ERROR エラーページへ処理が移る時

普通はREQUESTを使う事になると思われます。

以上で簡単にアクセス制限を行う事が可能となります。

3.データをソートして取得する方法
お次はDataStoreからデータをソートして取得する方法です。
現時点でデータの取得は
1.とあるクラスに対して永続化されているデータを全件取得する
2.とあるクラスのidを指定して1件だけデータを取得する
上記二通りの方法だけでした。これに加えて今度はデータをソートして
取得する方法です。やり方は簡単。
まずそもそもデータを全件取得する方法のおさらいから。

1.取得したいクラスを指定して、Queryクラスを作る。
 Query query = pm.newQuery(Post.class); ←pmはPersistenceManagerクラス
2.Queryクラスのインスタンスのexecuteメソッドを実行する
 List list = (List) query.execute();

こんな感じでした。ソートを行う場合はこの1.と2.の間でsetOrderingメソッドを
実行します。例えば降順にしたかったら

 query.setOrdering("date desc");


こんな一行を挟めばOKです。
…しかし思いっきりSQLを直書きしている感じなんですが…(´・ω・`)
項目名といいて降順・昇順といい・・・もっと綺麗に書く方法があるのだろか?



という訳で今回は以上で終了です。まとめると
・GoogleAccount情報を取得するにはUserServiceクラスを使用する
・アクセス制限を行う方法の一つにFilterクラスという物がある
・データ取得におけるソートの方法
ですね。
さー次はなんだろか。