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

📄 genericeventprocessor.java

📁 国外的一套开源CRM
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    return mainGVL;
                }
            } else {
                if (fields != null) {
                    Iterator entries = fields.entrySet().iterator();
                    while (entries.hasNext()) {
						Map.Entry anEntry = (Map.Entry) entries.next();
						queryInfo.addCondition( mainEntityName, (String) anEntry.getKey(), EntityOperator.EQUALS, anEntry.getValue());
                    }
                }
            }

            break;
            }

		Debug.logVerbose("calling  (findIteratorByCondition)", module);
		Debug.logVerbose("mainEntityName: " + mainEntityName, module);

            if (TIMER) {
                timer.timerString(3,
				"[GenericEventProcessor.retrieveMainEntity] Start findIteratorByCondition)");
            }

            if (securityInfo == null) {
                try {
				queryInfo.setOrderBy(orderBy);
				eli = queryInfo.getQueryIterator();
                } catch (GenericEntityException e) {
                    Debug.logError("An error occurred in the " +
					"GenericDelegator.findByCondition method: " +
                        e.getLocalizedMessage(), module);
                }
            } else {
			try {

				eli = SecurityWrapper.findListIteratorByCondition(mainEntityName,
						queryInfo, orderBy, userInfo, securityInfo,	delegator);
			} catch (GenericEntityException e) {
				Debug.logError("An error occurred in the " +
					"SecurityWrapper.findByCondition method: " +
					e.getLocalizedMessage(), module);
                    }
                }

		if ( eli != null )
		{
                try {
				mainGVL = eli.getPartialList( getRowOffset() + 1, getFetchSize());
				
				hasMoreRows = false;
				
				// check next value since we close the cursor anyway.  
				if ( (mainGVL.size() == getFetchSize()) && (eli.next() != null ))
					hasMoreRows = true;
					
		
				// check to see if we need to save the output to a named list.
				if ( ( queryInfo.getSaveResultListId() != null ) && ( queryInfo.getSaveResultListId().length() > 0) )
		        {
				    	eli.beforeFirst();
				    	GenericValue gv = null;
				    	ModelEntity me = delegator.getModelEntity("UiListItem");
				    	ModelEntity primaryME = delegator.getModelEntity(mainEntityName);
				    	
				    	if ( primaryME.getPksSize() != 1)
			    	        throw new IllegalArgumentException("Multi-Field primary Keys not allows in Save Result List");

				    	String keyFieldName = primaryME.getPk(0).getName();
				    	
				    	while ( (gv = (GenericValue) eli.next()) != null )
				    	{
				    	    GenericValue itemGV = new GenericValue(me);
				    	    itemGV.setDelegator(delegator);
				    	    itemGV.set("listItemId", GenericReplicator.getNextSeqId("UiListItem", delegator));
				    	    itemGV.set("listId", queryInfo.getSaveResultListId());
				    	    itemGV.set("entityName", mainEntityName);
				    	    String entityId = gv.getString(keyFieldName);
				    	    itemGV.set("entityId", entityId);
				    	    itemGV.set("status", "new");
				    	    
				    	    delegator.create(itemGV);
				    	}
		        }
				
				eli.close();

                } catch (GenericEntityException e) {
				Debug.logError("An error occurred in the  getPartialList method: " + e.getLocalizedMessage(), module);
                }
            }
            if (TIMER) {
                timer.timerString(3,
				"[GenericEventProcessor.retrieveMainEntity] End findIteratorByCondition");
            }


        return mainGVL;
    }

    /**
     * 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 relationTitle = relatedSearchClause.getRelationTitle();

        String relationRelEntityName = relatedSearchClause.getEntityName();

        Map byAndFields = relatedSearchClause.getDecodedAndFields();

        List relatedOrderBy = (List) relatedSearchClause.getDecodedOrderBy();

        Debug.logVerbose("About to retrieve related entity \"" +
                relationTitle + relationRelEntityName + "\".", module);

        List relatedGVL = null;
        boolean relationFound = false;
        String relationName = relationTitle + relationRelEntityName;

        try {
            relatedGVL = delegator.getRelated(relationName, byAndFields,
                    relatedOrderBy, mainGV);

            Debug.logVerbose("Found relation \"" + relationName +
                    "\" on entity " + mainGV.getEntityName() + ".", module);
            

            relationFound = true;
        } catch (GenericModelException gme1) {
            // The relation was not found on the primary entity. Try the other secondary ones retrieved so far.
            Debug.logVerbose("Did not find relation \"" + relationName +
                    "\" on entity " + relationRelEntityName +
                    ". Looking on secondary entities.", module);

            for (int entityNbr = 1; entityNbr < outGVV.size(); entityNbr++) {
                GenericValue tempGV = (GenericValue) outGVV.get(entityNbr);

                try {
                    relatedGVL = delegator.getRelated(relationName,
                            byAndFields, relatedOrderBy, tempGV);

                    Debug.logVerbose("Found relation \"" + relationName +
                            "\" on entity " + tempGV.getEntityName() + ".", module);

                    relationFound = true;
                    break;
                } catch (GenericModelException gme2) {
                    // Continue looking on the next entity.
                    Debug.logVerbose("Did not find relation \"" +
                            relationName + "\" on entity " +
                            tempGV.getEntityName() + ".", module);
                } catch (GenericEntityException gee2) {
                    Debug.logError("An error occured while looking for " +
                        "entities related to secondary entity " +
                        tempGV.getEntityName() + " using relation " +
                        relationName + ": " + gee2.getLocalizedMessage(), module);
                }
            }
        } catch (GenericEntityException gee1) {
            Debug.logError("An error occured while looking for " +
                "entities related to main entity " + mainGV.getEntityName() +
                " using relation " + relationName + ": " +
                gee1.getLocalizedMessage(), module);
        }

        if (!relationFound) {
        	
        	//see if there is a relation from the related entity back to one of the entities already retrieved
        	//this will only be entered if there is not a corresponding relation in the other direction, as the previous
        	//code would have found that link.  This is necessary for entities in the SFA data model that are related to 
        	//entities in other ofbiz data models, since the other ofbiz data models are not aware of SFA
        	ModelEntity relatedME = delegator.getModelEntity(relationRelEntityName);
        	
			for (int entityNbr = 0; entityNbr < outGVV.size(); entityNbr++) {
				GenericValue tempGV = (GenericValue) outGVV.get(entityNbr);
				ModelRelation relation = relatedME.getRelation( tempGV.getEntityName());
				if ( relation != null )
				{
					Map fields = byAndFields == null ? new HashMap() : new HashMap(byAndFields);
					for (int i = 0; i < relation.getKeyMapsSize(); i++) {
						ModelKeyMap keyMap = relation.getKeyMap(i);
						fields.put(keyMap.getFieldName(), tempGV.get(keyMap.getRelFieldName()));
					}

					try {
						relatedGVL = delegator.findByAnd(relationRelEntityName, fields, relatedOrderBy);
						relationFound = true;
						break;
					} catch (GenericEntityException gee3) {
						Debug.logError("An error occured while looking for " +
							"entities related to secondary entity " +
							tempGV.getEntityName() + " using relation " +
							relationName + ": " + gee3.getLocalizedMessage(), module);
					}

				}
			}      	     
        }
        
		if ( !relationFound) {
			Debug.logError("Error retrieving entity \"" +
				relationRelEntityName + "\". Relation \"" + relationName +
				"\" was not found on any entity in this screen section.", module);
		}


        // Get the first related entity so it can be appended to the related generic value vector.
        GenericValue relatedGV = null;
        if ( relatedGVL != null )
		{
	        Iterator relatedGVI = relatedGVL.iterator();

    	    if (relatedGVI.hasNext()) {
            // At least one related entity was found.  Use the first one.
        	    relatedGV = (GenericValue) relatedGVI.next();
    	    }
		}
        if ( relatedGV == null ){
            // No related entity was found.  Create an empty one.
            ModelEntity relatedME = delegator.getModelEntity(relationRelEntityName);
            relatedGV = new GenericValue(relatedME);
            relatedGV.setDelegator(delegator);
        }

        return relatedGV;
    }

    //-------------------------------------------------------------------------
    // CREATE - Creates a blank set of entities to prepare for an INSERT.
    //-------------------------------------------------------------------------
    public int processCreate(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix)
        throws GenericEntityException {

        int status = STATUS_CONTINUE;

        // Trigger the pre-create event.
        status = this.preCreate(userInfo, entityNameList, delegator, dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the create event.
        status = this.create(userInfo, entityNameList, delegator, dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the post-create event.
        status = this.postCreate(userInfo, entityNameList, delegator, dataMatrix);

        return status;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param entityNameList 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     */
    protected int preCreate(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix) {

        return STATUS_CONTINUE;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param entityNameList 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     *
     * @throws GenericEntityException 
     */
    public int create(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix)
        throws GenericEntityException {

        // Create an empty entity so the section will show up.
        dataMatrix.getCurrentBuffer().addEmptyRow();

        return STATUS_CONTINUE;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param entityNameList 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     */
    protected int postCreate(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix) {

        return STATUS_CONTINUE;
    }

    //-------------------------------------------------------------------------
    // SHOW_COPY - Preparing to show a copy of an existing record so it can be saved as a new record.
    //-------------------------------------------------------------------------
    public int processShowCopy(UserInfo userInfo, GenericDelegator delegator,
        DataMatrix dataMatrix) throws GenericEntityException {

        int status = STATUS_CONTINUE;

        // Trigger the pre-ShowCopy event.
        status = this.preShowCopy(userInfo, delegator, dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the showCopy event.
        status = this.showCopy(userInfo, delegator, dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the post-ShowCopy event.
        status = this.postShowCopy(userInfo, delegator, dataMatrix);

        return status;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     */
    protected int preShowCopy(UserInfo userInfo, GenericDelegator delegator,
        DataMatrix dataMatrix) {

        return STATUS_CONTINUE;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     *
     * @throws GenericEntityException 
     */
    public int showCopy(UserInfo userInfo, GenericDelegator delegator,
        DataMatrix dataMatrix) throws GenericEntityException {

        return STATUS_CONTINUE;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     */
    protected int postShowCopy(UserInfo userInfo, GenericDelegator delegator,
        DataMatrix dataMatrix) {

        return STATUS_CONTINUE;
    }

    //-------------------------------------------------------------------------
    // SHOWQUERY - Creates a blank set of entities to prepare for query mode.
    //-------------------------------------------------------------------------
    public int processShowQuery(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix)
        throws GenericEntityException {

        int status = STATUS_CONTINUE;

        // Trigger the pre-showQuery event.
        status = this.preShowQuery(userInfo, entityNameList, delegator,
                dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the showQuery event.
        status = this.showQuery(userInfo, entityNameList, delegator, dataMatrix);

        if (status != STATUS_CONTINUE) {
            return status;
        }

        // Trigger the post-showQuery event.
        status = this.postShowQuery(userInfo, entityNameList, delegator,
                dataMatrix);

        return status;
    }

    /**
     * DOCUMENT ME!
     *
     * @param userInfo 
     * @param entityNameList 
     * @param delegator 
     * @param dataMatrix 
     *
     * @return 
     */
    protected int preShowQuery(UserInfo userInfo, List entityNameList,
        GenericDelegator delegator, DataMatrix dataMatrix) {

        return STATUS_CONTINUE;
    }

    /**
     * DOCUMENT ME!
     *

⌨️ 快捷键说明

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