package comeon.model; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import java.io.BufferedReader; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; public class Template { private final String name; private final String description; private final Path file; private final Charset charset; private String templateText; private final TemplateKind kind; public Template(final String name, final String description, final Path file, final Charset charset, final TemplateKind kind) throws IOException { this.name = name; this.description = description; this.file = file; this.charset = charset; this.kind = kind; this.load(); } public String getName() { return name; } public String getDescription() { return description; } public Path getFile() { return file; } public Charset getCharset() { return charset; } public String getTemplateText() { return templateText; } public TemplateKind getKind() { return kind; } public void load() throws IOException { try (final BufferedReader reader = Files.newBufferedReader(file, charset)) { final StringBuilder buffer = new StringBuilder((int) Files.size(file)); String line; while ((line = reader.readLine()) != null) { buffer.append(line); buffer.append('\n'); } this.templateText = buffer.toString(); } } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) .append("name", name) .append("file", file) .append("charset", charset) .append("kind", kind) .toString(); } }