/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.venky.swf.db.model; import java.sql.Timestamp; import java.util.List; import java.util.Map; import java.util.Set; import com.venky.cache.Cache; import com.venky.swf.db.annotations.column.COLUMN_DEF; import com.venky.swf.db.annotations.column.COLUMN_NAME; import com.venky.swf.db.annotations.column.COLUMN_SIZE; import com.venky.swf.db.annotations.column.HOUSEKEEPING; import com.venky.swf.db.annotations.column.IS_AUTOINCREMENT; import com.venky.swf.db.annotations.column.IS_NULLABLE; import com.venky.swf.db.annotations.column.IS_VIRTUAL; import com.venky.swf.db.annotations.column.defaulting.StandardDefault; import com.venky.swf.db.annotations.column.ui.HIDDEN; import com.venky.swf.db.annotations.column.ui.PROTECTION; import com.venky.swf.db.table.Record; import com.venky.swf.exceptions.AccessDeniedException; /** * * @author venky */ public interface Model extends _Identifiable { @IS_NULLABLE(false) @IS_AUTOINCREMENT @HIDDEN @HOUSEKEEPING public int getId(); public void setId(int id); @HIDDEN @HOUSEKEEPING @IS_NULLABLE(false) @COLUMN_DEF(StandardDefault.ZERO) public int getLockId(); public void setLockId(int lockid); @COLUMN_SIZE(10) @COLUMN_NAME("updater_id") @PROTECTION @HOUSEKEEPING @COLUMN_DEF(StandardDefault.CURRENT_USER) public Integer getUpdaterUserId(); public void setUpdaterUserId(Integer updaterUserId); public User getUpdaterUser(); @COLUMN_NAME("updated_at") @IS_NULLABLE(false) @COLUMN_DEF(StandardDefault.CURRENT_TIMESTAMP) @PROTECTION @HOUSEKEEPING public Timestamp getUpdatedAt(); public void setUpdatedAt(Timestamp updatedAt); public static final String UPDATED_AT_COLUMN_NAME = "UPDATED_AT"; @COLUMN_SIZE(10) @COLUMN_NAME("creator_id") @PROTECTION @HOUSEKEEPING @COLUMN_DEF(StandardDefault.CURRENT_USER) public Integer getCreatorUserId(); public void setCreatorUserId(Integer creatorUserId); public User getCreatorUser(); @COLUMN_NAME("created_at") @IS_NULLABLE(false) @COLUMN_DEF(StandardDefault.CURRENT_TIMESTAMP) @PROTECTION @HOUSEKEEPING public Timestamp getCreatedAt(); public void setCreatedAt(Timestamp createdAt); /** * Calls {@link #save(boolean)} with true. */ public void save(); /** * Provided for performance during installations. * This method is not recommended to be be used in applications generally. * @see #save() * @param performValidations may be passed as false to bypass validations. */ public void save(boolean performValidations); public void destroy(); public void init(); public boolean isAccessibleBy(User user); public boolean isAccessibleBy(User user, Class<? extends Model> asModel); public Set<String> getParticipatingRoles(User user) throws AccessDeniedException; public Set<String> getParticipatingRoles(User user,Class<? extends Model> asModel) throws AccessDeniedException; public Set<String> getParticipatingRoles(User user,Cache<String,Map<String,List<Integer>>> pGroupOptions) throws AccessDeniedException; public Record getRawRecord(); public <M extends Model> M cloneProxy(); public Object getTxnProperty(String name); public void setTxnPropery(String name,Object value); public Object removeTxnProperty(String name); @IS_VIRTUAL @HIDDEN public boolean isDirty(); public void defaultFields(); }