TemplateKind.java
package pro.verron.officestamper;
import pro.verron.officestamper.api.OfficeStamperConfiguration;
import pro.verron.officestamper.api.OfficeStamperException;
import java.io.InputStream;
import java.io.OutputStream;
import static pro.verron.officestamper.experimental.ExperimentalStampers.pptxStamper;
import static pro.verron.officestamper.preset.OfficeStampers.docxStamper;
enum TemplateKind {
WORD {
@Override
void stamp(InputStream templateStream, Object context, OfficeStamperConfiguration configuration, OutputStream os) {
docxStamper(configuration).stamp(templateStream, context, os);
}
}, POWERPOINT {
@Override
void stamp(InputStream templateStream, Object context, OfficeStamperConfiguration configuration, OutputStream os) {
pptxStamper().stamp(templateStream, context, os);
}
};
static TemplateKind templateKind(String templatePath) {
var lower = templatePath.toLowerCase();
if (lower.endsWith(".docx")) return WORD;
if (lower.endsWith(".pptx")) return POWERPOINT;
var msg = "Unsupported template type (expected .docx or .pptx): %s";
throw new OfficeStamperException(msg.formatted(templatePath));
}
abstract void stamp(InputStream templateStream, Object context, OfficeStamperConfiguration configuration, OutputStream os);
}