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
こんな感じでした。ソートを行う場合はこの1.と2.の間でsetOrderingメソッドを
実行します。例えば降順にしたかったら
query.setOrdering("date desc");
こんな一行を挟めばOKです。
…しかし思いっきりSQLを直書きしている感じなんですが…(´・ω・`)
項目名といいて降順・昇順といい・・・もっと綺麗に書く方法があるのだろか?
という訳で今回は以上で終了です。まとめると
・GoogleAccount情報を取得するにはUserServiceクラスを使用する
・アクセス制限を行う方法の一つにFilterクラスという物がある
・データ取得におけるソートの方法
ですね。
さー次はなんだろか。