package Builder;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import Window.MOCBuilder;
public class AutoSaveManager {
private final String DefaultFilepath = BuilderConfigurationManager.getDefaultDataDirectoryPath()+"autoSave.ldr";
private static AutoSaveManager _instance = null;
private boolean isTerminate = false;
private MOCBuilder builder = null;
private AutoSaveManager() {
}
public boolean isExistAutoSaveFile() {
File file = new File(DefaultFilepath);
return file.exists();
}
public void loadAutoSavedFile() {
if (builder == null)
builder = MOCBuilder.getInstance();
if (isExistAutoSaveFile()) {
builder.openFile(DefaultFilepath);
builder.getWorkingLDrawFile().setPath(null);
}
}
public void start() {
new Thread(new Runnable() {
@Override
public void run() {
long lastRunTime = System.currentTimeMillis();
while (isTerminate == false) {
if (System.currentTimeMillis() - lastRunTime > 10000) {// 10
// sec.
autoSave();
lastRunTime = System.currentTimeMillis();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
terminate();
}
}).start();
}
public synchronized static AutoSaveManager getInstance() {
if (_instance == null)
_instance = new AutoSaveManager();
return _instance;
}
public void terminate() {
isTerminate = true;
File file = new File(DefaultFilepath);
file.delete();
}
private void autoSave() {
if (builder == null)
builder = MOCBuilder.getInstance();
File file = new File(DefaultFilepath);
try {
file.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
isTerminate = true;
return;
}
FileOutputStream fos;
try {
String str = builder.getWorkingLDrawFile().write();
fos = new FileOutputStream(file);
fos.write(str.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}