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

📄 chartdatamanager.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    
    private static ReqField createReqFieldFromCategoryField(ChartCategoryField categoryField){
        ReqField reqField = createReqFieldFromChartEfield(categoryField);
        OrderDirectionSType sortDir = categoryField.getSortdir();
        if (sortDir != null) {
            reqField.setSort(true);
            reqField.setSortdir(sortDir);
        }
        return reqField;
    }
    
    private static ReqField createReqFieldFromChartEfield(ChartEfieldType chartEfield){
        ReqField reqField = new ReqField();
        reqField.setEntity(chartEfield.getEntity());
        reqField.setName(chartEfield.getName());
        return reqField;
    }
    
    public static ChartModel[] getSystemCharts(LogonSession ls, ActionContext ctx)
            throws EQLException {

        List<ChartObject> objs = ChartObjectHandler.findSystemCharts(ctx.getJEOManager(), ls);
        if (objs == null || objs.isEmpty())
            return new ChartModel[0];
        
        ChartModel[] models = new ChartModel[objs.size()];
        for (int i = 0; i < objs.size(); i++) {
            models[i] = new DefaultChartModel(transformJEOToMeta(ls, ctx, objs.get(i)));
        }
        
        return models;
    }

    private static ChartMeta transformJEOToMeta(LogonSession ls, ActionContext ctx, ChartObject obj){
        return transformJEOToDetails(ls, ctx, obj).toMeta();
    }

    private static ChartDetails transformJEOToDetails(LogonSession ls, ActionContext ctx, ChartObject obj){
        if(obj == null)
            throw new IllegalArgumentException("obj can't be a null");

        char[] body = obj.getBody();
        if(body == null || body.length == 0)
            throw new IllegalStateException("Chart body can't be a null");

        Chart chart = transformJEOToJXB(obj);

        ChartDetails details = new ChartDetails(obj.getChart_id());
        
        ChartReq chartReq = chart.getChartReq();
        
        details.setCategoryFieldFormId(chartReq.getChartCategoryField().getFormid());

        List<String> dataFieldFormIds = new ArrayList<String>();
        for(int i = 0; i < chartReq.getChartDataFieldCount(); i++){
            dataFieldFormIds.add(chartReq.getChartDataField(i).getFormid());
        }
        details.setDataFieldFormIds(dataFieldFormIds);
        
        ChartParams params = chart.getChartParams();
        details.setType(ChartType.valueOf(params.getType().toString()));
        details.setTitle(params.getTitle());

        // TODO move default chart's orientation to the system properties
        details.setOrientation(DEFAULT_ORIENTATION);
        if (params.getOrientation() != null) {
            details.setOrientation(
                    ChartOrientation.valueOf(params.getOrientation().toString()));
        }

        // TODO move default chart's width to the system properties
        details.setWidth(DEFAULT_WIDTH);
        String width = getChartParameter(params, PARAM_WIDTH);
        if (width != null)
            details.setWidth(Integer.parseInt(width));

        // TODO move default chart's height to the system properties
        details.setHeight(DEFAULT_HEIGHT);
        String height = getChartParameter(params, PARAM_HEIGHT);
        if (height != null)
            details.setHeight(Integer.parseInt(height));

        String colors = getChartParameter(params, PARAM_COLORS);
        if (colors != null)
            details.setColors(colors);

        details.setFilters(createFiltersFromReqFilters(
                ls, ctx, chart.getChartReq().getReqFilters()));

        return details;
    }
    
    /**
     * Mapping ReqFilters -> FieldData[] is partially supported now,
     * nested ReqFilters are not supported.
     * @return map 
     */
    private static Map<String, List<FieldData>> createFiltersFromReqFilters(
            LogonSession ls, ActionContext ctx, ReqFilters filters) {
        
        if (filters == null || filters.getReqFiltersTypeItemCount() == 0)
            return Collections.emptyMap();
        
        if(!ConditionSType.AND.equals(filters.getType()))
            throw new IllegalStateException("Only req-filters/@type='" + ConditionSType.AND + "' is supported");

        Map<String, List<FieldData>> dataMap = new HashMap<String, List<FieldData>>();
        
        for (ReqFiltersTypeItem filterItem : filters.getReqFiltersTypeItem()) {
            ReqFilter filter = filterItem.getReqFilter();
            if (filter == null)
                continue;
            
            String formId = filter.getFormid();
            List<FieldData> data = dataMap.get(formId);
            if (data == null) {
                data = new ArrayList<FieldData>();
                dataMap.put(formId, data);
            }
            data.add(createFieldDataFromReqFilter(ls, ctx, filter));
        }

        return dataMap;
    }

