package tw.com.pictures.dot; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.amazonaws.services.ec2.model.Vpc; public class FileRecorder implements Recorder { private static final Logger logger = LoggerFactory.getLogger(FileRecorder.class); StringBuilder builder; private FileWriter fw; private Path folder; public FileRecorder(Path folder) { this.folder = folder; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; FileRecorder other = (FileRecorder) obj; if (folder == null) { if (other.folder != null) return false; } else if (!folder.equals(other.folder)) return false; return true; } @Override public void write(String string) { builder.append(string); } @Override public void writeline(String string) { builder.append(string); builder.append("\n"); } @Override public void writeLabel(String label) { builder.append(String.format("label = \"%s\";", label)); builder.append("\n"); } @Override public String toString() { return builder.toString(); } @Override public void beginFor(Vpc vpc, String prefix) throws IOException { builder = new StringBuilder(); String diagramFilename = prefix+vpc.getVpcId()+".dot"; Path target = Paths.get(folder.toString(), diagramFilename); logger.info(">>>>> Saving to " + target.toAbsolutePath()); if (!Files.exists(folder)) { logger.warn("Target folder is missing, creating " + folder); Files.createDirectory(folder); } fw = new FileWriter(target.toFile()); } @Override public void end() throws IOException { fw.append(builder.toString()); fw.close(); } }