📄 uireport.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.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 + -