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

📄 genericwebeventprocessor.java

📁 国外的一套开源CRM
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            uiWebScreenSection);

        return displayHtml;
    }

    //-------------------------------------------------------------------------
    // RETRIEVE - Retrieves an entity and associated entities from the data base.
    //-------------------------------------------------------------------------
    protected int processRetrieve(UserInfo userInfo,
        UIWebScreenSection uiWebScreenSection, int retrieveMethod,
        HttpServletRequest request, HttpServletResponse response,
        GenericDelegator delegator, GenericEventProcessor eventProcessor,
        DataMatrix dataMatrix, StringBuffer queryIdBuffer, String action)
        throws GenericEntityException {
        UtilTimer timer = new UtilTimer();

        if (TIMER) {
            timer.timerString(1,
                "[GenericWebEventProcessor.processRetrieve] Start");
        }

        int status = STATUS_CONTINUE;

        String queryId = queryIdBuffer.toString();

        // Get info about the screen.
        String screenName = uiWebScreenSection.getUiScreen().getScreenName();

        // Get info about the screen section.
        String sectionId = uiWebScreenSection.getSectionId();
        String sectionName = uiWebScreenSection.getSectionName();
        int layoutTypeId = uiWebScreenSection.getLayoutTypeId();

        String primaryEntityName = uiWebScreenSection.getUiScreenSectionEntity(0)
                                                     .getUiEntity()
                                                     .getEntityName();

        Debug.logVerbose("Primary entity name: " + primaryEntityName, module);

        ModelEntity primaryME = uiWebScreenSection.getUiScreenSectionEntity(0)
                                                  .getUiEntity().getModelEntity();
        List primaryPkFieldNames = uiWebScreenSection.getUiScreenSectionEntity(0)
                                                     .getUiEntity()
                                                     .getPrimaryKeyFieldNames();

        // Specify how the primary entity will be retrieved.
        HashMap fields = new HashMap();
        ArrayList orderBy = new ArrayList();
        QueryInfo queryInfo = new QueryInfo(delegator, primaryEntityName);
        Enumeration params = null;
        String searchAttribValue = "";
        String searchEntityName = "";
        String searchAttribName = "";
        String queryName = "";
        String listName = "";
        EntityComparisonOperator entityOperator = null;
        List relatedSearchClauses = new LinkedList();
        List selectFields = new ArrayList();
        
        // Note that we only care about primary entity fields in the select at the moment.
        // TODO:  change the queries so that all related data is retrieved as part of the main retrieve
        //        which it is, but the original code was written before dynamicViewEntities were added
		int selectFieldListSize = uiWebScreenSection.getUiFieldList().size();
		for (int fieldNbr = 0; fieldNbr < selectFieldListSize; fieldNbr++) {	
			UIFieldInfo fieldInfo = uiWebScreenSection.getUiField(fieldNbr);
			String fieldName = fieldInfo.getUiAttribute().getAttributeName();
			String entityName = fieldInfo.getUiAttribute().getUiEntity().getEntityName();
			if ( entityName.equals(primaryEntityName) )
				selectFields.add(fieldName);

/*			if ( fieldInfo.getIsVisible() )
			{
				String fieldName = fieldInfo.getUiAttribute().getAttributeName();
				String entityName = fieldInfo.getUiAttribute().getUiEntity().getEntityName();
				String aliasName = fieldName;
				if ( ! entityName.equals(primaryEntityName))
					aliasName = entityName + "." + fieldName;
				selectFields.add(aliasName);
			}
*/
		}
		queryInfo.setSelectFields(selectFields);

        if (request.getParameter("queryName") != null) {
            queryName = request.getParameter("queryName");
        }

        if (request.getParameter("listName") != null) {
            listName = request.getParameter("listName");
            if ( queryName.length() < 1)
                queryName = listName;
        }

        
        //		HashMap querySaveMap = new HashMap();
        UIQuery uiQuery = null;


		// Specify how associated entities will be retrieved.
		Iterator uiScreenSectionEntityI = uiWebScreenSection.getUiScreenSectionEntityList()
															.iterator();
		uiScreenSectionEntityI.next(); // Pass up the primary entity.

		while (uiScreenSectionEntityI.hasNext()) {
			UIScreenSectionEntity uiScreenSectionEntity = (UIScreenSectionEntity) uiScreenSectionEntityI.next();
			
			relatedSearchClauses.add(uiScreenSectionEntity);
		}

		uiScreenSectionEntityI = null; // Reset the iterator.




        switch (retrieveMethod) {
        case GenericEventProcessor.RETRIEVE_METHOD_ALL:

            // Find all entities of this type.
            // Don't need to populate the fields map.
            break;

        case GenericEventProcessor.RETRIEVE_METHOD_AND:

            // Find the main entity(ies) by building a WHERE clause using "=" and AND.
            throw new GenericEntityException(
                "RETRIEVE_METHOD_AND not implemented yet.");

        case GenericEventProcessor.RETRIEVE_METHOD_CLAUSE:

            if (TIMER) {
                timer.timerString(1,
                    "[GenericWebEventProcessor.processRetrieve] Start RETRIEVE_METHOD_CLAUSE");
            }

			HashMap joinedEntities = new HashMap();
			
			joinedEntities.put(primaryEntityName, "Y");
			
            // Find the main entity(ies) by building a WHERE clause using LIKE and AND, with one or more tables in the FROM clause.
            // First join all secondary screen section entities in the WHERE and FROM clauses in case
            // we are going to use query values from them.
            Iterator relatedClauseI = relatedSearchClauses.iterator();

            while (relatedClauseI.hasNext()) {
                UIScreenSectionEntity uiScreenSectionEntity = (UIScreenSectionEntity) relatedClauseI.next();
                String relationTitle = uiScreenSectionEntity.getRelationTitle();
                String relatedEntityName = uiScreenSectionEntity.getUiEntity().getEntityName();
				boolean isOuterJoin = uiScreenSectionEntity.getIsOuterJoined();
				String relatedAndFields = uiScreenSectionEntity.getRelationByAndFields();

                Debug.logVerbose("Adding relation clauses for " +
                        relationTitle + "/" + relatedEntityName, module);

                eventProcessor.addOneRelationClause(delegator, relationTitle, relatedAndFields,
                    relatedEntityName, primaryEntityName, primaryME, isOuterJoin,
                    queryInfo);
                    
                joinedEntities.put(relatedEntityName, "Y");
            }

            Debug.logVerbose(
                    "queryId at beginning of RETRIEVE_METHOD_CLAUSE section: " +
                    queryId, module);

            if (queryId.equalsIgnoreCase("NONE")) {
                // Don't retrieve any data. The calling link specified to use the last query, but there wasn't one.
                return STATUS_CONTINUE;
            } else if (!queryId.equals("")) {
                // User selected a saved query.  Get it from the data base.
                uiQuery = new UIQuery(queryId, delegator);

                if (!uiQuery.getQueryId().equals("")) {
                    // Query was found.
                    uiQuery.appendEntityClauses(delegator, queryInfo);

                    //						// Store the attribute ID and value in the query save map.
                    //						querySaveMap.put(attributeId, searchAttribValue);
                }

                // add extra clauses from the hidden query parameters in case this is a detail screen
                addUseQueryParameterClauses(uiWebScreenSection, queryInfo,
                    relatedSearchClauses, primaryEntityName, request);
            } else {
                // Brand new query. Process all the parameters coming in through the request object to get the values to search by.
                uiQuery = new UIQuery();

				String queryListMaxRows = request.getParameter("queryListMaxRows");
				// if queryListMaxRows is set, then we are using advanced query mode
				if ( (queryListMaxRows != null ) && ( queryListMaxRows.length() > 0) )
				{
					int maxRows = Integer.valueOf(queryListMaxRows).intValue();
					for ( int i=1; i <= maxRows; i++ )
					{
						String qlFieldInfo = request.getParameter("queryListField" + i);
						if ( ( qlFieldInfo != null ) && ( qlFieldInfo.length() > 0 ) )
						{
							StringTokenizer tokSemi = new StringTokenizer(qlFieldInfo,";");
							String qlFieldName = "";
							String qlAttributeId = "";
							String qlDisplayObjectId = "";
							String qlDisplayTypeId = "";
							
							if (tokSemi.countTokens() == 4) {
									qlFieldName = tokSemi.nextToken();
									qlAttributeId = tokSemi.nextToken();
									qlDisplayTypeId = tokSemi.nextToken();
									qlDisplayObjectId = tokSemi.nextToken();
							}
							else
							{
								qlFieldName = qlFieldInfo;
							}

							String qlOperator  = request.getParameter("queryListOperator" + i);
							String qlValue     = request.getParameter("queryListValue" + i);
							
							if ( qlOperator.equals("like"))
								qlValue =  "%" + qlValue.replace('*','%') + "%";
							else if ( qlOperator.equals("startsWith"))
							{
								qlValue =  qlValue.replace('*','%') + "%";
								qlOperator = "like";
							}
							else if ( qlOperator.equals("endsWith"))
							{
								qlValue =  "%" + qlValue.replace('*','%');
								qlOperator = "like";
							}

							searchEntityName = UIWebUtility.getEntityFromParamName(qlFieldName);
	
							String hasJoin = (String) joinedEntities.get(searchEntityName);
							
							if ( ( hasJoin == null ) || ( !hasJoin.equals("Y")) )
							{
								eventProcessor.addOneRelationClause(delegator, "", "",searchEntityName, primaryEntityName, primaryME, false, queryInfo);

								joinedEntities.put(searchEntityName, "Y");
							}
							
							if ((searchEntityName == null) ||
									searchEntityName.equals("")) {
								searchEntityName = primaryEntityName;
							}
	
							searchAttribName = UIWebUtility.getAttribFromParamName(qlFieldName);
							entityOperator = EntityOperator.lookupComparison(qlOperator);
							Object searchValue = qlValue;
							
							// If this is a set operator, convert the String param into a comma separated List 
							if ( (entityOperator.equals(EntityOperator.IN)) || (entityOperator.equals(EntityOperator.NOT_IN)) || (entityOperator.equals(EntityOperator.BETWEEN)))
							{
								List valueList = new ArrayList();
								StringTokenizer tokComma = new StringTokenizer(qlValue, ",");

								while (tokComma.hasMoreTokens()) {
									String valueItem = tokComma.nextToken();
									valueList.add(valueItem);
								}
								searchValue = valueList;
							}
							
							try {
								// Figure out the attribute ID for the UiAttribute this parameter corresponds to so we can
								// save the query.
								String attributeId = UIWebUtility.getAttributeId(delegator,
										searchAttribName, searchEntityName);
	
								// Generate an entry in the WHERE clause for this attribute.  The entityOperator
								// is returned in case appendEntityClause changes it.
								// NOTE:  changes here must also be applied to UIQuery.appendEntityClauses() to work with saved queries
								//
								if ( qlDisplayTypeId.equals(UIDisplayObject.DISPLAY_TYPE_SELECT) || qlDisplayTypeId.equals(UIDisplayObject.DISPLAY_TYPE_SEARCH_TEXT))
								{
									String aliasName = searchEntityName + searchAttribName + "srch";
									UIUtility.addSelectSearch( queryInfo, qlDisplayObjectId, searchEntityName, searchAttribName, aliasName, entityOperator, searchValue );
								}
								else
								{
									if ( searchValue instanceof String )
									{
									entityOperator = EventUtility.appendEntityClause(searchEntityName,
											searchAttribName, (String) searchValue,
										entityOperator, queryInfo);
								}
									else if ( searchValue instanceof Collection)
									{
										entityOperator = EventUtility.appendEntityClause(searchEntityName,
											searchAttribName, (Collection) searchValue,
											entityOperator, queryInfo);
									}
									else
										throw new IllegalArgumentException("Query Param must be String or Collection");
								}

								// Store the attribute ID and value in the query save map.
								//									querySaveMap.put(attributeId, searchAttribValue);
								uiQuery.addUiQueryValue(attributeId, entityOperator, qlValue, qlDisplayTypeId, qlDisplayObjectId, delegator);
							} catch (GenericEntityException e) {
								//this parameter was not associated with a column in a table, so skip it
								Debug.logVerbose("skipping parameter which is not an entity attribute: " + qlFieldName, module);
							}

						}
					}
				}

⌨️ 快捷键说明

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