package com.framsticks.dumping; import com.framsticks.core.LocalInstance; import com.framsticks.core.Path; import com.framsticks.core.Instance; import com.framsticks.params.annotations.FramsClassAnnotation; import com.framsticks.params.annotations.ParamAnnotation; import com.framsticks.util.dispatching.Future; import com.framsticks.util.io.Encoding; import org.apache.log4j.Logger; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.annotation.OverridingMethodsMustInvokeSuper; /** * @author Piotr Sniegowski */ @FramsClassAnnotation public class FileInstance extends LocalInstance { private static final Logger log = Logger.getLogger(Instance.class.getName()); protected File file; public FileInstance() { } @ParamAnnotation public void setFilename(String filename) { file = new File(filename); } @ParamAnnotation public String getFilename() { return file.getName(); } @Override @OverridingMethodsMustInvokeSuper protected void firstTask() { assert isActive(); super.firstTask(); try { LoadStream stream = new LoadStream(this.getRootPath(), new BufferedReader(new InputStreamReader(new FileInputStream(file), Encoding.getFramsticksCharset())), this, new Future() { @Override public void result(Path result, Exception e) { if (e != null) { log.error("failed to load file instance " + FileInstance.this + ": " + e); fireRun(e); return; } log.info("loaded file instance " + FileInstance.this); fireRun(null); } }); stream.load(); } catch (IOException e) { log.error("io failure: " + e); fireRun(e); } } @Override public String toString() { return "file@" + file.getName(); } }