/** * Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php */ package org.ralasafe.entitle; import java.util.Collection; import java.util.List; import java.util.Locale; import java.util.Map; import org.ralasafe.EntityExistException; import org.ralasafe.user.User; public interface EntitleManager { /** * * @param pvlgId * @return Collection< {@link DecisionEntitlement} > */ public abstract Collection getDecisionEntitlements(int pvlgId); /** * * @param pvlgId * @return Collection< {@link QueryEntitlement} > */ public abstract Collection getQueryEntitlements(int pvlgId); /** * Check this user has fine grained(data level) access to this given data(in context). * If this privilege is a normal one, check this user has function access to this privilege first! * @param locale * @param pvlgId * @param user * @param ctx * @return */ public abstract Decision permit(Locale locale, int pvlgId, User user, Map ctx); /** * Execute for this user, return fine grained(data level, row and column level) data. * If this user has no privilege to execute privilege, return empty Collection. * @param pvlgId * @param user * @param ctx * @return Collection< YourJavaBean > */ public abstract QueryResult query(int pvlgId, User user, Map ctx); /** * Execute for this user, return fine grained(data level, row and column level) data. * If this user has no privilege to execute privilege, return empty Collection. * @param pvlgId * @param user * @param ctx * @param where Customized where conditions * @return Collection< YourJavaBean > */ public abstract QueryResult query(int pvlgId, User user, Map ctx, CustomizedWhere where); /** * Query by pagnation. * * @param first Return from this index, index counts from 0 * @param max The max records be returned */ public abstract QueryResult query(int pvlgId, User user, Map ctx, int first, int max); public abstract QueryResult query(int pvlgId, User user, Map ctx, CustomizedWhere where, int first, int max); public abstract int queryCount(int pvlgId, User user, Map ctx); public abstract int queryCount(int pvlgId, User user, Map ctx, CustomizedWhere where); public abstract void addEntitlements(int privilegeId, Collection decisionEntitlements, Collection queryEntitlements); public abstract QueryEntitlement addQueryEntitlement( QueryEntitlement queryEntitlement) throws EntityExistException; public abstract void deleteQueryEntitlement(int queryEntitlementId); public abstract void updateQueryEntitlement( QueryEntitlement queryEntitlement) throws EntityExistException; public abstract DecisionEntitlement addDecisionEntitlement( DecisionEntitlement decisionEntitlement) throws EntityExistException; public abstract void updateDecisionEntitlement( DecisionEntitlement decisionEntitlement) throws EntityExistException; public abstract void deleteDecisionEntitlement(int decisionEntitlementId); public void deleteCascadeEntitlementByUserCategory(int userCategoryId); public void deleteCascadeEntitlementByBusinessData(int businessDataId); public void deleteCascadeEntitlementByQuery(int queryId); public abstract DecisionEntitlementTestResult testDecisionEntitlement( Locale locale, int privilegeId, List decisionEntitlements, User user, Map context); public abstract QueryEntitlementTestResult testQueryEntitlement(Locale locale, int privilegeId, List queryEntitlements, User user, Map context, int first, int max); public abstract Query getQuery(int privilegeId, User user, Map context); }