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

📄 uireport.java

📁 国外的一套开源CRM
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * 
 * 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.ui;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilFormatOut;
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.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.ModelEntity;
import org.ofbiz.entity.util.EntityListIterator;

import com.sourcetap.sfa.event.EventUtility;
import com.sourcetap.sfa.event.GenericEventProcessor;
import com.sourcetap.sfa.replication.GenericReplicator;
import com.sourcetap.sfa.security.SecurityLinkInfo;
import com.sourcetap.sfa.security.SecurityWrapper;
import com.sourcetap.sfa.util.QueryInfo;
import com.sourcetap.sfa.util.UserInfo;
 
public class UIReport {
	public static final String module = UIReport.class.getName();
 
 	protected boolean primaryFieldsLoaded = false;
 	protected boolean relatedFieldsLoaded = false;
 	protected List primaryFields = null;
 	protected List relatedFields = null;
 	protected String reportId = null;
 	protected String sectionId = null;
 	protected String partyId = null;
 	protected String reportName = null;
 	protected String publicFlag = null;
 	
 	protected List reportFields = null;
 	protected List reportCriteria = null;
 	protected List reportOrderBy = null;
 	
 	private List selectFieldLabels = null;
 	private List selectFieldNames = null;
 	protected GenericDelegator delegator = null;
 	protected QueryInfo queryInfo = null;
 	protected GenericEventProcessor eventProcessor = null;
 	
	public UIReport(GenericDelegator delegator_)
	{
		setDelegator(delegator_);
	}
 	
 	public UIReport(String reportId_, GenericDelegator delegator_)
 	{
 		setDelegator(delegator_);
 		loadReport(reportId_);
 	}
 	
 	public void loadReport(String reportId_)
 	{
 		try
		{
			GenericValue reportGV = delegator.findByPrimaryKey("UiReport", UtilMisc.toMap("reportId", reportId_));
			if ( reportGV == null )
				throw new IllegalArgumentException("Unable to find report with ID " + reportId_ );
				
			setReportId(reportId_);
			setSectionId(reportGV.getString("sectionId"));
			setPartyId(reportGV.getString("partyId"));
			setReportName(reportGV.getString("reportName"));
			setPublicFlag(reportGV.getString("publicFlag"));
			
			List reportFieldsGVL = delegator.findByAnd("UiReportField", UtilMisc.toMap("reportId", reportId_), UtilMisc.toList("displayOrder"));
			setReportFields(UIReportField.loadFromGVL(reportFieldsGVL));
			
			List reportCriteriaGVL = delegator.findByAnd("UiReportCriteria", UtilMisc.toMap("reportId", reportId_), null);
			setReportCriteria(UIReportCriteria.loadFromGVL(reportCriteriaGVL));
			
			List reportOrderByGVL = delegator.findByAnd("UiReportOrderBy", UtilMisc.toMap("reportId", reportId_), UtilMisc.toList("sortOrder")); 
			setReportOrderBy(UIReportOrderBy.loadFromGVL(reportOrderByGVL));
				
		} catch (GenericEntityException e)
		{
			Debug.logError("Error getting report: " + e.getMessage(), module);
			e.printStackTrace();
		}
 	}

 	public void saveReport(String partyId, String reportName)
 	{
 		setPartyId(partyId);
 		
 		if ( !reportName.equals(getReportName()))
 		{
			setReportName(reportName);
			setReportId(null); 			
 		}
 		
		saveReport();
 	}
 	
