From 0d29b65ffa9d7d5f09289fc0687e8b51e3197598 Mon Sep 17 00:00:00 2001 From: factorsofx Date: Thu, 6 Jul 2017 19:19:37 -0400 Subject: [PATCH] Adds autosave daemon thread that saves all loaded maps once a minute --- .../monster860/fastdmm/AutosaveDaemon.java | 44 +++++++++++++++++++ .../github/monster860/fastdmm/FastDMM.java | 3 ++ 2 files changed, 47 insertions(+) create mode 100644 src/main/java/com/github/monster860/fastdmm/AutosaveDaemon.java diff --git a/src/main/java/com/github/monster860/fastdmm/AutosaveDaemon.java b/src/main/java/com/github/monster860/fastdmm/AutosaveDaemon.java new file mode 100644 index 0000000..0f78075 --- /dev/null +++ b/src/main/java/com/github/monster860/fastdmm/AutosaveDaemon.java @@ -0,0 +1,44 @@ +package com.github.monster860.fastdmm; + +import javax.swing.*; +import java.io.FileNotFoundException; + +public class AutosaveDaemon implements Runnable +{ + private FastDMM editor; + + public AutosaveDaemon(FastDMM editor) + { + this.editor = editor; + } + + @Override + public void run() + { + while(true) + { + try + { + Thread.sleep(60000); + synchronized(editor) + { + editor.loadedMaps.forEach((dmm) -> + { + try + { + dmm.save(); + } + catch(FileNotFoundException e) + { + JOptionPane.showMessageDialog(editor, "Got FileNotFoundException while saving " + dmm.file.getName(), "Error", JOptionPane.ERROR_MESSAGE); + } + }); + } + } + catch(InterruptedException e) + { + Thread.currentThread().interrupt(); + } + } + } +} diff --git a/src/main/java/com/github/monster860/fastdmm/FastDMM.java b/src/main/java/com/github/monster860/fastdmm/FastDMM.java index 8e1296e..e2ff860 100644 --- a/src/main/java/com/github/monster860/fastdmm/FastDMM.java +++ b/src/main/java/com/github/monster860/fastdmm/FastDMM.java @@ -696,6 +696,9 @@ private void init() throws LWJGLException { if (interface_dmi != null) { interface_dmi.createGL(); } + Thread autosaveThread = new Thread(new AutosaveDaemon(this)); + autosaveThread.setDaemon(true); + autosaveThread.start(); } private Map dmis = new HashMap<>();