package ender.timer; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class TimerController extends Thread { private static TimerController instance; public List<Timer> timers; private Properties options; public static TimerController getInstance() { if (instance == null) { instance = new TimerController(); } return instance; } public TimerController() { super("Timer Thread"); options = new Properties(); timers = new ArrayList<Timer>(); start(); } // Thread main process @Override public void run() { while (true) { synchronized (timers) { for (Timer timer : timers) { if ((timer.isWorking()) && (timer.update())) { timer.stop(); } } } try { sleep(1000); } catch (InterruptedException e) { } } } public void add(Timer timer) { synchronized (timers) { timers.add(timer); } } public void remove(Timer timer) { synchronized (timers) { timers.remove(timer); } } public void load() { synchronized (options) { try { options.load(new FileInputStream("timers.conf")); synchronized (timers) { timers.clear(); for (Object key : options.keySet()) { String str = key.toString(); if (str.indexOf("Name") > 0) { continue; } String tmp[] = options.getProperty(str).split(","); try { int start = Integer.parseInt(tmp[0]); int time = Integer.parseInt(tmp[1]); String name = options.getProperty(str + "Name"); new Timer(start, time, name); } catch (Exception e) { } } } } catch (FileNotFoundException e) { } catch (IOException e) { } } } public void save() { int i = 0; synchronized (options) { options.clear(); synchronized (timers) { for (Timer timer : timers) { options.setProperty("Timer" + i, String.format("%d,%d", timer.getStart(), timer.getTime())); options.setProperty("Timer" + i + "Name", timer.getName()); i++; } } try { options.store(new FileOutputStream("timers.conf"), "Timers config"); } catch (FileNotFoundException e) { } catch (IOException e) { } } } }