SimpleDB で簡単にデータを取得するユーティリティ(3)

SimpleDB で簡単にデータを取得するユーティリティ(2)のつづき。

次に、以下のように取得できるメソッドを作成します。

CustomerItem item = SimpleDB.get(CustomerItem.class, domain, itemName);

第一引数には ResultItem を継承したモデルクラスを入れるようにします。指定されたクラスをインスタンス化し SimpleDB から取得したデータを assign メソッドを利用して格納していきます。

  public static <M> M get(Class<M> rootClass, String domain, String itemName) {
    AmazonSimpleDB client = getClient();
    try {
      M model = rootClass.newInstance();
      if (model instanceof ResultItem) {
        GetAttributesResult result =
          client.getAttributes(new GetAttributesRequest(domain, itemName)
            .withConsistentRead(true));
        ResultItem item = (ResultItem) model;
        item.assign(itemName, result);
      }
      return model;
    } catch (InstantiationException e) {
      //
    } catch (IllegalAccessException e) {
      //
    }

    return null;
  }

最後に、ResultItem を継承した CustomerItem クラスを作成します。

public class CustomerItem extends ResultItem {

  private static final long serialVersionUID = -2086983097145813350L;

  // 姓
  public static String KEY_LASTNAME = "lastname";

  // 名
  public static String KEY_FIRSTNAME = "firstname";

  // 会社
  public static String KEY_COMPANY = "company";

  // 登録日時
  public static String KEY_REGISTER_DATE = "registerDate";

  public String getLastname() {
    return get(KEY_LASTNAME);
  }

  public String getFirstname() {
    return get(KEY_FIRSTNAME);
  }

  public String getCompany() {
    return get(KEY_COMPANY);
  }

  public Date getRegisterDate() {
    return getAsDate(KEY_REGISTER_DATE);
  }

}