 	public void saveReport()
 	{
		try
		{
			String reportId = getReportId();
			
			if ( reportId == null )
			{
				reportId = GenericReplicator.getNextSeqId("UiReport", delegator);
				setReportId(reportId);
			}
			else
			{
				// TODO need to delete old report info
			}
			
			List valuesToStore = new ArrayList();
					
			GenericValue reportGV = new GenericValue(delegator.getModelEntity("UiReport"));
			reportGV.setDelegator(delegator);
			reportGV.set("reportId", reportId);
			reportGV.set("sectionId", getSectionId());
			reportGV.set("partyId", getPartyId());
			reportGV.set("reportName", getReportName());
			reportGV.set("publicFlag", getPublicFlag());
			
			valuesToStore.add(reportGV);
			
			Iterator iter = reportFields.iterator();
			while ( iter.hasNext())
			{
				UIReportField rf = (UIReportField) iter.next();

				GenericValue gv = new GenericValue(delegator.getModelEntity("UiReportField"));
				gv.setDelegator(delegator);
				gv.set("reportFieldId", GenericReplicator.getNextSeqId("UiReportField", delegator));
				gv.set("reportId", reportId);
				gv.set("attributeId", rf.getAttributeId());
				gv.set("displayTypeId", rf.getDisplayTypeId());
				gv.set("displayObjectId", rf.getDisplayObjectId());
				gv.set("groupBy", rf.getGroupBy());
				gv.set("displayOrder", new Integer(rf.getDisplayOrder()));
				gv.set("sqlFunction", rf.getSqlFunction());
				gv.set("displayLabel", rf.getDisplayLabel());
				
				valuesToStore.add(gv);
			}

			iter = reportCriteria.iterator();
			while ( iter.hasNext())
			{
				UIReportCriteria rc = (UIReportCriteria) iter.next();

				GenericValue gv = new GenericValue(delegator.getModelEntity("UiReportCriteria"));
				gv.setDelegator(delegator);
				gv.set("reportCriteriaId", GenericReplicator.getNextSeqId("UiReportCriteria", delegator));
				gv.set("reportId", reportId);
				gv.set("attributeId", rc.getAttributeId());
				gv.set("displayTypeId", rc.getDisplayTypeId());
				gv.set("displayObjectId", rc.getDisplayObjectId());
				gv.set("queryOperatorId", rc.getQueryOperatorId());
				gv.set("attributeValue", rc.getAttributeValue());
				gv.set("displayLabel", rc.getDisplayLabel());
								
				valuesToStore.add(gv);
			}

			iter = reportOrderBy.iterator();
			while ( iter.hasNext())
			{
				UIReportOrderBy ro = (UIReportOrderBy) iter.next();

				GenericValue gv = new GenericValue(delegator.getModelEntity("UiReportOrderBy"));
				gv.setDelegator(delegator);
				gv.set("reportOrderId", GenericReplicator.getNextSeqId("UiReportOrderBy", delegator));
				gv.set("reportId", reportId);
				gv.set("attributeId", ro.getAttributeId());
				gv.set("sortOrder", new Integer(ro.getSortOrder()));
				gv.set("displayLabel", ro.getDisplayLabel());
													
				valuesToStore.add(gv);
			}
			
			delegator.storeAll(valuesToStore);
		} catch (GenericEntityException e)
		{
			e.printStackTrace();
			Debug.logError("error saving report" + e.getMessage(), module);
		}
 	}
 	
	public static boolean deleteReport(String reportId, GenericDelegator delegator)
	{
		try
		{
			List valuesToBeRemoved = new ArrayList();
			
			GenericValue gv = new GenericValue(delegator.getModelEntity("UiReportCriteria"));
			gv.set("reportId", reportId);
			valuesToBeRemoved.add(gv);
			
			gv = new GenericValue(delegator.getModelEntity("UiReportField"));
			gv.set("reportId", reportId);
			valuesToBeRemoved.add(gv);
			
			gv = new GenericValue(delegator.getModelEntity("UiReportOrderBy"));
			gv.set("reportId", reportId);
			valuesToBeRemoved.add(gv);
			
			gv = new GenericValue(delegator.getModelEntity("UiReport"));
			gv.set("reportId", reportId);
			valuesToBeRemoved.add(gv);
			
			delegator.removeAll(valuesToBeRemoved);
		} catch (GenericEntityException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			Debug.logError("unable to delete report: " + reportId + " error:" + e.getMessage(), module);
			return false;
		}
		return true;
	}
	public static List getReports(String companyId, String partyId, GenericDelegator delegator)
	{
		return getReports(null, partyId, delegator);
	}

	public static List getReports(String sectionId, String companyId, String partyId, GenericDelegator delegator)
	{
		try
		{
			Map condition = sectionId == null ? UtilMisc.toMap("partyId", "-1") : UtilMisc.toMap("sectionId", sectionId, "partyId", "-1");
			List orderBy = UtilMisc.toList("reportName");
				
			List reportList = delegator.findByAnd("UiReport", condition, orderBy);
			if ( !partyId.equals("-1")) {

				condition = sectionId == null ? UtilMisc.toMap("partyId", partyId) : UtilMisc.toMap("sectionId", sectionId, "partyId", partyId);
				
				EntityCondition c1 = new EntityConditionList( UtilMisc.toList( new EntityExpr("partyId", EntityOperator.EQUALS, partyId),
							new EntityConditionList( UtilMisc.toList( new EntityExpr("partyId", EntityOperator.EQUALS, companyId),
											                          new EntityExpr("publicFlag", EntityOperator.EQUALS, "Y")), 
											         EntityOperator.AND)), EntityOperator.OR);
	  			if ( sectionId != null )
					c1 = new EntityConditionList( UtilMisc.toList( c1, new EntityExpr("sectionId", EntityOperator.EQUALS, sectionId)), EntityOperator.AND);

				if ( reportList == null)
					reportList = delegator.findByCondition("UiReport", c1, null, orderBy);
				else
					reportList.addAll(delegator.findByCondition("UiReport", c1, null, orderBy));
			}
			
			return reportList;
		} catch (GenericEntityException e)
		{
			Debug.logError("Error getting reportList: " + e.getMessage(), module);
			e.printStackTrace();
		}
		return null;
	}
	
