Browse Source

REPORT-44410 远程设计数据集点击确认卡顿

bugfix/10.0
hades 4 years ago
parent
commit
b141d258f6
  1. 86
      designer-base/src/main/java/com/fr/design/DesignModelAdapter.java
  2. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  3. 23
      designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java
  4. 35
      designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java

86
designer-base/src/main/java/com/fr/design/DesignModelAdapter.java

@ -1,8 +1,11 @@
package com.fr.design; package com.fr.design;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.ParameterConfig;
import com.fr.base.TableData;
import com.fr.base.io.BaseBook; import com.fr.base.io.BaseBook;
import com.fr.data.TableDataSource; import com.fr.data.TableDataSource;
import com.fr.data.operator.DataOperator;
import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
@ -11,9 +14,14 @@ import com.fr.form.ui.DataControl;
import com.fr.form.ui.MultiFileEditor; import com.fr.form.ui.MultiFileEditor;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.Filter;
import com.fr.stable.ParameterProvider;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.js.WidgetName; import com.fr.stable.js.WidgetName;
import com.fr.util.ParameterApplyHelper;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -40,7 +48,7 @@ public abstract class DesignModelAdapter<T extends BaseBook, S extends JTemplate
/** /**
* 全部的参数包括全局参数模板参数和数据集参数 * 全部的参数包括全局参数模板参数和数据集参数
*/ */
private Parameter[] parameters; protected Parameter[] parameters;
/** /**
* 数据集参数 * 数据集参数
@ -52,6 +60,12 @@ public abstract class DesignModelAdapter<T extends BaseBook, S extends JTemplate
*/ */
private Parameter[] templateParameters; private Parameter[] templateParameters;
/**
* 数据集参数缓存 更新时刷新
*/
protected Map<String, ParameterProvider[]> tableDataParametersMap = new HashMap<>();
public DesignModelAdapter(S jTemplate) { public DesignModelAdapter(S jTemplate) {
this.jTemplate = jTemplate; this.jTemplate = jTemplate;
@ -241,6 +255,71 @@ public abstract class DesignModelAdapter<T extends BaseBook, S extends JTemplate
} }
protected void addTableDataParameters(Map<String, ParameterProvider> map, Filter<ParameterProvider> filter) {
Iterator<String> it = this.getBook().getTableDataNameIterator();
try {
// 清空下缓存
tableDataParametersMap.clear();
while (it.hasNext()) {
String name = it.next();
TableData tableData = this.getBook().getTableData(name);
ParameterProvider[] parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData);
if (filter != null) {
ParameterApplyHelper.addPara2Map(map, parameterProviders, filter);
} else {
ParameterApplyHelper.addPara2Map(map, parameterProviders);
}
tableDataParametersMap.put(name, parameterProviders);
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
protected void updateTableDataParameters(String oldName,
String tdName,
TableData tableData,
Map<String, ParameterProvider> map,
Filter<ParameterProvider> filter) {
// 更新下缓存名称 替换下数据集名称
ParameterProvider[] providers = tableDataParametersMap.remove(oldName);
if (providers != null) {
tableDataParametersMap.put(tdName, providers);
}
try {
for (Map.Entry<String, ParameterProvider[]> entry : tableDataParametersMap.entrySet()) {
ParameterProvider[] parameterProviders;
if (ComparatorUtils.equals(entry.getKey(), tdName)) {
parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData);
// 用来更新缓存
providers = parameterProviders;
} else {
parameterProviders = entry.getValue();
}
if (filter != null) {
ParameterApplyHelper.addPara2Map(map, parameterProviders, filter);
} else {
ParameterApplyHelper.addPara2Map(map, parameterProviders);
}
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
// 更新缓存
tableDataParametersMap.put(tdName, providers);
}
protected void addGlobalParameters(Map<String, ParameterProvider> map) {
// 添加全局参数
Parameter[] glbParas = ParameterConfig.getInstance().getGlobalParameters();
ParameterApplyHelper.addPara2Map(map, glbParas);
}
/** /**
* 环境改变. * 环境改变.
*/ */
@ -251,6 +330,11 @@ public abstract class DesignModelAdapter<T extends BaseBook, S extends JTemplate
*/ */
public abstract void parameterChanged(); public abstract void parameterChanged();
/**
* 数据集参数改变
*/
public abstract void tableDataParametersChanged(String oldName, String tdName, TableData tableData);
/** /**
* 控件配置改变. * 控件配置改变.
*/ */

4
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -228,7 +228,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
} }
fireDSChanged(map); fireDSChanged(map);
tc.fireTargetModified(); tc.fireTargetModified();
tc.parameterChanged(); tc.tableDataParametersChanged(oldName, tdName, td);
int[] rows = dataTree.getSelectionRows(); int[] rows = dataTree.getSelectionRows();
dataTree.refreshChildByName(tdName); dataTree.refreshChildByName(tdName);
dataTree.setSelectionRows(rows); dataTree.setSelectionRows(rows);
@ -366,7 +366,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
} }
fireDSChanged(map); fireDSChanged(map);
tc.fireTargetModified(); tc.fireTargetModified();
tc.parameterChanged(); tc.tableDataParametersChanged(oldName, tdName, td);
int[] rows = dataTree.getSelectionRows(); int[] rows = dataTree.getSelectionRows();
dataTree.refreshChildByName(tdName); dataTree.refreshChildByName(tdName);
dataTree.setSelectionRows(rows); dataTree.setSelectionRows(rows);

