/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.venky.swf.db.model;
import java.util.List;
import java.util.Map;
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_NULLABLE;
import com.venky.swf.db.annotations.column.IS_VIRTUAL;
import com.venky.swf.db.annotations.column.PASSWORD;
import com.venky.swf.db.annotations.column.UNIQUE_KEY;
import com.venky.swf.db.annotations.column.defaulting.StandardDefault;
import com.venky.swf.db.annotations.column.indexing.Index;
import com.venky.swf.db.annotations.column.pm.PARTICIPANT;
import com.venky.swf.db.annotations.column.relationship.CONNECTED_VIA;
import com.venky.swf.db.annotations.column.ui.HIDDEN;
import com.venky.swf.db.annotations.column.ui.PROTECTION;
import com.venky.swf.db.annotations.model.CONFIGURATION;
import com.venky.swf.db.annotations.model.EXPORTABLE;
import com.venky.swf.db.annotations.model.HAS_DESCRIPTION_FIELD;
import com.venky.swf.db.annotations.model.MENU;
import com.venky.swf.db.model.reflection.ModelReflector;
import com.venky.swf.sql.Expression;
/**
*
* @author venky
*/
@HAS_DESCRIPTION_FIELD("LONG_NAME")
@CONFIGURATION
@MENU("Admin")
public interface User extends Model{
@IS_NULLABLE(false)
@UNIQUE_KEY
@Index
public String getName();
public void setName(String name);
@Index
public String getLongName();
public void setLongName(String name);
@IS_NULLABLE
@UNIQUE_KEY("API")
@HIDDEN
@PROTECTION
@COLUMN_DEF(StandardDefault.NULL)
@EXPORTABLE(false)
public String getApiKey();
public void setApiKey(String key);
@IS_VIRTUAL
@COLUMN_SIZE(60)
@PASSWORD
public String getChangePassword();
@IS_VIRTUAL
public void setChangePassword(String password);
@PASSWORD
@HIDDEN
@PROTECTION
public String getPassword();
public void setPassword(String password);
public boolean authenticate(String password);
public static final String USER_AUTHENTICATE = "user.authenticate" ;
public <M extends Model> Cache<String,Map<String,List<Integer>>> getParticipationOptions(Class<M> modelClass);
public Cache<String,Map<String,List<Integer>>> getParticipationOptions(Class<? extends Model> modelClass,Model model);
public static final String GET_PARTICIPATION_OPTION = "get.participation.option";//++ModelClass.SimpleName
public <M extends Model> Expression getDataSecurityWhereClause(Class<M> modelClass);
public Expression getDataSecurityWhereClause(Class<? extends Model> modelClass,Model model);
public Expression getDataSecurityWhereClause(ModelReflector<? extends Model> ref, Cache<String,Map<String,List<Integer>>> participatingRoleGroupOptions);
@IS_VIRTUAL
public boolean isAdmin();
@COLUMN_NAME("ID")
@PROTECTION
@PARTICIPANT
@HIDDEN
@HOUSEKEEPING
public Integer getSelfUserId();
public void setSelfUserId(Integer userId);
@IS_VIRTUAL
public User getSelfUser();
@CONNECTED_VIA("USER_ID")
public List<UserEmail> getUserEmails();
public void generateApiKey();
}