	public static List getAvailableReportScreens(GenericDelegator delegator)
	{
		try
		{
			List availableScreens = delegator.findByAnd("UiScreen", UtilMisc.toMap("allowReporting", "Y"), UtilMisc.toList("screenName"));
			
			return availableScreens;
		} catch (GenericEntityException e)
		{
			Debug.logError("Error getting availabel report section List: " + e.getMessage(), module);
			e.printStackTrace();
		}
		return null;
	}
	 	
 	public List loadPrimarySectionFields()
    {
		try
		{
			List primaryFields = getDelegator().findByAnd("UiScreenSectionFields",
					UtilMisc.toMap("sectionId", getSectionId()), 
					UtilMisc.toList("displayOrder"));
			
			setPrimaryFields(primaryFields);
			return primaryFields;
		} catch (GenericEntityException e)
		{
			Debug.logError("Unable to get Primary Screen Fields:" + e.getMessage(), module);
			return null;
		}
	}
 
 	public List loadRelatedSectionQueryFields()
    {
		try
		{
			List relatedFields = getDelegator().findByAnd("UiRelatedSectionQueryFields",
					UtilMisc.toMap("sectionId", getSectionId(), "useInAdvancedQueries", "Y", "isSearchable", "Y"), 
					UtilMisc.toList("relatedSectionId", "displayOrder"));
			setRelatedFields(relatedFields);
			return relatedFields;
		} catch (GenericEntityException e)
		{
			Debug.logError("Unable to get Related Screen Fields:" + e.getMessage(), module);
			return null;
		}
	}

	public String getOrderBySelectedOptions()
	{
		List fieldList = getReportOrderBy();
		if ( fieldList == null )
			return "";
			
		StringBuffer displayHtml = new StringBuffer(5000);
		int fieldListSize = fieldList.size();

		for (int fieldNbr = 0; fieldNbr < fieldListSize; fieldNbr++) 
		{
			UIReportOrderBy fieldInfo = (UIReportOrderBy) fieldList.get(fieldNbr);
			
			String htmlName = UIWebUtility.getHtmlName("REPORT", fieldInfo.getEntityName(), fieldInfo.getAttributeName(),0);
			String attributeId = fieldInfo.getAttributeId();
			String displayLabel = fieldInfo.getDisplayLabel();
			String optValue = htmlName + ";" + attributeId + ";" + "NONE" + ";" + "NONE" + ";" + displayLabel;
			displayHtml.append("<option value='" + optValue + "'>" + displayLabel + "</option>");	
		}
		return displayHtml.toString();
	}

	public String getSelectListSelectedOptions()
	{
		List fieldList = getReportFields();
		if ( fieldList == null )
			return "";
			
		StringBuffer displayHtml = new StringBuffer(5000);
		int fieldListSize = fieldList.size();

		for (int fieldNbr = 0; fieldNbr < fieldListSize; fieldNbr++) 
		{
			UIReportField fieldInfo = (UIReportField) fieldList.get(fieldNbr);
			
			String htmlName = UIWebUtility.getHtmlName("REPORT", fieldInfo.getEntityName(), fieldInfo.getAttributeName(),0);
			String displayObjectId = fieldInfo.getDisplayObjectId();
			String displayTypeId = fieldInfo.getDisplayTypeId();
			String attributeId = fieldInfo.getAttributeId();
			String displayLabel = fieldInfo.getDisplayLabel();
			String optValue = htmlName + ";" + attributeId + ";" + displayTypeId + ";" + displayObjectId + ";" + displayLabel;
			displayHtml.append("<option value='" + optValue + "'>" + displayLabel + "</option>");	
		}
		return displayHtml.toString();
	}
	
	
	public String getSelectListAvailableOptions()
	{
		if (sectionId == null)
			throw new IllegalArgumentException("section ID must be set before calling getConditionHtml");

⌨️ 快捷键说明

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