Browse Source

Pull request #1: REPORT-111337 【设计器性能】设计器卡顿优化

Merge in ~DESTINY.LIN/design from Fix-lag to fix-lag

* commit '4c6f5c6179cc9b0d38f62848a51400f9ddc054e0':
  REPORT-111337 【设计器性能】缓存方案代码规范
  REPORT-111337 【设计器性能】缓存方案
  REPORT-111337 【设计器性能】设计器卡顿优化 打开模板优化
  REPORT-111337 【设计器性能】设计器卡顿优化 模板主题+撤销重做优化
  REPORT-111337 【设计器性能】设计器卡顿优化 保存模板优化
  REPORT-111337 【设计器性能】设计器卡顿优化 目录树搜索功能优化去除多余提交
  REPORT-111337 【设计器性能】设计器卡顿优化 目录树搜索功能优化
fix-lag
Destiny.Lin-林锦龙 4 months ago
parent
commit
f90ac3799d
  1. 9
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataSourceOP.java
  2. 7
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  3. 6
      designer-base/src/main/java/com/fr/design/gui/itree/filetree/ReportletPane.java
  4. 2
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java
  5. 2
      designer-base/src/main/java/com/fr/design/worker/open/OpenWorker.java
  6. 2
      designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java
  7. 4
      designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java
  8. 12
      designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java
  9. 2
      designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

9
designer-base/src/main/java/com/fr/design/data/datapane/TableDataSourceOP.java

