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) {
}
}
}
}