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

📄 reportmanagerejb.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    // 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 + -