/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package edu.mayo.bior.cli.cmd; import java.io.File; import java.util.Properties; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Options; import com.tinkerpop.pipes.Pipe; import edu.mayo.bior.pipeline.UnixStreamPipeline; import edu.mayo.cli.CommandPlugin; import edu.mayo.pipes.JSON.tabix.OverlapPipe; import edu.mayo.pipes.history.History; import edu.mayo.pipes.history.HistoryInPipe; import edu.mayo.pipes.history.HistoryOutPipe; import edu.mayo.pipes.util.metadata.Metadata; import edu.mayo.pipes.util.metadata.Metadata.CmdType; /** * * @author m102417 */ public class OverlapPipelineCommand implements CommandPlugin { private static final char OPTION_TABIX_FILE = 'd'; //-d usually means 'database' in the BioR case, it is a catalog private static final char OPTION_COLUMN = 'c'; private static final char OPTION_MINXTEND = 'w'; private static final char OPTION_MAXXTEND = 'x'; private UnixStreamPipeline mPipeline = new UnixStreamPipeline(); private String operation; public void init(Properties props) throws Exception { operation = props.getProperty("command.name"); } public void execute(CommandLine line, Options opts) throws Exception { String tabixFile = ""; if (line.hasOption(OPTION_TABIX_FILE)) { tabixFile = line.getOptionValue(OPTION_TABIX_FILE); } // default column is last column (e.g. -1) int column = -1; if (line.hasOption(OPTION_COLUMN)) { column = Integer.parseInt(line.getOptionValue(OPTION_COLUMN)); } int minxtend = 0; if (line.hasOption(OPTION_MINXTEND)) { minxtend = Integer.parseInt(line.getOptionValue(OPTION_MINXTEND)); } int maxxtend = 0; if (line.hasOption(OPTION_MAXXTEND)) { maxxtend = Integer.parseInt(line.getOptionValue(OPTION_MAXXTEND)); } Metadata metadata = new Metadata(new File(tabixFile).getCanonicalPath(), operation); Pipe<String, History> preLogic = new HistoryInPipe(metadata); Pipe<History, History> logic = new OverlapPipe(tabixFile, minxtend, maxxtend, column); Pipe<History, String> postLogic = new HistoryOutPipe(); mPipeline.execute(preLogic, logic, postLogic); } }