📄 chartdatamanager.java
字号:
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 + -