📄 reportmanagerejb.java
字号:
// Set next page. reqs.setPage(new Integer(page)); // Get the data for <code>page</code>. Ress ress = getRecords.process(reqs, ls).getRess(); if(entityName != null) {//check, can we know "include-to-report" option if (!report.getIgnoreIncludeToReport()) { //remove dataset headers, even if dataset is empty ResHeaderDataset[] resHeaderDataSets = ress.getResHeader().getResHeaderDataset(); if(resHeaderDataSets != null) { for(int j = 0; j < resHeaderDataSets.length; j++) { ResHeaderDataset resHeaderDataset = resHeaderDataSets[j]; if(!isEntityDataSetToBeIncludedToReport(entityMap, entityName, resHeaderDataset.getName())) { ress.getResHeader().removeResHeaderDataset(resHeaderDataset); } } } ResHeaderField[] resHeaderFields = ress.getResHeader().getResHeaderField(); if(resHeaderFields != null) { for(int y = 0; y < resHeaderFields.length; y++) { ResHeaderField resHeaderField = resHeaderFields[y]; if(!isEntityFieldToBeIncludedToReport(entityMap, entityName, resHeaderField.getName())) { ress.getResHeader().removeResHeaderField(resHeaderField); } } } } else if(fieldsForGrid != null) { // Process grid columns customized by user, bugfix #12272 ResHeader resHeader = ress.getResHeader(); ResHeaderField[] resHeaderFields = resHeader.getResHeaderField(); List<ResHeaderField> resHeaderFieldsForGrid = new ArrayList<ResHeaderField>(); for (String fieldForGrid : fieldsForGrid) { for (int x = 0; x < resHeaderFields.length; x++) { ResHeaderField resHeaderField = resHeaderFields[x]; if (fieldForGrid.equals(resHeaderField.getName())) { resHeaderField.setGrid(true); resHeaderFieldsForGrid.add(resHeaderField); resHeader.removeResHeaderField(resHeaderField); } } } // reset grid attribute value for (ResHeaderField resHeaderField : resHeader.getResHeaderField()) { resHeaderField.setGrid(false); } resHeaderFieldsForGrid.addAll(Arrays.asList(resHeader.getResHeaderField())); resHeader.clearResHeaderField(); for (ResHeaderField resHeaderFieldForGrid : resHeaderFieldsForGrid) { resHeader.addResHeaderField(resHeaderFieldForGrid); } } } //NRA code: define ress field datatype from header array // and determine type member lists (currently TIMESTAMP and DATE) ResHeaderField[] resHeaderFields = null; boolean isReformatDate = false; String user_date_pattern = null, user_time_pattern = null; ArrayList dateMembers = null, timestampMembers = null; String rep_date_pattern = null; try { rep_date_pattern = SysPropertyManager.getProperty("ReportDatePattern"); } catch (NoSuchPropertyException exc) { } try { // test date format obtained from System property DateHelper.formatDate(new Date(), rep_date_pattern); } catch (Throwable exc) { rep_date_pattern = null; } if(rep_date_pattern != null && !StringHelper.isEmpty(rep_date_pattern)) { isReformatDate = true; } if(isReformatDate) { resHeaderFields = ress.getResHeader().getResHeaderField(); dateMembers = new ArrayList(); timestampMembers = new ArrayList(); for(int k = 1; k < resHeaderFields.length; k++) { switch(resHeaderFields[k].getDatatype().getType()) { case DataSType.DATE_TYPE: dateMembers.add(new Integer(k)); break; case DataSType.TIMESTAMP_TYPE: timestampMembers.add(new Integer(k)); break; } } if(dateMembers.size() == 0) { dateMembers = null; } if(timestampMembers.size() == 0) { timestampMembers = null; } user_date_pattern = ls.getUser().getDatePattern(); user_time_pattern = ls.getUser().getTimePattern(); } // NRA code end //code by NRA to filter HTML tags for TEXT fields ResRecord resRecords[] = ress.getRes().getResRecord(); if(resRecords != null) { for(int r = 0; r < resRecords.length; r++) { ResRecord currentRecord = resRecords[r]; if(entityName != null) {//check, can we know "include-to-report" option if (!report.getIgnoreIncludeToReport()) { //remove datasets ResDataset[] dataSets = currentRecord.getResDataset(); if(dataSets != null) { for(int j = 0; j < dataSets.length; j++) { ResDataset resDataSet = dataSets[j]; if(!isEntityDataSetToBeIncludedToReport(entityMap, entityName, resDataSet.getName())) { currentRecord.removeResDataset(resDataSet); } } } // remove fields ResField resFields[] = currentRecord.getResField(); if(resFields != null) { for(int y = 0; y < resFields.length; y++) { ResField resField = resFields[y]; if (!isEntityFieldToBeIncludedToReport(entityMap, entityName, resField.getName())) { currentRecord.removeResField(resField); } } } } else if (fieldsForGrid != null) { // Process grid columns customized by user, bugfix #12272 ResField[] resFlds = currentRecord.getResField(); List<ResField> resFieldsForGrid = new ArrayList<ResField>(); for (String fieldForGrid : fieldsForGrid) { for (int x = 0; x < resFlds.length; x++) { ResField resField = resFlds[x]; if(fieldForGrid.equals(resField.getName())){ resFieldsForGrid.add(resField); currentRecord.removeResField(resField); } } } resFieldsForGrid.addAll(Arrays.asList(currentRecord.getResField())); currentRecord.clearResField(); for (ResField resFieldForGrid : resFieldsForGrid) { currentRecord.addResField(resFieldForGrid); } } } //iterate fields ResField resFields[] = currentRecord.getResField(); if(resFields != null) { for(int f = 0; f < resFields.length; f++) { ResField currentField = resFields[f]; //NRA code: check if current field is member of date or timestamp fields // and try to reformat date if yes if(dateMembers != null && dateMembers.contains(new Integer(f))) { reformatDate(currentField, user_date_pattern, "", rep_date_pattern); } if(timestampMembers != null && timestampMembers.contains(new Integer(f))) { reformatDate(currentField, user_date_pattern, user_time_pattern, rep_date_pattern); } // NRA code end String textFld = currentField.getResFieldText(); if(textFld != null && StringHelper.isHTML(textFld)) { currentField.setResFieldText(StringHelper.html2text(textFld)); } } } } } //end code NRA // Check for a next page. if(hasNextPage) { hasNextPage = ress.getNext().booleanValue(); } // Check first and last iteration attrs. boolean isFirst = (iterId == 0); boolean isLast = !hasNextPage && (i == (reqsSize - 1)); // Get number of pages if(isFirst) { // Initialize request number and pages attributes of event object. ev.setNewReq(i, ress.getCount().intValue() / ress.getPagesize().intValue()); // Unset counter. reqs.setDocount(Boolean.FALSE); } // Write the page to file. // NRA code: clear HTML tags if report format is EXcel String tmpstr = makeHTML(ls, report, iterId, isFirst, isLast, form, ress, transletClassName, transletParams); if(reportFormat != null && reportFormat.equals("xls")) { tmpstr = StringHelper.clearHtml(tmpstr); } out.println(tmpstr); /*out.println( makeHTML( ls, report, iterId, isFirst, isLast, form, ress, transletClassName, transletParams ) );*/ // -- end NRA code -- // Call callback handler if(hnd != null) { ev.setLast(isLast); ev.setPage(page); ev.setIterId(iterId); hnd.call(ev); } // Get next page. page++; // Get next iteration. iterId++; } while(hasNextPage); } out.flush(); out.close(); if(getLogger().isDebugEnabled()) { DEBUG("All pages of report saved to file '" + tempFile + "'."); } } catch (IOException ex) { ERROR(ex); throw new GenericSystemException("IO exception: " + ex.getMessage(), ex); } finally { try { if(out != null) { out.close(); } } catch (Exception ex) { } } return tempFile; } /** * Replace value of given ress field (Date or Timestamp) by re-formatted date. * * @param ressField ress field * @param new_pattern desired Date pattern (from System property) */ private void reformatDate(ResField ressField, String old_pattern_date, String old_pattern_time, String new_pattern) { String oldDate = ressField.getResFieldValue(); String old_pattern = null; if(oldDate != null && old_pattern_date != null && new_pattern != null) { String newDate = null; boolean hasTimePart = (oldDate.indexOf(':') >= 0); if(hasTimePart) { old_pattern = old_pattern_date + " " + old_pattern_time;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -