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

📄 partyidentifierselectep.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.party;

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

import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
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 com.sourcetap.sfa.event.GenericEventProcessor;
import com.sourcetap.sfa.ui.UIScreenSectionEntity;
import com.sourcetap.sfa.util.QueryInfo;
import com.sourcetap.sfa.util.UserInfo;


/**
 * DOCUMENT ME!
 *
 */
public class PartyIdentifierSelectEP extends GenericEventProcessor {
    private static final boolean DEBUG = false;
    
	/**
	  * replace the CodeValue and CodeId Maps in the removerKeyMapList and createKeyMapList  with identifierId
	  *
	  * @param userInfo 
	  * @param delegator 
	  * @param primaryModelEntity 
	  * @param removeKeyMapList 
	  * @param createKeyMapList 
	  *
	  * @return 
	  */
	protected int preUpdateSelect(UserInfo userInfo,
	 	GenericDelegator delegator, ModelEntity primaryModelEntity,
	 	ArrayList removeKeyMapList, ArrayList createKeyMapList) 
	{
		replaceCodeTableMap( removeKeyMapList );
		replaceCodeTableMap( createKeyMapList );
		return STATUS_CONTINUE; 
	}
	
	private void replaceCodeTableMap( List keyMapList )
	{
		if ( keyMapList == null )
			return;
		Iterator iter = keyMapList.iterator();
		while (iter.hasNext() )
		{
			Map keyMap = (Map) iter.next();
			
			String codeTypeId = (String) keyMap.get("codeTypeId");
			String codeId = (String) keyMap.get("codeId");
			
			if ( (codeTypeId != null) && ( codeTypeId.length() > 0))
			{
				keyMap.remove("codeTypeId");
				keyMap.remove("codeId");
				keyMap.put("identifierId", codeId);
			}
			
		}
	}
	
	/**
	 * Add entity clauses for one related entity.  This will join related tables to the query
	 * during a retrieve so query values can be entered that are in related entities.
	 * <P>
	 * This version overrides the ancestor to handle the AccountIdentifier to Code relationship, which
	 * has no relation defined.
	 *
	 * @param delegator Reference to the OFBIZ delegator being used to connect to the data base
	 * @param relationTitle Relation title
	 * @param relatedEntityName Name of related entity
	 * @param primaryEntityName Name of the primary entity
	 * @param primaryME ModelEntity object for the primary entity
	 * @param queryInfo critera to be used in search.
	 */
	public void addOneRelationClause(GenericDelegator delegator,
		String relationTitle, String relatedAndFields, String relatedEntityName,
		String primaryEntityName, ModelEntity primaryME, boolean isOuterJoin, QueryInfo queryInfo)
		throws GenericEntityException {
			
		if (relatedEntityName.equals("Code")) {
			// Adding entity clauses for the Address entity.  Need to build it manually.
			// Join the address owner ID field
            
			queryInfo.addJoin("PartyIdentifier", "Code",  Boolean.valueOf(isOuterJoin), "identifierId", "codeId");
			
			if ( isOuterJoin )
			{
				queryInfo.addAlias("Code", "codeTypeId", "codeTypeId");
				queryInfo.addAlias("Code", "codeId", "codeId");
				queryInfo.addCondition( new EntityConditionList( UtilMisc.toList( new EntityExpr("codeTypeId", EntityOperator.EQUALS, "IDENTIFIER_TYPE"),
											new EntityExpr("codeId", EntityOperator.EQUALS, null)), EntityOperator.OR));
			}
			else
				queryInfo.addCondition("Code", "codeTypeId", EntityOperator.EQUALS, "IDENTIFIER_TYPE");

		} else {
			// Use the parent script for all other related entities.
			super.addOneRelationClause(delegator, relationTitle, relatedAndFields,
				relatedEntityName, primaryEntityName, primaryME, isOuterJoin, queryInfo);
		}
	}

	/**
	 * DOCUMENT ME!
	 *
	 * @param mainGV 
	 * @param relatedSearchClause 
	 * @param outGVV 
	 * @param userInfo 
	 * @param delegator 
	 *
	 * @return 
	 */
	protected GenericValue retrieveOneRelatedGV(GenericValue mainGV,
		UIScreenSectionEntity relatedSearchClause, Vector outGVV, UserInfo userInfo,
		GenericDelegator delegator) {

		String relationRelEntityName = (String) relatedSearchClause.getEntityName();

		if (relationRelEntityName.equals("Code")) {
			// Special processing for the Code record since it can't be retrieved with a relationship
			// defined in the sfa-config.xml file.

			// Get account ID from the account record.
			String identifierId = mainGV.getString("identifierId");

			GenericValue codeGV = null;

			try {
				codeGV = delegator.findByPrimaryKey("Code", UtilMisc.toMap("codeTypeId", "IDENTIFIER_TYPE", "codeId", identifierId));

				return codeGV;
			} catch (GenericEntityException e) {
				Debug.logError(
					"[retrieveOneRelatedGV] An error occurred while searching for " +
					"the Identifier Code record for the partyIdentifier: " +
					e.getLocalizedMessage(), module);

				return codeGV;
			}
		} else {
			// Retrieve all other related entities the regular way.
			return super.retrieveOneRelatedGV(mainGV, relatedSearchClause,
				outGVV, userInfo, delegator);
		}
	}


}

⌨️ 快捷键说明

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