(30) 【HTTPServiceを使ってサンプルを拡張する 前半】

さて、前回まで、アドレス帳をサンプルとして作成しましたが、せっかくなので、少し拡張して
郵便番号から住所検索を行うボタンを追加したいと思います。

HTTPServiceを使用して、RESTで検索したいと思います。

修正するのは、MXML、ViewHelper、ValueObject、ServiceMxml。
拡張または新規作成するのは、Event、Command、BusinessLogic。
です。

お気づきの方いらっしゃるかと思いますが、
修正はView周り(MXMLとViewHelper)のみに留められています。
それ以外の部分は、拡張によって追加します。

変更要求の高いView周り(MXMLとViewHelper)と
それ以外の部分(EventやCommand)の切り分けをしっかり頭の中で整理しましょう。

ではまず、ValueObjectの修正を行います。
郵便番号のプロパティ(とアクセッサ)を追加します。

■vo.Address.as
以下の内容を追加します。

    ・・・
    /* 郵便番号 */
    private var zipcode_:String;
    public function get zipcode():String{
      return this.zipcode_;
    }
    public function set zipcode(value:String):void{
      this.zipcode_ = value;
    }
    ・・・

■address.vo.Address.java
以下の内容を追加します。

    ・・・
  /* 郵便番号 */
  private String zipcode;
  public String getZipcode() {
    return zipcode;
  }
  public void setZipcode(String zipcode) {
    this.zipcode = zipcode;
  }
    ・・・

次に、ServiceMxmlにサービスを登録します。

■AddressService.mxml
以下の内容を追加します。

    ・・・
  
  

    ・・・

郵便番号検索APIは、私は自社独自のものを使用しました。
一般的に公開されているAPI(例えばhttp://zip.cgis.biz/)のURLを記述してください。


次は、FrontControllerに追記します。

■control.AddressController.as
以下のようになりました。

package control
{
  import com.adobe.cairngorm.control.FrontController;
  import command.AddressSelectCommand;
  import command.AddressInsertCommand;
  import command.AddressUpdateCommand;
  import command.AddressRemoveCommand;
  import command.AddressSelectZipCommand;
  public class AddressController extends FrontController{
    public static const EVENT_ADDRESS_SELECT : String = "event_address_select";
    public static const EVENT_ADDRESS_INSERT : String = "event_address_insert";
    public static const EVENT_ADDRESS_UPDATE : String = "event_address_update";
    public static const EVENT_ADDRESS_REMOVE : String = "event_address_remove";
    public static const EVENT_ADDRESS_SELECTZIP : String = "event_address_selectZip";
    /**
     * コンストラクタ。
     */
    public function AddressController(){
      addCommand( EVENT_ADDRESS_SELECT, AddressSelectCommand );
      addCommand( EVENT_ADDRESS_INSERT, AddressInsertCommand );
      addCommand( EVENT_ADDRESS_UPDATE, AddressUpdateCommand );
      addCommand( EVENT_ADDRESS_REMOVE, AddressRemoveCommand );
      addCommand( EVENT_ADDRESS_SELECTZIP, AddressSelectZipCommand );
    }
  }
}

次回は、HTTPServiceを使ってサンプルを拡張する【後半】です。