23
designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java

@ -11,11 +11,15 @@ import com.fr.form.ui.BaseChartEditor;
import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.script.Calculator; import com.fr.script.Calculator;
import com.fr.stable.EmbParaFilter;
import com.fr.stable.ParameterProvider; import com.fr.stable.ParameterProvider;
import com.fr.stable.js.WidgetName; import com.fr.stable.js.WidgetName;
import com.fr.util.ParameterApplyHelper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class FormModelAdapter extends DesignModelAdapter<Form, BaseJForm<Form>> { public class FormModelAdapter extends DesignModelAdapter<Form, BaseJForm<Form>> {
@ -42,6 +46,16 @@ public class FormModelAdapter extends DesignModelAdapter<Form, BaseJForm<Form>>
jTemplate.populateParameter(); jTemplate.populateParameter();
} }
@Override
public void tableDataParametersChanged(String oldName, String tdName, TableData tableData) {
Map<String, ParameterProvider> map = new HashMap<>();
addGlobalParameters(map);
updateTableDataParameters(oldName, tdName, tableData, map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider));
ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters());
parameters = map.values().toArray(new Parameter[0]);
jTemplate.populateParameter();
}
/** /**
* 控件配置改变. * 控件配置改变.
*/ */
@ -135,6 +149,13 @@ public class FormModelAdapter extends DesignModelAdapter<Form, BaseJForm<Form>>
@Override @Override
protected Parameter[] getLatestParameters() { protected Parameter[] getLatestParameters() {
return this.getBook().getParameters(); Map<String, ParameterProvider> map = new HashMap<>();
addGlobalParameters(map);
addTableDataParameters(map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider));
ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters());
return map.values().toArray(new Parameter[0]);
} }
} }

35
designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java

@ -18,9 +18,12 @@ import com.fr.stable.StringUtils;
import com.fr.stable.bridge.StableFactory; import com.fr.stable.bridge.StableFactory;
import com.fr.stable.js.WidgetName; import com.fr.stable.js.WidgetName;
import com.fr.util.ParameterApplyHelper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author zhou * @author zhou
@ -72,6 +75,18 @@ public class WorkBookModelAdapter extends DesignModelAdapter<WorkBook, JWorkBook
jTemplate.populateReportParameterAttr(); jTemplate.populateReportParameterAttr();
} }
@Override
public void tableDataParametersChanged(String oldName, String tdName, TableData tableData) {
Map<String, ParameterProvider> map = new HashMap<>();
addGlobalParameters(map);
updateTableDataParameters(oldName, tdName, tableData, map, null);
addReportParameters(map);
parameters = map.values().toArray(new Parameter[0]);
jTemplate.updateReportParameterAttr();
jTemplate.populateReportParameterAttr();
}
/** /**
* 控件改变. * 控件改变.
*/ */
@ -107,9 +122,27 @@ public class WorkBookModelAdapter extends DesignModelAdapter<WorkBook, JWorkBook
@Override @Override
protected Parameter[] getLatestParameters() { protected Parameter[] getLatestParameters() {
return this.getBook().getParameters(); Map<String, ParameterProvider> map = new HashMap<>();
addGlobalParameters(map);
addTableDataParameters(map, null);
addReportParameters(map);
return map.values().toArray(new Parameter[0]);
}
private void addReportParameters(Map<String, ParameterProvider> map) {
// 添加模板参数
ReportParameterAttr parameterAttr = this.getBook().getReportParameterAttr();
if (parameterAttr != null) {
ParameterApplyHelper.addPara2Map(map, parameterAttr.getParameters());
}
} }
/** /**
* 返回控件的名字 * 返回控件的名字
* *

Loading…
Cancel
Save