package net.sourceforge.seqware.pipeline.plugin;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import joptsimple.BuiltinHelpFormatter;
import joptsimple.OptionException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import net.sourceforge.seqware.common.metadata.Metadata;
import net.sourceforge.seqware.common.module.ReturnValue;
import net.sourceforge.seqware.common.util.Log;
/**
* <p>
* Abstract Plugin class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public abstract class Plugin implements PluginInterface {
protected OptionParser parser = new OptionParser();
protected OptionSet options = null;
protected String[] params = null;
protected Metadata metadata = null;
protected Map<String, String> config = null;
/**
* <p>
* Constructor for Plugin.
* </p>
*/
public Plugin() {
super();
}
/*
* (non-Javadoc)
*
* @see net.sourceforge.seqware.pipeline.plugin.PluginInterface#setConfig(java.util.Map)
*/
/** {@inheritDoc} */
@Override
public void setConfig(Map<String, String> config) {
this.config = config;
Log.info("Setting Config");
Log.info("Config File Contents:");
for (String key : config.keySet()) {
Log.info(" " + key + " " + config.get(key));
}
}
/*
* (non-Javadoc)
*
* @see net.sourceforge.seqware.pipeline.plugin.PluginInterface#setParams(java.util.List)
*/
/** {@inheritDoc} */
@Override
public void setParams(List<String> params) {
Log.info("Setting Params: " + params);
this.params = params.toArray(new String[params.size()]);
}
/*
* (non-Javadoc)
*
* @see net.sourceforge.seqware.pipeline.plugin.PluginInterface#setMetadata(net.sourceforge.seqware.pipeline.metadata.Metadata)
*/
/** {@inheritDoc} */
@Override
public void setMetadata(Metadata metadata) {
Log.info("Setting Metadata: " + metadata);
this.metadata = metadata;
}
/*
* (non-Javadoc)
*
* @see net.sourceforge.seqware.pipeline.plugin.PluginInterface#get_syntax()
*/
/** {@inheritDoc} */
@Override
public String get_syntax() {
try {
parser.formatHelpWith(new BuiltinHelpFormatter(160, 2));
parser.printHelpOn(System.out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ("");
}
/** {@inheritDoc} */
@Override
public String get_description() {
return ("");
}
/*
* (non-Javadoc)
*
* @see net.sourceforge.seqware.pipeline.plugin.PluginInterface#parse_parameters()
*/
/** {@inheritDoc} */
@Override
public ReturnValue parse_parameters() {
ReturnValue ret = new ReturnValue(ReturnValue.SUCCESS);
try {
options = parser.parse(params);
} catch (OptionException e) {
get_syntax();
ret.setExitStatus(ReturnValue.INVALIDARGUMENT);
}
return ret;
}
/**
* <p>
* print.
* </p>
*
* @param output
* a {@link java.lang.String} object.
*/
public void print(String output) {
// FIXME: Yong, do something cleaver here, for now I'm using System.out
System.out.print(output);
}
/**
* <p>
* println.
* </p>
*
* @param output
* a {@link java.lang.String} object.
*/
public void println(String output) {
// FIXME: Yong, do something cleaver here, for now I'm using System.out
Log.stdout(output);
}
}