2009年7月31日金曜日

GWTでファイルアップロード

現在のGoogle App Engineのアプリケーションにいつか追加したいな
と思っているのが、CSVファイルの取り込み機能。

いままで、ファイルのアップロードと言うロジックは書いたことないので手さぐり状態で
調べてみる。

とりあえず、下記を利用すれば出来ました。
(1)GWT側
FileUploadコンポーネント
http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FileUpload.html

(2)Google App Engine側
Google App Engine for Javaを使ってみよう!(2)Images Java API の使い方

(1)のサンプルコードの

form.setAction("/myFormHandler");

の部分を(2)で定義してあげたものに替えてあげればOKです。

(2)のサンプルどおりにやるのであれば、この部分は、
form.setAction("/imagetest");

となります。


また、リクエストが帰ってきたときのロジックは、下記の部分の
event.getResults()にサーバの応答がhtmlが帰ってくるので、
ここを替えてあげれば、サーバからの応答も表示することが出来ました、


form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
public void onSubmitComplete(SubmitCompleteEvent event) {
// When the form submission is successfully completed, this event is
// fired. Assuming the service returned a response of type text/html,
// we can get the result text here (see the FormPanel documentation for
// further explanation).
Window.alert(event.getResults());
}
});


ファイルの送信は、 gwtuploadというのもあるみたいなんで、
http://code.google.com/p/gwtupload/
次は、これを試してみようと思う。

2009年7月29日水曜日

地図から検索 マイナー機能追加

私の作成したアップリケーション地図から検索を少しだけ機能改善しました。

しばらく、放置してたので気が向いたら徐々にいろいろな機能を増やしていきたいと
思っています。

検索結果のラベル検索時に

・選択中のラベルの色を変更
・選択したお店を地図と連動

ということをするように修正しました。

この機能により、今まで登録したデータの位置が微妙に正しくない場合があることが
わかったので、徐々に直していきます。

クリックイベントのソースはこんな感じ。

ClickHandler newch = new ClickHandler(){
public void onClick(ClickEvent event) {
clickHandler.onClick(event);
LatLng point = LatLng.newInstance(clientMapData.getLatitude()
,clientMapData.getLongitude());
Marker marker = new Marker(point);
map.addOverlay(marker);
map.setCenter(point);
title.setStyleName("selectedLabel");
}
};


title.setStyleName("selectedLabel");
の部分の引数は、cssファイルへ記述しておく。

今回は適当にこんな感じ
========================================
.normalLabel {
color: black;
background-color: white;
}
.selectedLabel {
color: blue;
background-color:#D7F5FF;
}
========================================

ご意見などあれば、いただけると有難いです。

2009年7月21日火曜日

Google Plugin for Eclipse と  Eclipse 3.5

最近、Eclipse 3.5が出たんだけど、Google Plugin for Eclipseとの相性は
どうなんだろうと入れるのに躊躇していたら、下記のページに記述がありました。

http://code.google.com/intl/ja/appengine/docs/java/tools/eclipse.html

下記の一文があり、

=====================================
Please note that the plugin does not yet support the recently released Eclipse 3.5 (Galileo). In the mean time, you can download Eclipse 3.4 from the Eclipse web site.
=====================================

つまりは、しばらくは、eclipse3.4のほうを使ってねということみたい。

なんで、我が家のeclipseはしばらく、3.4のままにしておくことにする。

2009年7月15日水曜日

Google App Engine for Java がバージョンアップ

Google App Engine for Javaのバージョンが1.2.2になったようです。

Google App Engine Blog: Google App Engine for Java SDK 1.2.2 Released

同時にGoogle Web Toolkit も1.7にVerUpしていました。

What's New in GWT 1.7?

とりあえず、ecliseのsoftware Updateにて更新してみる。
あとは、eclipseプロジェクトの右クリックでgoogleを選択して、バージョンを
替えておけば更新完了。

とりあえず、Google App Engineで目につく目新しい機能としては、
開発環境のデータベース閲覧機能でしょうか。

新しいバージョンに更新後、

http://localhost:8080/_ah/admin/

へアクセスすると、ローカルのデータベースを参照できるようになりました。

これで、テスト用のデータを削除したりすることが簡単にできるようになりました。

その他の新機能についてもこれから読んでみてこれはと思うものがあれば、書き足していきます。

2009年6月29日月曜日

「地図から検索」を公開

ずっと以前から作ってみたいなと思っていたアプリケーションを
作ってみた。

初期版なので、まだまだ機能が弱い部分もあるけど、とりあえず、
公開することにしてみる。

どういうアプリケーションかと言うと、自分の身の回りにある
イベント情報やお得な情報を共有できるようなサイト。
しかも、それは、地図上を探索することによって見つけられる
というようなサイトを作ってみたかった。

本来は、もっと地域情報の共有を図れるようにしたかったのですが、
情報の陳腐化が激しい分、最初は、ハードルが高いかなと言うことで、
まずは、お店のチラシの情報を登録できるというようなアプリケーションにしました。

アプリケーションのURLはこちら。
http://loarsh.appspot.com/

使い方は、イメージをつかむために上記のURLをクリックしたら
「表示」ボタンを押してください。
右側に、この地域の周辺のチラシ情報のリンクが出てきます。

登録する場合には、下のほうから、
下記の項目を入力して「登録」ボタンを押してください。
URL:  チラシのURL
タイトル: お店の名前
住所:   お店の住所を入力後確定ボタンを押してください。
      住所がわからない場合には、近所で検索して、マーカーを移動させても
      OKです。

現状は、画面から削除機能が無いので、誤って登録してしまった場合には、
ご連絡いただければ削除します。
#削除機能は、近々につけようと思います。

なおこのアプリケーションは、Googleの技術を利用して作成しております。

ご意見、ご要望はこちらからコメントしていただければと思います。
ご要望いただいたものを優先的に改善していきたいと思います。

2009年6月24日水曜日

Google App EngineのDatastoreでカラム追加してみる

本日は、既存のデータに対して、プロパティの追加を行ったらどうなるんだろうと
試したくなって試してみた。

データベースで言うところのカラム追加です。

既存のentityに対し、下記のような感じでプロパティを追加してみたところ、

@Persistent
private int updateCount;

ロジック自体は修正していないもののエラーが出るようになったしまった。

null値がうんぬんと書かれていたので、intのようなprimitiveな型は追加できないのかと
思い、Integerというオブジェクト型にしてみたところ、うまく動作するようだった。

直感的な動作どおり、追加前に入っていたデータは、nullとして入っているようです。

つまり、entityのプロパティを追加する場合には、Integerなどのクラスにしなくては
いけないということになるのでしょうか。

2009年6月23日火曜日

GoogleMap(GWT)でDrag後のMarkerの位置取得

昨日の続きで本日は、GWTで作ったGoogleMap上でドラッグしたMarkerの位置を取得してみた。

本日、新たに利用したクラスはこちら。
MarkerDragEndHandler


こんな感じで書いてみたら思ったとおりに動作してくれました。
=======================================

Marker marker = new Marker(point,mo);
marker.addMarkerDragEndHandler(new MarkerDragEndHandler(){
public void onDragEnd(MarkerDragEndEvent event){
Marker mk = event.getSender();
displayLatLng(mk.getLatLng());
}
});


=======================================

毎日、少しずつ進めていきます。