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

📄 uireport.java

📁 国外的一套开源CRM
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			
		StringBuffer displayHtml = new StringBuffer(5000);
		List fieldList = getPrimaryFields();
		int fieldListSize = fieldList.size();
						
		StringBuffer fieldNameOptions = new StringBuffer(200);
//		fieldNameOptions.append("<option value=''></option>");
		for (int fieldNbr = 0; fieldNbr < fieldListSize; fieldNbr++) {
			GenericValue fieldInfo = (GenericValue) fieldList.get(fieldNbr);
			String isVisible = UtilFormatOut.checkNull(fieldInfo.getString("isVisible"));
			if ( isVisible.equals("Y")) {
				String htmlName = UIWebUtility.getHtmlName(fieldInfo.getString("sectionName"), fieldInfo.getString("entityName"), fieldInfo.getString("attributeName"),0);
				String displayObjectId = fieldInfo.getString("displayObjectId");
				String displayTypeId = fieldInfo.getString("displayTypeId");
				String attributeId = fieldInfo.getString("attributeId");
				String displayLabel = fieldInfo.getString("displayLabel");
				String optValue = htmlName + ";" + attributeId + ";" + displayTypeId + ";" + displayObjectId + ";" + displayLabel;
				fieldNameOptions.append("<option value='" + optValue + "'>" + displayLabel + "</option>");	
			}
	
		}
	
		List extendedFields = getRelatedFields();
		if ( extendedFields != null )
		{
			int numFields = extendedFields.size();
			for ( int i=0; i < numFields; i++)
			{
				GenericValue fieldInfo = (GenericValue) extendedFields.get(i);
				String entityName = fieldInfo.getString("entityName");
				String attributeId = fieldInfo.getString("attributeId");
				String attributeName = fieldInfo.getString("attributeName");
				String displayObjectId = fieldInfo.getString("displayObjectId");
				String displayTypeId = fieldInfo.getString("displayTypeId");
				String sectionName = fieldInfo.getString("sectionName");
				String sectionDescription = fieldInfo.getString("sectionDescription");
				String displayLabel = fieldInfo.getString("displayLabel");
				String htmlName = UIWebUtility.getHtmlName( sectionName, entityName, attributeName, 0 );
				String optValue = htmlName + ";" + attributeId + ";" + displayTypeId + ";" + displayObjectId + ";" + displayLabel;
				displayLabel = sectionDescription + "." + displayLabel;
				fieldNameOptions.append("<option value='" + optValue + "'>" + displayLabel + "</option>");	
			}
		}

		return fieldNameOptions.toString();
	}
	
	public String getConditionHtml()
	{	
		if (sectionId == null)
			throw new IllegalArgumentException("section ID must be set before calling getConditionHtml");
			
		StringBuffer displayHtml = new StringBuffer(5000);
		List fieldList = getPrimaryFields();
		int fieldListSize = fieldList.size();
						
		StringBuffer fieldNameOptions = new StringBuffer(200);
		fieldNameOptions.append("<option value=''></option>");
		for (int fieldNbr = 0; fieldNbr < fieldListSize; fieldNbr++) {
			GenericValue fieldInfo = (GenericValue) fieldList.get(fieldNbr);
			String isSearchable = UtilFormatOut.checkNull(fieldInfo.getString("isSearchable"));
			if ( isSearchable.equals("Y")) {
				String htmlName = UIWebUtility.getHtmlName(fieldInfo.getString("sectionName"), fieldInfo.getString("entityName"), fieldInfo.getString("attributeName"),0);
				String displayObjectId = fieldInfo.getString("displayObjectId");
				String displayTypeId = fieldInfo.getString("displayTypeId");
				String attributeId = fieldInfo.getString("attributeId");
				String optValue = htmlName + ";" + attributeId + ";" + displayTypeId + ";" + displayObjectId + ";" + fieldInfo.getString("displayLabel");
				fieldNameOptions.append("<option value='" + optValue + "'>" + fieldInfo.getString("displayLabel") + "</option>");	
			}
	
		}
	
		List extendedFields = getRelatedFields();
		if ( extendedFields != null )
		{
			int numFields = extendedFields.size();
			for ( int i=0; i < numFields; i++)
			{
				GenericValue fieldInfo = (GenericValue) extendedFields.get(i);
				String entityName = fieldInfo.getString("entityName");
				String attributeId = fieldInfo.getString("attributeId");
				String attributeName = fieldInfo.getString("attributeName");
				String displayObjectId = fieldInfo.getString("displayObjectId");
				String displayTypeId = fieldInfo.getString("displayTypeId");
				String sectionName = fieldInfo.getString("sectionName");
				String sectionDescription = fieldInfo.getString("sectionDescription");
				String displayLabel = fieldInfo.getString("displayLabel");
				String htmlName = UIWebUtility.getHtmlName( sectionName, entityName, attributeName, 0 );
				String optValue = htmlName + ";" + attributeId + ";" + displayTypeId + ";" + displayObjectId + ";" + displayLabel;
				displayLabel = sectionDescription + "." + displayLabel;
				fieldNameOptions.append("<option value='" + optValue + "'>" + displayLabel + "</option>");	
			}
		}
				
		StringBuffer conditionOptions = new StringBuffer(100);
		conditionOptions.append("<option value='equals'>=</option>");
		conditionOptions.append("<option value='like'>CONTAINS</option>");
		conditionOptions.append("<option value='startsWith'>STARTS WITH</option>");
		conditionOptions.append("<option value='endsWith'>ENDS WITH</option>");
		conditionOptions.append("<option value='equals'>=</option>");
		conditionOptions.append("<option value='notEqual'>NOT EQUAL</option>");
		conditionOptions.append("<option value='lessThan'>&lt;</option>");
		conditionOptions.append("<option value='greaterThan'>&gt;</option>");
		conditionOptions.append("<option value='lessThanEqualTo'>&lt;=</option>");
		conditionOptions.append("<option value='greaterThanEqualTo'>&gt;=</option>");
		conditionOptions.append("<option value='in'>IN</option>");
		conditionOptions.append("<option value='not-in'>NOT IN</option>");
		conditionOptions.append("<option value='between'>BETWEEN</option>");
	
				
		displayHtml.append("<table id='queryListTable' border=1>\n");
		displayHtml.append("<tr><td>Field</td><td>Condition</td><td>Value</td><td>Action</td></tr>\n");
	
		List reportConditions = getReportCriteria();
		int numExistingConditions = 0;
		if ( reportConditions != null )
		{
			Iterator rcIter = reportConditions.iterator();
			while ( rcIter.hasNext() )
			{
				UIReportCriteria rc = (UIReportCriteria) rcIter.next();
				numExistingConditions++;
				int i = numExistingConditions;
				String htmlName = UIWebUtility.getHtmlName("REPORT", rc.getEntityName(), rc.getAttributeName(),0);
				String optValue = htmlName + ";" + rc.getAttributeId() + ";" + rc.getDisplayTypeId() + ";" + rc.getDisplayObjectId() + ";" + rc.getDisplayLabel();
				displayHtml.append("<tr id=queryListRow" + i + "><td><input type=hidden name=queryListField" + i + " value='" + optValue + "'>" +  rc.getDisplayLabel() + "</td>\n");
				displayHtml.append("	<td><input type=hidden name=queryListOperator" + i + " value='" + rc.getQueryOperatorId() + "'>" + rc.getQueryOperatorId() + "</td>\n");
				displayHtml.append("	<td><input type=hidden name=queryListValue" + i + " size=30 value='" + rc.getAttributeValue() + "'>" + rc.getAttributeValue() + "</td>\n");
				displayHtml.append("	<td><img src=/sfaimages/remove.gif alt=Del onClick=delConditionRow(" + i + ")>\n");
				displayHtml.append("	    <img src=/sfaimages/add.gif alt=Add onClick=addConditionRow(" + i + ")></td>\n");
				displayHtml.append("</tr>");
				
			}
		}
		
		int startRow = numExistingConditions + 1;
		int endRow = Math.max(startRow+2, 5);
		// default show 4 rows
		for ( int i=startRow; i < endRow; i++)
		{
			displayHtml.append("<tr id=queryListRow" + i + "><td><select name=queryListField" + i + ">" +  fieldNameOptions.toString() + "</select></td>\n");
			displayHtml.append("	<td><select name=queryListOperator" + i + ">" + conditionOptions.toString() + "</select></td>\n");
			displayHtml.append("	<td><input name=queryListValue" + i + " size=30></td>\n");
			displayHtml.append("	<td><img src=/sfaimages/remove.gif alt=Del onClick=delConditionRow(" + i + ")>\n");
			displayHtml.append("	    <img src=/sfaimages/add.gif alt=Add onClick=addConditionRow(" + i + ")></td>\n");
			displayHtml.append("</tr>");
					
		}
	
		displayHtml.append("</table>\n");
		displayHtml.append("<input type=hidden id=queryListMaxRows name=queryListMaxRows value=4>\n");
				
		displayHtml.append("<script type='text/javascript'>\n");
		displayHtml.append("function addConditionRow(i) {\n");
		displayHtml.append("	var tab1=document.getElementById('queryListTable')\n");
		displayHtml.append("	if ( tab1 ) {\n");
		displayHtml.append("		var numRows = tab1.rows.length\n");
		displayHtml.append("		var maxRows = 10\n");
		displayHtml.append("		if ( numRows > maxRows )\n");
		displayHtml.append("			alert(\"Can't have more than 10 conditions\");\n");
		displayHtml.append("		else {\n");
		displayHtml.append("			var x = tab1.insertRow(numRows)\n");
		displayHtml.append("			var maxRows = document.getElementById('queryListMaxRows')\n");
		displayHtml.append("			var newRow = maxRows.value -  -1\n");
		displayHtml.append("			maxRows.value = newRow\n");
		displayHtml.append("			x.id = \"queryListRow\" + newRow\n");
		displayHtml.append("			var c1=x.insertCell(0)\n");
		displayHtml.append("			var c2=x.insertCell(1)\n");
		displayHtml.append("			var c3=x.insertCell(2)\n");
		displayHtml.append("			var c4=x.insertCell(3)\n");
		displayHtml.append("			c1.innerHTML=\"<select name=queryListField\" + newRow + \">" + fieldNameOptions.toString() + "</select>\"\n");
		displayHtml.append("			c2.innerHTML=\"<select name=queryListOperator\" + newRow + \">" + conditionOptions.toString() +"</select>\"\n");
		displayHtml.append("			c3.innerHTML=\"<input name=queryListValue\" + newRow + \" size=30>\"\n");
		displayHtml.append("			c4.innerHTML=\"<img src=/sfaimages/remove.gif alt=Del onClick=delConditionRow(\" + newRow + \")>\" + \" <img src=/sfaimages/add.gif alt=Add onClick=addConditionRow(\" + newRow + \")>\"\n");

		displayHtml.append("		}\n");
		displayHtml.append("		fixSize()\n");
		displayHtml.append("	}\n");
		displayHtml.append("}\n");
				
		displayHtml.append("function delConditionRow(i)\n");
		displayHtml.append("{\n");
		displayHtml.append("	var row1 = document.getElementById('queryListRow' + i)\n");
		displayHtml.append("	var tab = document.getElementById('queryListTable')\n");
		displayHtml.append("	var rows = tab.rows\n");
		displayHtml.append("	if ( rows.length == 2 ) {\n");
		displayHtml.append("		event.returnValue = false\n");
		displayHtml.append("		return;\n");
		displayHtml.append("	}\n");
		displayHtml.append("	for ( i=0; i < rows.length; i++ ) {\n");
		displayHtml.append("		row = rows[i];\n");
		displayHtml.append("		if ( row.id == row1.id) {\n");
		displayHtml.append("			tab.deleteRow(i);\n");
		displayHtml.append("			break;\n");
		displayHtml.append("		}\n");
		displayHtml.append("	}\n");
		displayHtml.append("	fixSize()\n");
		displayHtml.append("}\n");		
		
		displayHtml.append("</script>\n");
		
		return displayHtml.toString();
	}

	public boolean loadQueryInfo(HttpServletRequest request, HttpServletResponse response, UICache uiCache) 
	{
		
		try
		{
			List primaryFields = loadPrimarySectionFields();
			List relatedQueryFields = loadRelatedSectionQueryFields();
			
			List uiScreenSectionEntityGVL = delegator.findByAnd("UiScreenSectionEntity",
						UtilMisc.toMap("sectionId", sectionId), UtilMisc.toList("retrieveOrder"));
			            
			UIScreenSectionEntity primaryEntity = new UIScreenSectionEntity((GenericValue) uiScreenSectionEntityGVL.get(0), delegator, uiCache);
			GenericValue screenSectionGV = delegator.findByPrimaryKey("UiScreenSection", UtilMisc.toMap("sectionId", sectionId));
			String eventProcessorClass = screenSectionGV.getString("eventProcessorClass");
			eventProcessor = UIUtility.getEventProcessor(eventProcessorClass);
			
			String primaryEntityName = primaryEntity.getUiEntity().getEntityName();
			String searchAttribValue = "";
			String searchEntityName = "";
			String searchAttribName = "";
			EntityComparisonOperator entityOperator = null;
			List relatedSearchClauses = new LinkedList();
			List selectFields = new ArrayList();
			List selectFieldLabels = new ArrayList();
			List sortFields = new ArrayList();
			
			List reportFields = new ArrayList();
			List reportCriteria = new ArrayList();
			List reportOrderBy = new ArrayList();
			
			ModelEntity primaryME = primaryEntity.getUiEntity().getModelEntity();
			List primaryPkFieldNames =primaryEntity.getUiEntity().getPrimaryKeyFieldNames();
			
			queryInfo = new QueryInfo(delegator, primaryEntityName);
			
			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 uiScreenSectionEntityI = uiScreenSectionEntityGVL.iterator();
			
			uiScreenSectionEntityI.next(); // Pass up the primary entity.
			
			while (uiScreenSectionEntityI.hasNext()) {
				GenericValue entityGV = (GenericValue) uiScreenSectionEntityI.next();
				UIScreenSectionEntity uiScreenSectionEntity = new UIScreenSectionEntity(entityGV, delegator, uiCache) ;
				String relationTitle = uiScreenSectionEntity.getRelationTitle();
				String relatedEntityName = uiScreenSectionEntity.getUiEntity().getEntityName();
				String relatedAndFields = uiScreenSectionEntity.getRelationByAndFields();
				boolean isOuterJoin = uiScreenSectionEntity.getIsOuterJoined();
			
				eventProcessor.addOneRelationClause(delegator, relationTitle, relatedAndFields,
					relatedEntityName, primaryEntityName, primaryME, isOuterJoin,
					queryInfo);
			        
				joinedEntities.put(relatedEntityName, "Y");
			}
			
			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 = "";
						String qlDisplayLabel = "";
						
						if (tokSemi.countTokens() == 5) {
								qlFieldName = tokSemi.nextToken();
								qlAttributeId = tokSemi.nextToken();
								qlDisplayTypeId = tokSemi.nextToken();
								qlDisplayObjectId = tokSemi.nextToken();
								qlDisplayLabel = tokSemi.nextToken();
						}
						else
						{
							qlFieldName = qlFieldInfo;
						}
			
						String qlOperator  = request.getParameter("queryListOperator" + i);
						String qlValue     = request.getParameter("queryListValue" + i);
						
						reportCriteria.add( new UIReportCriteria(qlAttributeId, qlDisplayTypeId, qlDisplayObjectId, qlOperator,qlValue, qlDisplayLabel) );
						
						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;
						}
						
							// Figure out the attribute ID for the UiAttribute this parameter corresponds to so we can
							// save the query.
						String attributeId = qlAttributeId;
			
							// 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");
							}
			
					}
				}
			}
			
			// get select List fields
			String [] selectFieldsParam = request.getParameterValues("selectFields");
			if ( selectFieldsParam == null )
				return false;
			for (int i = 0; i < selectFieldsParam.length; i++)
			{
				// Do what you need for each string:  foo[i]
				String selectField = selectFieldsParam[i];
				StringTokenizer tokSemi = new StringTokenizer(selectField,";");

⌨️ 快捷键说明

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