/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ /** * */ package sk.seges.acris.json.server.migrate; import javax.script.ScriptException; import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * Class containing logic for every transformer written. * * @param <T> Represents type of transformation used (e.g. File with * transformation script or String with transformation script class) * @author ladislav.gazo */ public abstract class Transformer<T> { protected final InputStream inputStream; protected List<Class<? extends JacksonTransformationScript>> transforms; public Transformer(InputStream inputStream) throws ScriptException, FileNotFoundException { this.inputStream = inputStream; transforms = new ArrayList<Class<? extends JacksonTransformationScript>>(); } public abstract byte[] transform(Class<? extends JacksonTransformationScript> transformationClass, ByteArrayInputStream input); public void addTransform(Class<? extends JacksonTransformationScript> clazz) { transforms.add(clazz); } public abstract byte[] process() throws IOException; }