package org.kisst.flow4j.file; import java.io.File; import java.util.Map; import org.kisst.flow4j.FlowRegistry; import org.kisst.flow4j.Task; import org.kisst.flow4j.TaskStore; import org.kisst.props4j.SimpleProps; import org.kisst.util.FileUtil; public class FileTaskStore implements TaskStore { private final FlowRegistry flowregistry; private final File baseDir; public FileTaskStore(FlowRegistry flowregistry, File baseDir) { this.flowregistry=flowregistry; this.baseDir = baseDir; } public Task getTask(String id) { File f=new File(baseDir, id+".task"); if (! f.exists()) throw new RuntimeException("No task with id "+id+" (should be file named "+f+")"); SimpleProps props=new SimpleProps(); props.load(f); return new Task(flowregistry, props); } public Map<String, String> getTasks() { // TODO Auto-generated method stub return null; } public void save(Task task) { File f=new File(baseDir, task.getId()+".task"); File backup=null; if (f.exists()) { backup=new File(baseDir, task.getId()+".task.bu"); if (backup.exists()) throw new RuntimeException("backup file "+backup+" still exists, will not save over this file"); f.renameTo(backup); } FileUtil.saveString(f, task.toString()); if (backup!=null) backup.delete(); } }