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); } }