001package org.intellimate.izou.sdk.output;
002
003import com.google.common.reflect.TypeToken;
004import org.intellimate.izou.events.EventModel;
005import org.intellimate.izou.sdk.Context;
006
007import java.util.List;
008
009/**
010 * an OutputPlugin without an Argument
011 * @param <T> the return type
012 * @author Leander Kurscheidt
013 * @version 1.0
014 */
015public abstract class OutputPlugin<T> extends OutputPluginArgument<Object, T> {
016    /**
017     * creates a new output-plugin with a new id
018     *
019     * @param context context
020     * @param id      the id of the new output-plugin
021     */
022    public OutputPlugin(Context context, String id) {
023        super(context, id);
024    }
025
026
027
028    /**
029     * returns the Type of the argument for the OutputExtensions, or null if none
030     *
031     * @return the type of the Argument
032     */
033    @Override
034    public TypeToken<Object> getArgumentType() {
035        return null;
036    }
037
038    /**
039     * returns the argument for the OutputExtensions
040     *
041     * @return the argument
042     */
043    @Override
044    public Object getArgument() {
045        return null;
046    }
047
048    /**
049     * method that uses the data from the OutputExtensions to generate a final output that will then be rendered.
050     *
051     * @param data the data generated
052     * @param eventModel the Event which caused the whole thing
053     */
054    @Override
055    public abstract void renderFinalOutput(List<T> data, EventModel eventModel);
056}