SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~アプレットベースのRIAフレームワーク「Apache Pivot」(4)

第16回

PlainTextSerializerによるテキストデータの取得

 テキストデータの取得は、「PlainTextSerializer」というシリアライザを利用します。setSerializerでこのPlainTextSerializerをシリアライザに設定して実行すれば、テキストデータとしてデータを取得するようになります。ただし、taskExecutedメソッドで渡されるTaskの「getResult」では、Stringが得られるわけではありません。テキストデータといえども、もっと構造化されたオブジェクトが返されるのです。

 PlainTextSerializerでは、getResultで得られるのは「Document」というインスタンスになっています。この中には、テキストが段落ごとに「Paragraph」というオブジェクトとしてまとめられています。Documentから順にParagraphを取り出し、そこからさらに内容を取得していくことで、長いドキュメントなども取り出すことができます。

 DocumentおよびParagraphから要素を取り出すには「get」メソッドを呼び出します。これは引数に取り出す要素のインデックス番号を指定します。Paragraphには、「Node」というオブジェクトとしてテキストが保管されており、getでNodeを取り出せば、後はtoStringでテキストが得られます。ここでのtaskExecutedでの処理を見てください。

Document doc = (Document)task.getResult();
Paragraph para = (Paragraph)doc.get(0);
Prompt.prompt(para.get(0).toString(), window);

 getResultでDocumentを取得し、そこからgetでさらにParagraphを取り出し、さらにgetでNodeを取り出して、そのtoStringをpromptで表示しています。プレーンなテキストといえども、このようにきっちりと構造化されているのです。

CSVデータの利用

 多量のデータをファイルとして整理する場合、よく利用されるのがCSVファイルです。このCSVファイルも、やはりシリアライザを使って読み込むことができます。これもやってみましょう。まず、プログラムの公開場所(ここではhttp://サーバー/HelloPivot/)に「sampledata.csv」というCSVファイルを配置しましょう。内容は、次のようなサンプルデータを用意しておきます。

Tokyo,1234,987
Osaka,567,654
Nagoya,89,321

 ここでは、支店名、前期・後期の売上、といった項目を用意しておきました。これをロードして表示させることにしましょう。まずWTKXファイルにテーブルを用意しておきます。HelloApp.wtkxに、次のようなタグを用意してください。

<TableView wtkx:id="table1"
        styles="{includeTrailingVerticalGridLine:true}">
    <columns>
            <TableView.Column name="siten" width="100"
                    headerData="Siten" />
            <TableView.Column name="zenki" width="70"
                    headerData="Zenki" />
            <TableView.Column name="kouki" width="70"
                    headerData="Kouki" />
    </columns>
    <tableViewSortListeners>
        <wtkx:script>
        function sortChanged(view) {
            var tableData = view.getTableData();
            tableData.setComparator(new org.apache.pivot.wtk.content.TableViewRowComparator(view));
        }
        </wtkx:script>
    </tableViewSortListeners>
</TableView>

Beanクラスの定義

 続いて、データを保管するBeanクラスを用意しましょう。ここでは、「SampleDataObject」というクラスとして用意します。中には、siten、zenki、koukiという3つのプロパティを用意しておくことにします。これらに、CSVデータの各項目を保管するようにします。

package jp.tuyano.pivot;

public class SampleDataObject {
    private String siten = null;
    private int zenki = 0;
    private int kouki = 0;
    
    public String getSiten() {
        return siten;
    }
    public void setSiten(String siten) {
        this.siten = siten;
    }
    public int getZenki() {
        return zenki;
    }
    public void setZenki(int zenki) {
        this.zenki = zenki;
    }
    public int getKouki() {
        return kouki;
    }
    public void setKouki(int kouki) {
        this.kouki = kouki;
    }
    @Override
    public String toString() {
        return this.siten + "," + this.zenki + "," + this.kouki;
    }
}

次のページ
ソースコードの修正

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5114 2010/06/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー