Browse Source

REPORT-91503 保存模板频繁报错锁定信息不一致,在这个弹窗另存为一定会失败。

代码格式化、注释等
release/11.0
Yvan-欧阳帆 1 year ago
parent
commit
be3c8395be
  1. 33
      designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java

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

@ -35,12 +35,12 @@ public class TemplateUtils {
/** /**
* 创建新的模板文件并打开模板 * 创建新的模板文件并打开模板
* *
* @param prefix 模板文件名称前缀 * @param prefix 模板文件名称前缀
* @param file 模板文件 * @param file 模板文件
* @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板
* 为true时以CurrentEditingTemplate为准创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板
* 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态 * 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态
* @param openNewTemplate 是否需要在创建后打开模板 * @param openNewTemplate 是否需要在创建后打开模板
*/ */
public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) { public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) {
createAndOpenTemplate(prefix, file, createByEditingTemplate, openNewTemplate, () -> {}); createAndOpenTemplate(prefix, file, createByEditingTemplate, openNewTemplate, () -> {});
@ -49,13 +49,13 @@ public class TemplateUtils {
/** /**
* 创建新的模板文件并打开模板并在创建备份模板成功后执行doAfterCreate * 创建新的模板文件并打开模板并在创建备份模板成功后执行doAfterCreate
* *
* @param prefix 模板文件名称前缀 * @param prefix 模板文件名称前缀
* @param file 模板文件 * @param file 模板文件
* @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板
* 为true时以CurrentEditingTemplate为准创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板
* 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态 * 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态
* @param openNewTemplate 是否需要在创建后打开模板 * @param openNewTemplate 是否需要在创建后打开模板
* @param doAfterCreateTemplate 创建备份模板成功后调用 * @param doAfterCreateTemplate 创建备份模板成功后调用
*/ */
public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) {
String fileName = file.getName(); String fileName = file.getName();
@ -65,7 +65,7 @@ public class TemplateUtils {
return; return;
} }
String suffix = fileName.substring(indexOfLastDot + 1); String suffix = fileName.substring(indexOfLastDot + 1);
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true);
fileChooserPane.setFileNameTextField(prefix + fileName, suffix); fileChooserPane.setFileNameTextField(prefix + fileName, suffix);
FileExtension fileExtension = FileExtension.parse(suffix); FileExtension fileExtension = FileExtension.parse(suffix);
fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File"))); fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File")));
@ -91,7 +91,7 @@ public class TemplateUtils {
protected Void doInBackground() throws Exception { protected Void doInBackground() throws Exception {
// 读取模板数据 // 读取模板数据
byte[] content = getTemplateData(createByEditingTemplate, oldPath); byte[] content = getTemplateData(createByEditingTemplate, oldPath);
try(OutputStream out = file.asOutputStream()) { try (OutputStream out = file.asOutputStream()) {
// 加锁 // 加锁
WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath());
out.write(content); out.write(content);
@ -124,19 +124,20 @@ public class TemplateUtils {
/** /**
* 读取模板文件数据 * 读取模板文件数据
* *
* @param readCurrentEditingTemplate 是否读取当前编辑模板 * @param readCurrentEditingTemplate 是否读取当前编辑模板
* @param path 模板路径 * @param path 模板路径
* @return * @return 模板文件数据
*/ */
private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception { private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception {
byte[] content = new byte[0]; byte[] content = new byte[0];
if (readCurrentEditingTemplate) { if (readCurrentEditingTemplate) {
// 从当前编辑模板中生成备份文件 // 从当前编辑模板中读取模板文件数据
JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (JTemplate.isValid(template)) { if (JTemplate.isValid(template)) {
content = template.exportData(); content = template.exportData();
} }
} else { } else {
// 从给定的模板路径中读取模板文件数据
content = WorkContext.getWorkResource().readFully(path); content = WorkContext.getWorkResource().readFully(path);
} }
if (ArrayUtils.isEmpty(content)) { if (ArrayUtils.isEmpty(content)) {

Loading…
Cancel
Save