Package com.sourcetap.sfa.util

Source Code of com.sourcetap.sfa.util.QueryInfo

/*
*
* 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;
    }


}
TOP

Related Classes of com.sourcetap.sfa.util.QueryInfo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.