📄 uireport.java
字号:
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'><</option>");
conditionOptions.append("<option value='greaterThan'>></option>");
conditionOptions.append("<option value='lessThanEqualTo'><=</option>");
conditionOptions.append("<option value='greaterThanEqualTo'>>=</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 + -