@ -138,10 +138,11 @@ public class TableDataSourceOP implements UserObjectOP<TableDataWrapper> {
Map<String, TableDataWrapper> templateDataMap;
Map<String, TableDataWrapper> serverDataMap;
Map<String, TableDataWrapper> storeProcedureMap;
templateDataMap = this.init().get(0);
serverDataMap = this.init().get(1);
storeProcedureMap = this.init().get(2);
// init涉及到RPC,不要滥用
List<Map<String, TableDataWrapper>> initList = this.init();
templateDataMap = initList.get(0);
serverDataMap = initList.get(1);
storeProcedureMap = initList.get(2);
//所有的数据集
List<ExpandMutableTreeNode> list = new ArrayList<>();

7
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java

@ -11,6 +11,8 @@ import com.fr.data.impl.MultiFieldTableData;
import com.fr.data.impl.MultiTDTableData;
import com.fr.data.impl.RecursionTableData;
import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.workspace.base.WorkspaceConstants;
import com.fr.workspace.server.remote.RemoteCacheAttributeManager;
import com.fr.design.data.datapane.TableDataNameObjectCreator;
import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.ClassTableDataPane;
@ -26,8 +28,6 @@ import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.authority.user.UserAuthority;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
@ -177,8 +177,7 @@ public abstract class TableDataFactory {
public static String[] getSortOfChineseNameOfServerData(TableDataConfig tableDataConfig) {
clearAll();
try {
UserAuthority userAuthority = WorkContext.getCurrent().get(UserAuthority.class);
Iterator<String> nameIt = userAuthority.getAuthServerDataSetNames().iterator();
Iterator<String> nameIt = (Iterator<String>) RemoteCacheAttributeManager.getInstance().getValue(WorkspaceConstants.AUTHOR_SERVER_DATA_IT);
while (nameIt.hasNext()) {
String name = nameIt.next();
addName(name, tableDataConfig.getTableData(name));

6
designer-base/src/main/java/com/fr/design/gui/itree/filetree/ReportletPane.java

@ -1,6 +1,7 @@
package com.fr.design.gui.itree.filetree;
import com.fr.design.dialog.BasicPane;
import com.fr.design.file.TemplateTreePane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.layout.FRGUIPaneFactory;
@ -93,8 +94,9 @@ public class ReportletPane extends BasicPane {
* 刷新Env
*/
public void refreshEnv() {
this.templateReportletTree.refreshEnv();
// 直接复用模板树的数据
TemplateFileTree tree = TemplateTreePane.getInstance().getTemplateFileTree();
this.templateReportletTree.setModel(tree.getModel());
this.classReportletTree.refreshEnv();
}

2
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java

@ -463,7 +463,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
// 交换层级
searchToolbarPane.switchPane(TemplateTreeSearchToolbarPane.SEARCH_PANE);
refreshRightToolBarByContentPaneType();
TemplateTreePane.getInstance().refreshDockingView();
// 这边没啥必要再刷新TemplateTreePane了,正常是改变Env需要重新加载目录树才刷新的,搜索直接搜原来的
TemplateTreeSearchManager.getInstance().switchToSearch(TemplateTreePane.getInstance().getTemplateFileTree());
}
}

2
designer-base/src/main/java/com/fr/design/worker/open/OpenWorker.java

@ -37,7 +37,7 @@ import java.util.concurrent.TimeoutException;
*/
public class OpenWorker<T> extends SwingWorker<T, Void> {
private static final int TIME_OUT = 400;
private static final int TIME_OUT = 100;
private final Callable<T> callable;

2
designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java

@ -26,7 +26,7 @@ import javax.swing.SwingWorker;
*/
public class SaveWorker extends SwingWorker<Boolean, Void> {
private static final int TIME_OUT = 400;
private static final int TIME_OUT = 100;
private final Callable<Boolean> callable;

4
designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java

@ -814,7 +814,7 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
}
reportComposite.setSelectedIndex(u.getSelectedReportIndex());
u.getSelectedEditingState().revert();
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView();
TableDataTreePane.getInstanceWithoutRefreshEverytime(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView();
}
this.undoState = u;
} else {
@ -1319,7 +1319,7 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
if (HistoryTemplateListCache.getInstance().getCurrentEditingTemplate() == this) {
fireTargetModified(shouldCreateUndoState);
reportComposite.setSelectedIndex(reportComposite.getSelectedIndex());
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView();
TableDataTreePane.getInstanceWithoutRefreshEverytime(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView();
DesignerContext.getDesignerFrame().resetToolkitByPlus(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate());
// 刷新参数面板界面
populateReportParameterAttr();

12
designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java

@ -33,6 +33,7 @@ import com.fr.workspace.Workspace;
import com.fr.workspace.base.WorkspaceConstants;
import com.fr.workspace.connect.WorkspaceConnectionInfo;
import com.fr.workspace.engine.exception.WorkspaceConnectionException;
import com.fr.workspace.server.remote.RemoteCacheAttributeManager;
import com.fr.workspace.server.socket.CustomLogEvent;
import com.fr.workspace.server.socket.LogEventConverter;
import io.socket.client.IO;
@ -118,6 +119,7 @@ public class DesignerSocketIO {
socket = IO.socket(new URI(connectionInfo.getUri()), connectionInfo.getSocketConfig().createOptions());
socket.on(WorkspaceConstants.WS_LOGRECORD, printLog);
socket.on(WorkspaceConstants.CONFIG_MODIFY, modifyConfig);
socket.on(WorkspaceConstants.AUTHOR_SERVER_DATA_IT, MODIFY_AUTHOR_SERVER_DATA_IT);
socket.on(Socket.EVENT_CONNECT_ERROR, failRetry);
socket.on(Socket.EVENT_DISCONNECT, disConnectHint);
socket.on(Socket.EVENT_CONNECT, handleConnect);
@ -183,6 +185,7 @@ public class DesignerSocketIO {
if (disConnectHintTimer != null) {
FineLoggerFactory.getLogger().info("cancel disConnectHintTimer");
disConnectHintTimer.cancel();
RemoteCacheAttributeManager.getInstance().stopPolling();
}
}
};
@ -201,6 +204,7 @@ public class DesignerSocketIO {
dealWithSocketDisconnect();
}
status = Status.Disconnected;
RemoteCacheAttributeManager.getInstance().startPolling();
}
};
@ -311,6 +315,14 @@ public class DesignerSocketIO {
}
};
private static final Emitter.Listener MODIFY_AUTHOR_SERVER_DATA_IT = new Emitter.Listener() {
@Override
public void call(Object... objects) {
FineLoggerFactory.getLogger().info("[AuthServerDataSetNamesIt] update server data author");
RemoteCacheAttributeManager.getInstance().updateValue(WorkspaceConstants.AUTHOR_SERVER_DATA_IT);
}
};
private static void printLog(Object[] objects, PrintEventLog printEventLog, String prefix) {
for (Object object : objects) {
if (object instanceof Throwable) {

2
designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

@ -145,6 +145,7 @@ import com.fr.start.common.DesignerStartupExecutor;
import com.fr.start.common.DesignerStartupPool;
import com.fr.task.Once;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.remote.RemoteCacheAttributeManager;
import com.fr.xml.ReportXMLUtils;
import javax.swing.SwingWorker;
@ -205,6 +206,7 @@ public class DesignerActivator extends Activator implements Prepare {
}
}, SupportOSImpl.BBS_USER_LOGIN_PANE);
loadLogAppender();
RemoteCacheAttributeManager.getInstance().updateAllValue();
DesignerSocketIO.update();
DesignerWorkspaceLoader.init();
storePassport();

Loading…
Cancel
Save