⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryinfo.java

📁 国外的一套开源CRM
💻 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.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
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.DynamicViewEntity;
import org.ofbiz.entity.model.ModelKeyMap;
import org.ofbiz.entity.model.ModelViewEntity.ModelMemberEntity;
import org.ofbiz.entity.util.EntityFindOptions;
import org.ofbiz.entity.util.EntityListIterator;

/**
 * @author Steve Fowler
 *	
 *
 *
 */
public class QueryInfo
{
	protected String primaryEntityName;
	protected Map secondaryEntityNames = new HashMap();
	protected Map secondaryAttributes = new HashMap();
	protected DynamicViewEntity dve = null;
	protected List entityConditions = new ArrayList();
	protected List orderBy = null;
	protected GenericDelegator delegator;
	protected List selectFields = null;
	protected String saveResultListId = "";
	
	public QueryInfo( GenericDelegator delegatorIn, String primaryEntity )
	{
		primaryEntityName = primaryEntity;
		delegator = delegatorIn;
	}
	
	public void addCondition( EntityCondition newCondition )
	{
		entityConditions.add( newCondition );
	}

	public void addJoin( String firstEntity, String secondEntity, Boolean relOptional, String firstField, String secondField )
	{
		addJoin(firstEntity, firstEntity, secondEntity, secondEntity, relOptional, firstField, secondField);
	}

	public void addJoin( String firstEntity, String secondEntity, String secondEntityAlias, Boolean relOptional, String firstField, String secondField )
	{
		addJoin(firstEntity, firstEntity, secondEntity, secondEntityAlias, relOptional, firstField, secondField);
	}
	public void addJoin( String firstEntity, String firstEntityAlias, String secondEntity, String secondEntityAlias, Boolean relOptional, String firstField, String secondField )
	{
		addJoin(firstEntity, firstEntity, secondEntity, secondEntityAlias, relOptional, firstField, firstField, secondField, secondField);
	}

	public void addJoin( String firstEntity, String firstEntityAlias, String secondEntity, String secondEntityAlias, Boolean relOptional, String firstField, String firstFieldAlias, String secondField, String secondFieldAlias )
	{
		checkEntity( firstEntity, firstEntityAlias );
		checkEntity( secondEntity, secondEntityAlias );
		
		if ( !firstField.equals(firstFieldAlias))
			addAlias(firstEntityAlias, firstField, firstFieldAlias);
			
		if ( !secondField.equals(secondFieldAlias))
			addAlias(secondEntityAlias, secondField, secondFieldAlias );
						
		dve.addViewLink(firstEntityAlias, secondEntityAlias, relOptional, UtilMisc.toList(new ModelKeyMap(firstFieldAlias, secondFieldAlias)));
	}

	public void addJoin( String firstEntity, String secondEntity, Boolean relOptional, List keyMaps)
	{
		addJoin( firstEntity, firstEntity, secondEntity, secondEntity, relOptional, keyMaps);
	}
	
	public void addJoin( String firstEntity, String firstEntityAlias, String secondEntity, String secondEntityAlias, Boolean relOptional, List keyMaps )
	{
		checkEntity( firstEntity, firstEntityAlias );
		checkEntity( secondEntity, secondEntityAlias );
		dve.addViewLink(firstEntityAlias, secondEntityAlias, relOptional, keyMaps);
	}
	
	
	
	public void checkEntity( String entityName, String entityAlias )
	{
		if ( !entityName.equals(primaryEntityName) && !secondaryEntityNames.containsKey(entityAlias) )
		{
			if ( dve == null )
			{
				dve = EntityHelper.createDynamicViewEntity( delegator, primaryEntityName );
			}
			dve.addMemberEntity( entityAlias, entityName);
			secondaryEntityNames.put( entityAlias, entityName );
		}
	}
	
	public void checkAttribute( String entityAlias, String attributeName)
	{
		checkAttribute( entityAlias, attributeName, attributeName);
	}
	
