Slim3のDatastore Attribute

2013-03-28T00:00:00+00:00 Google App Engine Java

https://sites.google.com/site/slim3appengine/slim3-datastore/defining-data-classes/automatic-values

っていうのがあるっていうのを今日知った。

  • CreationDate
  • ModificationDate
  • CreateEmail
  • ModificationEmail
  • CreateUser
  • ModificationUser

っていうのをAttributeアノテーションのlistener引数に指定する事が出来る。AttributeListener<T>ていうのがあってそれを利用する事で独自のも作れるんだと思われる

package sample.model;

import java.io.Serializable;
import java.util.Date;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.users.User;

import org.slim3.datastore.CreationDate;
import org.slim3.datastore.CreationEmail;
import org.slim3.datastore.CreationUser;
import org.slim3.datastore.Model;
import org.slim3.datastore.Attribute;
import org.slim3.datastore.ModificationDate;

@Model
public class Sample implements Serializable {

    private static final long serialVersionUID = 1L;

    @Attribute(primaryKey = true)
    private Key key;

    @Attribute
    private String name;

    @Attribute(listener = CreationDate.class)
    private Date createdAt;

    @Attribute(listener = ModificationDate.class)
    private Date updatedAt;

    @Attribute(listener = CreationEmail.class)
    private String email;

    @Attribute(listener = CreationUser.class)
    private User user;

    public Key getKey() {
        return key;
    }

    public void setKey(Key key) {
        this.key = key;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public Date getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

ってなモデルを作っといて、操作すると

ログインしてない状態とかである場合にはおそらくはnullが入るんではないかと。ってな感じで自分で何かしなくても勝手に値を作ってくれたり出来る模様

chrome.pageLauncher MapFragmentを使ってみた