package cms.model.meta; import cms.model.model.PageEntity; import cms.model.model.PageTagEntity; import cms.model.model.TagEntity; import com.google.appengine.api.datastore.AsyncDatastoreService; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Key; import org.slim3.datastore.CoreAttributeMeta; import org.slim3.datastore.ModelMeta; import org.slim3.datastore.ModelRef; import org.slim3.datastore.ModelRefAttributeMeta; import org.slim3.datastore.json.Default; import org.slim3.datastore.json.JsonCoder; import org.slim3.datastore.json.JsonReader; import org.slim3.datastore.json.JsonRootReader; import org.slim3.datastore.json.JsonWriter; public final class PageTagEntityMeta extends ModelMeta<PageTagEntity> { public final CoreAttributeMeta<PageTagEntity, Key> key = new CoreAttributeMeta<PageTagEntity, Key>(this, "__key__", "key", Key.class); public final ModelRefAttributeMeta<PageTagEntity, ModelRef<PageEntity>, PageEntity> pageRef = new ModelRefAttributeMeta<PageTagEntity, ModelRef<PageEntity>, PageEntity>(this, "pageRef", "pageRef", ModelRef.class, PageEntity.class); public final ModelRefAttributeMeta<PageTagEntity, ModelRef<TagEntity>, TagEntity> tagRef = new ModelRefAttributeMeta<PageTagEntity, ModelRef<TagEntity>, TagEntity>(this, "tagRef", "tagRef", ModelRef.class, TagEntity.class); private static final PageTagEntityMeta slim3_singleton = new PageTagEntityMeta(); /** * @return the singleton */ public static PageTagEntityMeta get() { return slim3_singleton; } /** */ public PageTagEntityMeta() { super("PageTagEntity", PageTagEntity.class); } @Override public PageTagEntity entityToModel(Entity entity) { PageTagEntity model = new PageTagEntity(); model.setKey(entity.getKey()); if (model.getPageRef() == null) { throw new NullPointerException("The property (pageRef) is null."); } model.getPageRef().setKey((Key) entity.getProperty("pageRef")); if (model.getTagRef() == null) { throw new NullPointerException("The property (tagRef) is null."); } model.getTagRef().setKey((Key) entity.getProperty("tagRef")); return model; } @Override public Entity modelToEntity(Object model) { PageTagEntity m = (PageTagEntity) model; Entity entity = null; if (m.getKey() != null) { entity = new Entity(m.getKey()); } else { entity = new Entity(kind); } if (m.getPageRef() == null) { throw new NullPointerException("The property (pageRef) must not be null."); } entity.setProperty("pageRef", m.getPageRef().getKey()); if (m.getTagRef() == null) { throw new NullPointerException("The property (tagRef) must not be null."); } entity.setProperty("tagRef", m.getTagRef().getKey()); return entity; } @Override protected Key getKey(Object model) { PageTagEntity m = (PageTagEntity) model; return m.getKey(); } @Override protected void setKey(Object model, Key key) { validateKey(key); PageTagEntity m = (PageTagEntity) model; m.setKey(key); } @Override protected long getVersion(Object model) { return 0L; } @Override protected void incrementVersion(Object model) { } @Override protected void assignKeyToModelRefIfNecessary(AsyncDatastoreService ds, Object model) { PageTagEntity m = (PageTagEntity) model; if (m.getPageRef() == null) { throw new NullPointerException("The property (pageRef) must not be null."); } m.getPageRef().assignKeyIfNecessary(ds); if (m.getTagRef() == null) { throw new NullPointerException("The property (tagRef) must not be null."); } m.getTagRef().assignKeyIfNecessary(ds); } @Override protected void prePut(Object model) { } @Override protected void postGet(Object model) { } @Override public String getSchemaVersionName() { return "slim3.schemaVersion"; } @Override public String getClassHierarchyListName() { return "slim3.classHierarchyList"; } @Override protected boolean isCipherProperty(String propertyName) { return false; } @Override protected void modelToJson(JsonWriter writer, Object model, int maxDepth, int currentDepth) { PageTagEntity m = (PageTagEntity) model; writer.beginObject(); JsonCoder encoder = null; if(m.getKey() != null){ writer.setNextPropertyName("key"); encoder = new Default(); encoder.encode(writer, m.getKey()); } if(m.getPageRef() != null && m.getPageRef().getKey() != null){ writer.setNextPropertyName("pageRef"); encoder = new Default(); encoder.encode(writer, m.getPageRef(), maxDepth, currentDepth); } if(m.getTagRef() != null && m.getTagRef().getKey() != null){ writer.setNextPropertyName("tagRef"); encoder = new Default(); encoder.encode(writer, m.getTagRef(), maxDepth, currentDepth); } writer.endObject(); } @Override public PageTagEntity jsonToModel(JsonRootReader rootReader, int maxDepth, int currentDepth) { PageTagEntity m = new PageTagEntity(); JsonReader reader = null; JsonCoder decoder = null; reader = rootReader.newObjectReader("key"); decoder = new Default(); m.setKey(decoder.decode(reader, m.getKey())); reader = rootReader.newObjectReader("pageRef"); decoder = new Default(); decoder.decode(reader, m.getPageRef(), maxDepth, currentDepth); reader = rootReader.newObjectReader("tagRef"); decoder = new Default(); decoder.decode(reader, m.getTagRef(), maxDepth, currentDepth); return m; } }