Browse Source

REPORT-135233 调整TplOperator

fbp/merge
Destiny.Lin 4 months ago
parent
commit
cfc6528297
  1. 26
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  2. 15
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  3. 9
      designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsCacheFileNodeFile.java
  4. 14
      designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java

26
designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java

@ -1,6 +1,7 @@
package com.fr.design.file;
import com.fanruan.repository.TemplateRepository;
import com.fine.swing.ui.layout.Layouts;
import com.fine.swing.ui.layout.Row;
import com.fine.theme.icon.LazyIcon;
@ -11,8 +12,8 @@ import com.fr.base.vcs.DesignerMode;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.file.LocateAction;
import com.fr.design.cache.DesignCacheManager;
import com.fr.design.actions.template.NewWorkBookToolButtonAction;
import com.fr.design.cache.DesignCacheManager;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.fun.MenuHandler;
@ -37,20 +38,9 @@ import com.fr.general.IOUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.collections.combination.Pair;
import com.fr.third.javax.annotation.Nonnull;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
@ -66,9 +56,7 @@ import static com.fine.theme.utils.FineUIScale.scale;
import static com.fine.theme.utils.FineUIStyle.BUTTON_TAB_ACTION;
import static com.formdev.flatlaf.FlatClientProperties.BUTTON_TYPE;
import static com.fr.design.dialog.FineJOptionPane.showConfirmDialog;
import static javax.swing.JOptionPane.OK_CANCEL_OPTION;
import static javax.swing.JOptionPane.OK_OPTION;
import static javax.swing.JOptionPane.WARNING_MESSAGE;
import static javax.swing.JOptionPane.*;
/**
* 模版Tab组件
@ -413,7 +401,7 @@ public class MultiTemplateTabPane extends Row {
// 只有是环境内的文件,才执行释放锁
if (file != null && file.isEnvFile()) {
// release lock
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath());
TemplateRepository.getInstance().close(file.getPath());
}
}
}

15
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -2,6 +2,7 @@ package com.fr.design.mainframe;
import com.fanruan.datasource.web.bean.ConnectionAuthorityConfigBean;
import com.fanruan.product.ProductConstants;
import com.fanruan.repository.TemplateRepository;
import com.fine.theme.icon.LazyIcon;
import com.fr.base.Parameter;
import com.fr.base.TRL;
@ -100,17 +101,11 @@ import com.fr.stable.StringUtils;
import com.fr.stable.core.UUID;
import com.fr.widgettheme.designer.WidgetThemeDisplayAction;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator;
import com.fr.workspace.server.repository.connection.ConnectionRepository;
import com.fanruan.repository.TemplateRepository;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.*;
import javax.swing.undo.UndoManager;
import java.awt.BorderLayout;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.nio.file.Paths;
import java.util.Arrays;
@ -936,12 +931,12 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
// 目标本地文件
!editingFILE.isEnvFile() ||
// 目标远程文件
WorkContext.getCurrent().get(TplOperator.class).saveAs(editingFILE.getPath());
TemplateRepository.getInstance().saveAs(editingFILE.getPath());
if (lockedTarget) {
boolean saved = saveNewFile(editingFILE, oldName);
// 目标文件保存成功并且源文件不一致的情况下,把源文件锁释放掉
if (saved && !ComparatorUtils.equals(editingFILE.getPath(), sourceFile.getPath())) {
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(sourceFile.getPath());
TemplateRepository.getInstance().close(sourceFile.getPath());
}
return saved;
} else {

9
designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsCacheFileNodeFile.java

@ -1,14 +1,13 @@
package com.fr.design.mainframe.vcs.common;
import com.fr.io.FineEncryptUtils;
import com.fanruan.repository.TemplateRepository;
import com.fr.base.io.XMLEncryptUtils;
import com.fr.file.FileNodeFILE;
import com.fr.file.filetree.FileNode;
import com.fr.general.ComparatorUtils;
import com.fr.io.FineEncryptUtils;
import com.fr.stable.StableUtils;
import com.fr.workspace.WorkContext;
import com.fr.workspace.resource.WorkResourceOutputStream;
import com.fr.workspace.server.lock.TplOperator;
import com.fr.workspace.server.vcs.filesystem.VcsFileSystem;
import java.io.ByteArrayInputStream;
@ -43,9 +42,7 @@ public class VcsCacheFileNodeFile extends FileNodeFILE {
return null;
}
InputStream in = new ByteArrayInputStream(
WorkContext.getCurrent().get(TplOperator.class).readAndLockFile(
StableUtils.pathJoin(vcsCacheDir, envPath.substring(vcsCacheDir.length() + 1))
)
TemplateRepository.getInstance().open( StableUtils.pathJoin(vcsCacheDir, envPath.substring(vcsCacheDir.length() + 1)))
);
return envPath.endsWith(".cpt") || envPath.endsWith(".frm")

14
designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java

@ -1,5 +1,7 @@
package com.fr.design.utils;
import com.fanruan.product.ProductConstants;
import com.fanruan.repository.TemplateRepository;
import com.fr.base.extension.FileExtension;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.file.TemplateTreePane;
@ -15,13 +17,11 @@ import com.fr.file.filter.ChooseFileFilter;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils;
import com.fr.stable.CoreConstants;
import com.fanruan.product.ProductConstants;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator;
import org.jetbrains.annotations.Nullable;
import javax.swing.SwingWorker;
import javax.swing.*;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@ -141,7 +141,7 @@ public class TemplateUtils {
OutputStream out = null;
try {
// 加锁
boolean saveAsLock = WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath());
boolean saveAsLock = TemplateRepository.getInstance().saveAs(file.getPath());
if (!saveAsLock) {
// 加锁失败时,直接返回
throw new RuntimeException("[RemoteDesign] back up template file failed");
@ -155,7 +155,7 @@ public class TemplateUtils {
}
} finally {
// 解锁
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath());
TemplateRepository.getInstance().close(file.getPath());
}
}
return true;
@ -182,12 +182,12 @@ public class TemplateUtils {
//判断一下要保存的副本文件是否已打开
int index = HistoryTemplateListCache.getInstance().contains(file);
if (index != -1) {
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath());
TemplateRepository.getInstance().close(file.getPath());
needCloseTemplate.add(HistoryTemplateListCache.getInstance().getHistoryList().get(index));
}
if (JTemplate.isValid(template)) {
//给要关闭的模板解锁
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(template.getPath());
TemplateRepository.getInstance().close(template.getPath());
needCloseTemplate.add(template);
}
return needCloseTemplate;

Loading…
Cancel
Save