// THIS CODE WAS GENERATED WITH THE GENERIC WORKFLOW NODES FOR KNIME NODE GENERATOR
// DO NOT MODIFY
package de.seqan.ngs_toolbox.knime;

import java.util.Arrays;
import java.util.List;

import org.osgi.framework.BundleContext;

import com.genericworkflownodes.knime.custom.GenericActivator;
import com.genericworkflownodes.knime.custom.config.IPluginConfiguration;
import com.genericworkflownodes.knime.custom.config.impl.PluginConfiguration;
import com.genericworkflownodes.knime.toolfinderservice.ExternalTool;

public class PluginActivator extends GenericActivator {

    private static PluginActivator INSTANCE = null;   
    private static IPluginConfiguration PLUGIN_CONFIG = null;
    private static final List<ExternalTool> TOOLS = Arrays.asList(new ExternalTool("de.seqan.ngs_toolbox", "BowtieAlignerSE", "bowtie-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "BwaBwaswSE", "bwa-bwasw-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "SamtoolsMPileup", "samtools-mpileup.sh"), new ExternalTool("de.seqan.ngs_toolbox", "BamToSam", "samtools"), new ExternalTool("de.seqan.ngs_toolbox", "BwaBwaswPE", "bwa-bwasw-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "Bowtie2Indexer", "bowtie2-build"), new ExternalTool("de.seqan.ngs_toolbox", "BwaSamSE", "bwa-samse-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "Bowtie2AlignerSE", "bowtie2-align"), new ExternalTool("de.seqan.ngs_toolbox", "SamToBam", "samtools"), new ExternalTool("de.seqan.ngs_toolbox", "SortBam", "samtools"), new ExternalTool("de.seqan.ngs_toolbox", "BcfToVcf", "bcftools-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "BwaSamPE", "bwa-sampe-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "BowtieAlignerPE", "bowtie-wrapper.sh"), new ExternalTool("de.seqan.ngs_toolbox", "BowtieIndexer", "bowtie-build"), new ExternalTool("de.seqan.ngs_toolbox", "Bowtie2AlignerPE", "bowtie2-align"), new ExternalTool("de.seqan.ngs_toolbox", "BwaIndexer", "bwa-index-wrapper.sh"));

    @Override
    public void start(final BundleContext context) throws Exception {
        super.start(context);
        initializePlugin();
        INSTANCE = this;
    }

    public static PluginActivator getInstance() {
        return INSTANCE;
    }
    
    @Override
    public List<ExternalTool> getTools() {
        return TOOLS;
    }
    
    @Override
    public IPluginConfiguration getPluginConfiguration() {
        if (PLUGIN_CONFIG == null) {
            // construct the plugin config
            PLUGIN_CONFIG = new PluginConfiguration("de.seqan.ngs_toolbox", "NgsToolbox", 
                PluginActivator.getInstance().getProperties(), getClass());
        }
        return PLUGIN_CONFIG;
    }
}
