package org.embulk.standards;
import com.google.common.base.Preconditions;
import com.google.inject.Binder;
import com.google.inject.Module;
import org.embulk.spi.FilterPlugin;
import org.embulk.spi.FormatterPlugin;
import org.embulk.spi.InputPlugin;
import org.embulk.spi.OutputPlugin;
import org.embulk.spi.ParserPlugin;
import org.embulk.spi.DecoderPlugin;
import org.embulk.spi.EncoderPlugin;
import org.embulk.plugin.PluginType;
import static org.embulk.plugin.InjectedPluginSource.registerPluginTo;
import static org.embulk.exec.GuessExecutor.registerDefaultGuessPluginTo;
public class StandardPluginModule
implements Module
{
@Override
public void configure(Binder binder)
{
Preconditions.checkNotNull(binder, "binder is null.");
// input plugins
registerPluginTo(binder, InputPlugin.class, "file", LocalFileInputPlugin.class);
// parser plugins
registerPluginTo(binder, ParserPlugin.class, "csv", CsvParserPlugin.class);
registerPluginTo(binder, ParserPlugin.class, "json", JsonParserPlugin.class);
// file decoder plugins
registerPluginTo(binder, DecoderPlugin.class, "gzip", GzipFileDecoderPlugin.class);
registerPluginTo(binder, DecoderPlugin.class, "bzip2", Bzip2FileDecoderPlugin.class);
// output plugins
registerPluginTo(binder, OutputPlugin.class, "file", LocalFileOutputPlugin.class);
registerPluginTo(binder, OutputPlugin.class, "null", NullOutputPlugin.class);
registerPluginTo(binder, OutputPlugin.class, "stdout", StdoutOutputPlugin.class);
// formatter plugins
registerPluginTo(binder, FormatterPlugin.class, "csv", CsvFormatterPlugin.class);
// file encoder plugins
registerPluginTo(binder, EncoderPlugin.class, "gzip", GzipFileEncoderPlugin.class);
registerPluginTo(binder, EncoderPlugin.class, "bzip2", Bzip2FileEncoderPlugin.class);
// filter plugins
registerPluginTo(binder, FilterPlugin.class, "rename", RenameFilterPlugin.class);
registerPluginTo(binder, FilterPlugin.class, "remove_columns", RemoveColumnsFilterPlugin.class);
// default guess plugins
registerDefaultGuessPluginTo(binder, new PluginType("gzip"));
registerDefaultGuessPluginTo(binder, new PluginType("bzip2"));
registerDefaultGuessPluginTo(binder, new PluginType("json")); // should be registered before CsvGuessPlugin
registerDefaultGuessPluginTo(binder, new PluginType("csv"));
// charset and newline guess plugins are loaded and invoked by CsvGuessPlugin
}
}