X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=commandfactory.cpp;h=b361b6600655ff57a987cf7bce9b2b543d96c854;hb=c82900be3ceed3d9bc491bdc98b1819ef85c1af7;hp=48a363336be3bea3a482471608cf7e0ce2300b3e;hpb=0470f6d037aacb3563c3f7010708120a4a67d4e6;p=mothur.git diff --git a/commandfactory.cpp b/commandfactory.cpp index 48a3633..b361b66 100644 --- a/commandfactory.cpp +++ b/commandfactory.cpp @@ -12,7 +12,6 @@ #include "readtreecommand.h" #include "readotucommand.h" #include "clustercommand.h" -#include "parselistcommand.h" #include "collectcommand.h" #include "collectsharedcommand.h" #include "getgroupcommand.h" @@ -33,14 +32,13 @@ #include "heatmapcommand.h" #include "heatmapsimcommand.h" #include "filterseqscommand.h" -#include "mothur.h" #include "venncommand.h" #include "nocommands.h" #include "binsequencecommand.h" #include "getoturepcommand.h" #include "treegroupscommand.h" #include "bootstrapsharedcommand.h" -#include "concensuscommand.h" +//#include "consensuscommand.h" #include "distancecommand.h" #include "aligncommand.h" #include "matrixoutputcommand.h" @@ -50,13 +48,90 @@ #include "screenseqscommand.h" #include "reversecommand.h" #include "trimseqscommand.h" +#include "mergefilecommand.h" +#include "chimeraseqscommand.h" +#include "listseqscommand.h" +#include "getseqscommand.h" +#include "removeseqscommand.h" +#include "systemcommand.h" +#include "secondarystructurecommand.h" +#include "getsharedotucommand.h" +#include "getlistcountcommand.h" +#include "hclustercommand.h" +#include "classifyseqscommand.h" +#include "phylotypecommand.h" +#include "mgclustercommand.h" +/*******************************************************/ + +/******************************************************/ +CommandFactory* CommandFactory::getInstance() { + if( _uniqueInstance == 0) { + _uniqueInstance = new CommandFactory(); + } + return _uniqueInstance; +} /***********************************************************/ /***********************************************************/ CommandFactory::CommandFactory(){ + _uniqueInstance = 0; string s = ""; command = new NoCommand(s); + + + //initialize list of valid commands + commands["read.dist"] = "read.dist"; + commands["read.otu"] = "read.otu"; + commands["read.tree"] = "read.tree"; + commands["bin.seqs"] = "bin.seqs"; + commands["get.oturep"] = "get.oturep"; + commands["cluster"] = "cluster"; + commands["unique.seqs"] = "unique.seqs"; + commands["dist.seqs"] = "dist.seqs"; + commands["dist.shared"] = "dist.shared"; + commands["collect.single"] = "collect.single"; + commands["collect.shared"] = "collect.shared"; + commands["rarefaction.single"] = "rarefaction.single"; + commands["rarefaction.shared"] = "rarefaction.shared"; + commands["summary.single"] = "summary.single"; + commands["summary.shared"] = "summary.shared"; + commands["parsimony"] = "parsimony"; + commands["unifrac.weighted"] = "unifrac.weighted"; + commands["unifrac.unweighted"] = "unifrac.unweighted"; + commands["libshuff"] = "libshuff"; + commands["tree.shared"] = "tree.shared"; + commands["heatmap.bin"] = "heatmap.bin"; + commands["heatmap.sim"] = "heatmap.sim"; + commands["venn"] = "venn"; + commands["get.group"] = "get.group"; + commands["get.label"] = "get.label"; + commands["get.line"] = "get.line"; + commands["get.sabund"] = "get.sabund"; + commands["get.rabund"] = "get.rabund"; + commands["bootstrap.shared"] = "bootstrap.shared"; + //commands["consensus"] = "consensus"; + commands["help"] = "help"; + commands["filter.seqs"] = "filter.seqs"; + commands["align.seqs"] = "align.seqs"; + commands["summary.seqs"] = "summary.seqs"; + commands["screen.seqs"] = "screen.seqs"; + commands["reverse.seqs"] = "reverse.seqs"; + commands["trim.seqs"] = "trim.seqs"; + commands["chimera.seqs"] = "chimera.seqs"; + commands["list.seqs"] = "list.seqs"; + commands["get.seqs"] = "get.seqs"; + commands["remove.seqs"] = "get.seqs"; + commands["system"] = "system"; + commands["align.check"] = "align.check"; + commands["get.sharedseqs"] = "get.sharedseqs"; + commands["get.otulist"] = "get.otulist"; + commands["quit"] = "quit"; + commands["hcluster"] = "hcluster"; + commands["classify.seqs"] = "classify.seqs"; + commands["phylotype"] = "phylotype"; + commands["mgcluster"] = "mgcluster"; + } /***********************************************************/ @@ -104,26 +179,90 @@ Command* CommandFactory::getCommand(string commandName, string optionString){ else if(commandName == "tree.shared") { command = new TreeGroupCommand(optionString); } else if(commandName == "dist.shared") { command = new MatrixOutputCommand(optionString); } else if(commandName == "bootstrap.shared") { command = new BootSharedCommand(optionString); } - else if(commandName == "concensus") { command = new ConcensusCommand(optionString); } + //else if(commandName == "consensus") { command = new ConcensusCommand(optionString); } else if(commandName == "dist.seqs") { command = new DistanceCommand(optionString); } else if(commandName == "align.seqs") { command = new AlignCommand(optionString); } else if(commandName == "summary.seqs") { command = new SeqSummaryCommand(optionString); } else if(commandName == "screen.seqs") { command = new ScreenSeqsCommand(optionString); } else if(commandName == "reverse.seqs") { command = new ReverseSeqsCommand(optionString); } else if(commandName == "trim.seqs") { command = new TrimSeqsCommand(optionString); } + else if(commandName == "chimera.seqs") { command = new ChimeraSeqsCommand(optionString); } + else if(commandName == "list.seqs") { command = new ListSeqsCommand(optionString); } + else if(commandName == "get.seqs") { command = new GetSeqsCommand(optionString); } + else if(commandName == "remove.seqs") { command = new RemoveSeqsCommand(optionString); } + else if(commandName == "merge.files") { command = new MergeFileCommand(optionString); } + else if(commandName == "system") { command = new SystemCommand(optionString); } + else if(commandName == "align.check") { command = new AlignCheckCommand(optionString); } + else if(commandName == "get.sharedseqs") { command = new GetSharedOTUCommand(optionString); } + else if(commandName == "get.otulist") { command = new GetListCountCommand(optionString); } + else if(commandName == "hcluster") { command = new HClusterCommand(optionString); } + else if(commandName == "classify.seqs") { command = new ClassifySeqsCommand(optionString); } + else if(commandName == "phylotype") { command = new PhylotypeCommand(optionString); } + else if(commandName == "mgcluster") { command = new MGClusterCommand(optionString); } else { command = new NoCommand(optionString); } return command; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the CommandFactory class Function getCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "CommandFactory", "getCommand"); + exit(1); + } +} +/***********************************************************/ +//This function is used to interrupt a command +Command* CommandFactory::getCommand(){ + try { + delete command; //delete the old command + + string s = ""; + command = new NoCommand(s); + + return command; + } + catch(exception& e) { + errorOut(e, "CommandFactory", "getCommand"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the CommandFactory class function getCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; +} +/***********************************************************************/ +bool CommandFactory::isValidCommand(string command) { + try { + + //is the command in the map + if ((commands.find(command)) != (commands.end())) { + return true; + }else{ + mothurOut(command + " is not a valid command in Mothur. Valid commands are "); + for (it = commands.begin(); it != commands.end(); it++) { + mothurOut(it->first + ", "); + } + mothurOutEndLine(); + return false; + } + + } + catch(exception& e) { + errorOut(e, "CommandFactory", "isValidCommand"); exit(1); } +} +/***********************************************************************/ +void CommandFactory::printCommands(ostream& out) { + try { + out << "Valid commands are "; + for (it = commands.begin(); it != commands.end(); it++) { + out << it->first << ", "; + } + out << endl; + } + catch(exception& e) { + errorOut(e, "CommandFactory", "printCommands"); + exit(1); + } } -/***********************************************************/ +/***********************************************************************/ + + +