package com.code44.finance.backend.entity; import com.code44.finance.common.model.ModelState; import com.code44.finance.common.utils.StringUtils; import com.google.api.server.spi.config.ApiResourceProperty; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Index; import java.util.UUID; public class BaseEntity { @Id @ApiResourceProperty(name = "id") private String id; @ApiResourceProperty(name = "model_state") private ModelState modelState; @ApiResourceProperty(name = "create_ts") private long createTimestamp; @Index @ApiResourceProperty(name = "edit_ts") private long editTimestamp; protected BaseEntity() { setModelState(ModelState.Normal); } public void onCreate() { if (StringUtils.isEmpty(getId())) { setId(UUID.randomUUID().toString()); } final long timestamp = System.currentTimeMillis(); setCreateTimestamp(timestamp); setEditTimestamp(timestamp); } public void onUpdate() { final long timestamp = System.currentTimeMillis(); setEditTimestamp(timestamp); } public String getId() { return id; } public void setId(String id) { this.id = id; } public ModelState getModelState() { return modelState; } public void setModelState(ModelState modelState) { this.modelState = modelState; } public long getCreateTimestamp() { return createTimestamp; } public void setCreateTimestamp(long createTimestamp) { this.createTimestamp = createTimestamp; } public long getEditTimestamp() { return editTimestamp; } public void setEditTimestamp(long editTimestamp) { this.editTimestamp = editTimestamp; } }