📄 securitywrapper.java
字号:
/*
*
* Copyright (c) 2004 SourceTap - www.sourcetap.com
*
* The contents of this file are subject to the SourceTap Public License
* ("License"); You may not use this file except in compliance with the
* License. You may obtain a copy of the License at http://www.sourcetap.com/license.htm
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
*/
package com.sourcetap.sfa.security;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.core.entity.EntityAttribute;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityComparisonOperator;
import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.entity.condition.EntityConditionList;
import org.ofbiz.entity.condition.EntityExpr;
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.model.ModelEntity;
import org.ofbiz.entity.model.ModelField;
import org.ofbiz.entity.util.EntityListIterator;
import com.sourcetap.sfa.event.DataMatrix;
import com.sourcetap.sfa.replication.GenericReplicator;
import com.sourcetap.sfa.util.Preference;
import com.sourcetap.sfa.util.QueryInfo;
import com.sourcetap.sfa.util.UserInfo;
/**
* DOCUMENT ME!
*
*/
public class SecurityWrapper {
private static final String ROLE = "role";
private static final String TEAM = "team";
public static final String module = SecurityWrapper.class.getName();
/**
* DOCUMENT ME!
*
* @param entity
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findAll(String entity, List orderBy, UserInfo userInfo,
SecurityLinkInfo securityInfo, GenericDelegator delegator)
throws GenericEntityException {
return findByAnd(entity, new ArrayList(), orderBy, userInfo,
securityInfo, delegator);
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByAnd(String entity, List entityExpressions,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
return findByAnd( entity, entityExpressions, orderBy, userInfo, securityInfo, delegator, "TEAM");
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByAndRoleOnly(String entity, List entityExpressions,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
return findByAnd( entity, entityExpressions, orderBy, userInfo, securityInfo, delegator, "ROLE");
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByAnd(String entity, List entityExpressions,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator, String securityType) throws GenericEntityException {
HashMap equalsMap = new HashMap();
EntityExpr entityExpr = null;
QueryInfo queryInfo = new QueryInfo( delegator, entity);
//convert existing expressions into AND clauses.
for (int i = 0; i < entityExpressions.size(); i++) {
entityExpr = (EntityExpr) entityExpressions.get(i);
Object lhs = (Object) entityExpr.getLhs();
Object rhs = (Object) entityExpr.getRhs();
EntityComparisonOperator op = (EntityComparisonOperator) entityExpr.getOperator();
if (lhs instanceof EntityAttribute &&
rhs instanceof EntityAttribute) {
lhs = (EntityAttribute) lhs;
rhs = (EntityAttribute) rhs;
String firstEntity = ((EntityAttribute) lhs).getEntity();
String secondEntity = ((EntityAttribute) rhs).getEntity();
if ( !firstEntity.equals(secondEntity) )
{
if ( !op.equals( EntityOperator.EQUALS ))
throw new IllegalArgumentException("Join operator must be EQUALS");
queryInfo.addJoin(firstEntity, secondEntity, Boolean.FALSE, ((EntityAttribute) lhs).getField(),
((EntityAttribute) rhs).getField());
}
else
{
queryInfo.addCondition( firstEntity, ((EntityAttribute) lhs).getField(), op, ((EntityAttribute) rhs).getField());
}
} else {
if (lhs instanceof EntityAttribute) {
queryInfo.addCondition( ((EntityAttribute) lhs).getEntity(), ((EntityAttribute) lhs).getField(), op, rhs);
} else {
queryInfo.addCondition( entity, (String) lhs, op, rhs);
}
}
}
buildSecurityInfo(queryInfo, userInfo, securityInfo, entity, delegator, securityType);
queryInfo.setOrderBy( orderBy );
return queryInfo.executeQuery();
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByClause(String entity, List entityExpressions,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator, boolean old_not_used_anymore) throws GenericEntityException {
Debug.logVerbose("[findByClause] userInfo: " + userInfo.toString(), module);
QueryInfo queryInfo = new QueryInfo( delegator, entity);
ArrayList newExpressions = new ArrayList(entityExpressions);
HashMap equalsMap = new HashMap();
buildSecurityInfo(queryInfo, userInfo, securityInfo, entity, delegator, "TEAM");
throw new IllegalArgumentException("findByClause not supported");
// return delegator.findByClause(entity, newExpressions, equalsMap, orderBy);
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByClauseRoleOnly(String entity,
List entityExpressions, List orderBy, UserInfo userInfo,
SecurityLinkInfo securityInfo, GenericDelegator delegator, boolean old_not_used_anymore)
throws GenericEntityException {
ArrayList newExpressions = new ArrayList(entityExpressions);
HashMap equalsMap = new HashMap();
throw new IllegalArgumentException("findByClauseRoleOnly not supported");
// newExpressions = buildSecurityInfo(newExpressions, userInfo,
// securityInfo, entity, delegator, "ROLE");
// return delegator.findByClause(entity, newExpressions, equalsMap, orderBy);
}
public static List findByCondition(String entity, QueryInfo queryInfo,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
Debug.logVerbose("[findByClause] userInfo: " + userInfo.toString(), module);
buildSecurityInfo(queryInfo, userInfo, securityInfo, entity, delegator, "TEAM");
queryInfo.setOrderBy( orderBy );
return queryInfo.executeQuery();
}
public static List findByCondition(String entity, EntityCondition condition,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
Debug.logVerbose("[findByCondition] userInfo: " + userInfo.toString(), module);
QueryInfo queryInfo = new QueryInfo( delegator, entity );
queryInfo.addCondition( condition );
return findByCondition( entity, queryInfo, orderBy, userInfo, securityInfo, delegator );
}
public static EntityListIterator findListIteratorByCondition(String entity, EntityCondition condition,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
Debug.logVerbose("[findListIteratorByCondition] userInfo: " + userInfo.toString(), module);
QueryInfo queryInfo = new QueryInfo( delegator, entity );
queryInfo.addCondition( condition );
return findListIteratorByCondition( entity, queryInfo, orderBy, userInfo, securityInfo, delegator );
}
public static EntityListIterator findListIteratorByCondition(String entity, QueryInfo queryInfo,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException {
Debug.logVerbose("[findByClause] userInfo: " + userInfo.toString(), module);
buildSecurityInfo(queryInfo, userInfo, securityInfo, entity, delegator, "TEAM");
queryInfo.setOrderBy( orderBy );
return queryInfo.getQueryIterator();
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByLike(String entity, List entityExpressions,
List orderBy, UserInfo userInfo, SecurityLinkInfo securityInfo,
GenericDelegator delegator) throws GenericEntityException
{
return findByLike( entity, entityExpressions, orderBy, userInfo, securityInfo, delegator, "TEAM");
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
* @param userInfo
* @param securityInfo
* @param delegator
*
* @return
*
* @throws GenericEntityException
*/
public static List findByLikeRoleOnly(String entity,
List entityExpressions, List orderBy, UserInfo userInfo,
SecurityLinkInfo securityInfo, GenericDelegator delegator)
throws GenericEntityException
{
return findByLike( entity, entityExpressions, orderBy, userInfo, securityInfo, delegator, "ROLE");
}
/**
* DOCUMENT ME!
*
* @param entity
* @param entityExpressions
* @param orderBy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -