package org.quickbundle.orgauth.cache;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.quickbundle.base.beans.factory.RmBeanFactory;
import org.quickbundle.orgauth.rmauthorize.service.IRmAuthorizeService;
import org.quickbundle.orgauth.rmauthorize.util.IRmAuthorizeConstants;
import org.quickbundle.orgauth.rmauthorize.vo.RmAuthorizeVo;
import org.quickbundle.project.cache.RmAbstractCache;
import org.quickbundle.tools.support.log.RmLogHelper;
public class RmAuthorizeCache extends RmAbstractCache {
/**
* 存放权限规则的Map,key是bs_keyword
*/
private Map<String, RmAuthorizeVo> mAuthorizeByBs_keyword;
/**
* 存放权限规则的Map,key是id
*/
private Map<String, RmAuthorizeVo> mAuthorizeById;
/**
* 功能: 获取权限调用规则
*
* @param bs_keyword
* @return
*/
protected RmAuthorizeVo getAuthorizeInnerByBs_keyword(String bs_keyword) {
init();
return mAuthorizeByBs_keyword.get(bs_keyword);
}
protected RmAuthorizeVo getAuthorizeInnerById(String id) {
init();
return mAuthorizeById.get(id);
}
private void init() {
if(!isInit) {
synchronized (RmAuthorizeCache.class) {
if(!isInit) {
mAuthorizeByBs_keyword = new HashMap<String, RmAuthorizeVo>();
mAuthorizeById = new HashMap<String, RmAuthorizeVo>();
IRmAuthorizeService authorizeService = (IRmAuthorizeService)RmBeanFactory.getBean(IRmAuthorizeConstants.SERVICE_KEY);
List<RmAuthorizeVo> lAuthorize = authorizeService.queryByCondition(null, null, -1, -1, true);
for (RmAuthorizeVo vo : lAuthorize) {
mAuthorizeByBs_keyword.put(vo.getBs_keyword(),vo);
mAuthorizeById.put(vo.getId(),vo);
}
RmLogHelper.getLogger(RmAuthorizeCache.class).info("init ok, mAuthorize.size()=" + mAuthorizeByBs_keyword.size());
isInit = true;
}
}
}
}
/**
* 全局单例
*/
private static RmAuthorizeCache singleton = new RmAuthorizeCache();
public static RmAuthorizeCache getSingleton() {
return singleton;
}
/**
* 获取权限调用规则
*
* @param bs_keyword
* @return
*/
public static RmAuthorizeVo getAuthorizeByBs_keyword(String bs_keyword) {
return getSingleton().getAuthorizeInnerByBs_keyword(bs_keyword);
}
/**
* 获取权限调用规则
*
* @param id
* @return
*/
public static RmAuthorizeVo getAuthorizeById(String id) {
return getSingleton().getAuthorizeInnerById(id);
}
/* *//**
* 功能: 获取访问类型字符串
*
* @param bs_keyword
* @param access_type
* @return
*//*
public static String[] getAccessTypeName(String bs_keyword, String access_type) {
String[] aAccessTypeName = new String[access_type.length()];
List lAccessTypeRule = getAuthorizeType(bs_keyword).getLAccessTypeRule();
for (int i = 0; i < aAccessTypeName.length; i++) {
if("1".equals(access_type.substring(i, i + 1))) {
aAccessTypeName[i] = ((RmAccessTypeRuleVo)lAccessTypeRule.get(i)).getName();
}
}
return aAccessTypeName;
}
public static Map getAccessTypeMap(String bs_keyword) {
Map m = new RmSequenceMap();
List lAccessTypeRule = getAuthorizeType(bs_keyword).getLAccessTypeRule();
int index = 0;
for (Iterator iter = lAccessTypeRule.iterator(); iter.hasNext();) {
RmAccessTypeRuleVo ruleVo = (RmAccessTypeRuleVo) iter.next();
m.put(ruleVo.getAccess_position(), ruleVo.getName());
}
return m;
}
*//**
* 功能:
*
* @param bs_keyword
* @param aParty_id
* @return
*//*
private static List getlAuthorizeResource(String bs_keyword, String[] aParty_id) {
List lAbstractResource = new ArrayList();
IRmResourceService rmResourceService = (IRmResourceService)RmBeanFactory.getBean(IRmResourceConstants.BS_KEY);
lAbstractResource.addAll(rmResourceService.queryByCondition("AUTHORIZE_TYPE_ID='" + RmAuthorizeCache.getAuthorizeType(bs_keyword).getId() + "' AND DEFAULT_ACCESS='1'", null));
IRmAuthorizeService rmAuthorizeService = (IRmAuthorizeService)RmBeanFactory.getBean(IRmAuthorizeConstants.BS_KEY);
lAbstractResource.addAll(rmAuthorizeService.queryByCondition("PARTY_ID IN(" + RmStringHelper.parseToSQLStringComma(aParty_id) + ") AND RESOURCE_ID IN(SELECT ID FROM RM_RESOURCE WHERE AUTHORIZE_TYPE_ID=" + RmAuthorizeCache.getAuthorizeType(bs_keyword).getId() + ")", null));
return lAbstractResource;
}
*//**
* 功能:
*
* @param bs_keyword
* @param aParty_id
* @return
*//*
public static Map getmAuthorizeResource(String bs_keyword, String[] aParty_id) {
Map mAuthorizeAccessType = new TreeMap();
List lAbstractResource = getlAuthorizeResource(bs_keyword, aParty_id);
for(Iterator itLAbstractResource = lAbstractResource.iterator(); itLAbstractResource.hasNext(); ) {
RmAbstractResourceVo abstractResourceVo = (RmAbstractResourceVo) itLAbstractResource.next();
if(mAuthorizeAccessType.get(abstractResourceVo.getOld_resource_id()) != null) {
String tempAccess_type = mAuthorizeAccessType.get(abstractResourceVo.getOld_resource_id()).toString();
abstractResourceVo.setAccess_type(RmStringHelper.getOrOperator( abstractResourceVo.getAccess_type(), tempAccess_type));
}
mAuthorizeAccessType.put(abstractResourceVo.getOld_resource_id(), abstractResourceVo.getAccess_type());
}
return mAuthorizeAccessType;
}
public static Map getmAuthorizeResourceForVo(String bs_keyword, String[] aParty_id) {
Map mAuthorizeAccessType = new TreeMap();
List lAbstractResource = getlAuthorizeResource(bs_keyword, aParty_id);
for(Iterator itLAbstractResource = lAbstractResource.iterator(); itLAbstractResource.hasNext(); ) {
RmAbstractResourceVo abstractResourceVo = (RmAbstractResourceVo) itLAbstractResource.next();
if(mAuthorizeAccessType.get(abstractResourceVo.getOld_resource_id()) != null) {
String tempAccess_type = mAuthorizeAccessType.get(abstractResourceVo.getOld_resource_id()).toString();
abstractResourceVo.setAccess_type(RmStringHelper.getOrOperator( abstractResourceVo.getAccess_type(), tempAccess_type));
}
mAuthorizeAccessType.put(abstractResourceVo.getOld_resource_id(), abstractResourceVo);
}
return mAuthorizeAccessType;
}*/
}