	public void checkAttribute( String entityAlias, String attributeName, String attributeAlias )
		{
		checkEntity( entityAlias, entityAlias );
		if ( !entityAlias.equals(primaryEntityName ) && !secondaryAttributes.containsKey(entityAlias + "." + attributeAlias))
		{
			dve.addAlias(entityAlias, attributeAlias, attributeName, null, null, null, null);

			secondaryAttributes.put(entityAlias + "." + attributeAlias, attributeName);
		}
	}
	
		public void addCondition( String entityAlias, String attributeAlias, EntityComparisonOperator operator, Object value )
	{
		addCondition(entityAlias, attributeAlias, attributeAlias, operator, value);
	}

	public void addCondition( String entityAlias, String attributeAlias, String attributeName, EntityComparisonOperator operator, Object value )
	{
		checkAttribute( entityAlias, attributeName, attributeAlias);
		entityConditions.add( new EntityExpr( attributeAlias, operator, value));
	}

	public void addAlias( String entityAlias, String attributeName, String aliasName)
	{
		checkEntity( entityAlias, entityAlias );
		dve.addAlias(entityAlias, aliasName, attributeName, null, null, null, null);
		secondaryAttributes.put(entityAlias + "." + aliasName, attributeName);	
	}
	
	public List executeQuery()
	throws GenericEntityException
	{
		if ( isDynamic() )
		{
			return EntityHelper.findByCondition( delegator, dve, new EntityConditionList( entityConditions, EntityOperator.AND), orderBy);
		}
		else
		{
			return delegator.findByCondition( primaryEntityName, new EntityConditionList (entityConditions, EntityOperator.AND), null, orderBy);
		}
	}
	public EntityListIterator getQueryIterator()
	throws GenericEntityException
	{
		if ( isDynamic() )
		{
			return EntityHelper.findIteratorByCondition( delegator, dve, new EntityConditionList( entityConditions, EntityOperator.AND), selectFields, orderBy);
		}
		else
		{
			return delegator.findListIteratorByCondition( primaryEntityName, new EntityConditionList (entityConditions, EntityOperator.AND), null, selectFields, orderBy, 
														  new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE , EntityFindOptions.CONCUR_READ_ONLY, true));
		}
	}


	public EntityConditionList getEntityConditions()
	{
		return new EntityConditionList( entityConditions, EntityOperator.AND);
	}
	
	public boolean isDynamic()
	{
		return ( dve != null );
	}
	
	public DynamicViewEntity getDynamicViewEntity()
	{
		return dve;
	}
	
	public String getPrimaryEntity()
	{
		return primaryEntityName;
	}
	
	public GenericDelegator getDelegator()
	{
		return delegator;
	}
	
	public void setOrderBy( List orderBy_)
	{
		orderBy = orderBy_;
	}
	
	public List getOrderBy()
	{
		return orderBy;
	}

	public List getEntities()
	{
		if ( dve == null)
			return UtilMisc.toList(primaryEntityName);
			
		ArrayList entityList = new ArrayList();
		Iterator listIter = dve.getModelMemberEntitiesEntryIter();
		while ( listIter.hasNext())
		{
			Map.Entry entry = (Map.Entry) listIter.next();
			
			ModelMemberEntity modelMemberEntity = (ModelMemberEntity) entry.getValue();
			entityList.add(modelMemberEntity.getEntityName());
		}
		
		return entityList;
	}

	public List getSelectFields()
	{
		return selectFields;
	}
	
	public void setSelectFields( List fieldsToSelect)
	{
		selectFields = fieldsToSelect;
	}
	
	public void addSelectFields( String fieldName )
	{
		if ( selectFields == null )
			selectFields = new ArrayList();
		
		selectFields.add(fieldName);
	}

	   /**
     * @return Returns the saveResultListId.
     */
    public String getSaveResultListId() {
        return saveResultListId;
    }
    /**
     * @param saveResultListName The saveResultListId to set.
     */
    public void setSaveResultListId(String saveResultListId) {
        this.saveResultListId = saveResultListId;
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -