diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsRecycleSettingHelper.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsRecycleSettingHelper.java new file mode 100644 index 0000000000..3e6a5bab96 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsRecycleSettingHelper.java @@ -0,0 +1,49 @@ +package com.fr.design.mainframe.vcs; + +import com.fr.concurrent.NamedThreadFactory; +import com.fr.transaction.Configurations; +import com.fr.transaction.WorkerAdaptor; +import com.fr.workspace.WorkContext; +import com.fr.workspace.server.vcs.VcsConfig; +import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoCleanOperator; +import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoCleanService; +import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoRecycleSchedule; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 版本管理界面配置回收事件的处理类 + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/7/21 + */ +public class VcsRecycleSettingHelper { + + private static ExecutorService executorService = Executors.newSingleThreadExecutor(new NamedThreadFactory("VcsRecycle")); + + + /** + * 更新任务 + * + * @param day + */ + public static void updateJob(int day) { + executorService.execute(new Runnable() { + @Override + public void run() { + Configurations.update(new WorkerAdaptor(VcsConfig.class) { + @Override + public void run() { + VcsConfig.getInstance().setV2CleanRecycleInterval(day); + } + }); + WorkContext.getCurrent().get(VcsAutoCleanOperator.class).addOrUpdateVcsAutoCleanJob( + VcsAutoCleanService.VCS_AUTO_CLEAN_RECYCLE_JOB_NAME, + 1, + VcsAutoRecycleSchedule.class); + } + }); + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/RecycleSettingPane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/RecycleSettingPane.java index 7c41e64f2c..0653aad05f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/RecycleSettingPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/RecycleSettingPane.java @@ -9,13 +9,8 @@ import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.VerticalFlowLayout; -import com.fr.transaction.Configurations; -import com.fr.transaction.WorkerAdaptor; -import com.fr.workspace.WorkContext; +import com.fr.design.mainframe.vcs.VcsRecycleSettingHelper; import com.fr.workspace.server.vcs.VcsConfig; -import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoCleanOperator; -import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoCleanService; -import com.fr.workspace.server.vcs.v2.scheduler.VcsAutoRecycleSchedule; import javax.swing.JPanel; import javax.swing.ScrollPaneConstants; @@ -89,18 +84,7 @@ public class RecycleSettingPane extends BasicPane { button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - new Thread(() -> { - Configurations.update(new WorkerAdaptor(VcsConfig.class) { - @Override - public void run() { - VcsConfig.getInstance().setV2CleanRecycleInterval((int) spinner.getValue()); - } - }); - WorkContext.getCurrent().get(VcsAutoCleanOperator.class).addOrUpdateVcsAutoCleanJob( - VcsAutoCleanService.VCS_AUTO_CLEAN_RECYCLE_JOB_NAME, - 1, - VcsAutoRecycleSchedule.class); - }).start(); + VcsRecycleSettingHelper.updateJob((int) spinner.getValue()); } }); }