// TODO move methods to the EntityFacade {{{
    private static FieldData createFieldData(LogonSession ls, FieldMeta fieldMeta, Object value, Object text){
        FieldData fieldData = EntitySerializeHelper.createEmptyFieldData(fieldMeta, null);
        switch (fieldMeta.getDataType()) {
            case FieldMeta.LISTBOX:
                ListboxFieldData listboxFieldData = (ListboxFieldData) fieldData;
                SubsetData subSet = listboxFieldData.getItemsSelected();
                if (value == null)
                    subSet.setNullSelected(true);
                else
                    subSet.setIDSelected(((Number) value).longValue(), true);

                break;
            case FieldMeta.TEXTBOX:
                TextboxFieldData textboxFieldData = (TextboxFieldData) fieldData;
                textboxFieldData.setText((String) value);
                break;
            case FieldMeta.TEXTAREA:
                TextareaFieldData textareaFieldData = (TextareaFieldData) fieldData;
                textareaFieldData.setText((String) value);
                break;
            case FieldMeta.CHECKBOX:
                if(value != null){
                    CheckBoxData checkboxFieldData = (CheckBoxData) fieldData;
                    checkboxFieldData.setChecked(value instanceof String && ((String) value).equals("1"));
                }
                break;
            case FieldMeta.ENTITYREFERENCE:
                if(value != null){
                    EntityReferenceData entityFieldData = (EntityReferenceData) fieldData;
                    try {
                        entityFieldData.setSelectedRowID(((Number) value).longValue());
                    } catch (NumberFormatException e) {
                    }
                    if(text != null)
                        entityFieldData.setSelectedFilter((String) text);
                }
                break;
// TODO implement this later
//            case FieldMeta.DATEFIELD:
//                break;
        }
        return fieldData;
    }

    private static FieldData createFieldDataFromReqFilter(LogonSession ls, ActionContext ctx, ReqFilter filter){
        FieldData fieldData = null;
        
        FieldMeta fieldMeta = EntityViewHelper.getMetaForField(
                filter.getEntity(), filter.getName(), false, ls, ctx);
        if (fieldMeta != null) {
            String fieldName = filter.getName();
            switch (fieldMeta.getDataType()) {
                case FieldMeta.LISTBOX:
                    long[] values = new long[filter.getReqFilterValueCount()];
                    int i = 0;
                    for (String filterValue : filter.getReqFilterValue()) {
                        values[i++] = Long.valueOf(filterValue);
                    }
                    fieldData = new ListboxFieldData(fieldName, new SubsetData(values));
                    break;
                case FieldMeta.TEXTBOX:
                    fieldData = new TextboxFieldData(fieldName, filter.getReqFilterValue(0));
                    break;
                case FieldMeta.TEXTAREA:
                    fieldData = new TextareaFieldData(fieldName, filter.getReqFilterValue(0));
                    break;
                case FieldMeta.MEMO:
                    fieldData = new MemoFieldData(fieldName, filter.getReqFilterValue(0), -1);
                    break;
                case FieldMeta.CHECKBOX:
                    CheckBoxData checkboxData = new CheckBoxData(fieldName, null);
                    String checkboxValue = filter.getReqFilterValue(0);
                    if(checkboxValue != null)
                        checkboxData.setChecked(checkboxValue.equals("1"));

                    fieldData = checkboxData;
                    break;
                case FieldMeta.ENTITYREFERENCE:
                    EntityReferenceData entityData = new EntityReferenceData(fieldName);
                    try {
                        entityData.setSelectedRowID(Long.valueOf(filter.getReqFilterValue(0)));
                    } catch (NumberFormatException e) {
                        entityData.setSelectedFilter(filter.getReqFilterText(0));
                    }
                    break;
// TODO implement code below later
                case FieldMeta.DATEFIELD:
                    break;
                case FieldMeta.ENTITYLINK:
                    break;
                case FieldMeta.HISTORY:
                    break;
                case FieldMeta.IN_FORM_GRID: // ???
                    break;
                case FieldMeta.MULTISELECT:
                    break;
            }
        } else {
            logger.WARN("Unable to find metadata for field name=" + filter.getName()
                    + ", entity=" + filter.getEntity() + ", formid=" + filter.getFormid());
        }

        return fieldData;
    }
//  TODO move methods to the EntityFacade }}}

    private static String getChartParameter(ChartParams params, String paramName){
        for (ChartParam param : params.getChartParam()) {
            if(param.getName().equalsIgnoreCase(paramName))
                return param.getValue();
        }
        return null;
    }
    
    private static Chart transformJEOToJXB(ChartObject jeo){
        // Get the escaped XML report request and XSL style parameters.
// TODO review commented code after ChartTool realization
//        String bodyString = StringHelper.clearXml(StringHelper.unEscape(
//                StringHelper.unEscapeUnicode(new String(jeo.getBody()))), false);
        String bodyString = StringHelper.clearXml(
                StringHelper.unEscapeUnicode(new String(jeo.getBody())), false);

        return (Chart) XMLHelper.getParsedObject(
                Chart.class, new CharArrayReader(bodyString.toCharArray()));
    }

}

⌨️ 快捷键说明

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