5 * Created by Pat Schloss on 8/15/08.
6 * Copyright 2008 Patrick D. Schloss. All rights reserved.
8 * There's a TON of duplicated code between InteractEngine and BatchEngine
9 * I couldn't figure out how to transition between ifstream (batch) and cin (interact)
10 * Fix later, don't have time now.
23 #include "utilities.hpp"
24 #include "globaldata.hpp"
25 #include "commandoptionparser.hpp"
26 #include "command.hpp"
27 #include "commandfactory.hpp"
28 #include "errorchecking.h"
31 /***********************************************************************/
33 InteractEngine::InteractEngine(){
35 globaldata = GlobalData::getInstance();
39 // ifstream header("introtext.txt");
40 // while(!header.eof()){
42 // buffer = header.get();
46 /***********************************************************************/
48 InteractEngine::~InteractEngine(){
51 /***********************************************************************/
52 //This function allows the user to input commands one line at a time until they quit.
53 //If the command is garbage it does nothing.
54 bool InteractEngine::getInput(){
57 string commandName = "";
58 int quitCommandCalled = 0;
60 ErrorCheck* errorCheckor = new ErrorCheck();
62 cout << "MOTHUR v2.0 (Martha)" << endl;
63 cout << "Last updated: 1/07/2009" << endl << endl;
64 cout << "(Distance-based OTU and Richness)" << endl << endl;
66 cout << "Patrick D. Schloss" << endl << endl;
67 cout << "Department of Microbiology" << endl;
68 cout << "The University of Massachusetts" << endl;
69 cout << "pschloss@micro.umass.edu" << endl;
70 cout << "http://schloss.micro.umass.edu" << endl << endl << endl;
71 cout << "Distributed under the GNU General Public License" << endl << endl;
72 cout << "Type 'help()' for information on the commands that are available" << endl << endl;
73 cout << "Type 'quit()' to exit program" << endl;
75 while(quitCommandCalled != 1){
77 cout << endl << "mothur > ";
79 errorFree = errorCheckor->checkInput(input);
80 if (errorFree == true) {
81 CommandOptionParser parser(input);
82 commandName = parser.getCommandString();
84 //executes valid command
85 CommandFactory cFactory;
86 Command* command = cFactory.getCommand(commandName);
87 quitCommandCalled = command->execute();
90 cout << "Your input contains errors. Please try again." << endl;
96 cout << "Standard Error: " << e.what() << " has occurred in the InteractEngine class Function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
100 cout << "An unknown error has occurred in the InteractEngine class function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
106 /***********************************************************************/
107 //This function opens the batchfile to be used by BatchEngine::getInput.
108 BatchEngine::BatchEngine(string batchFileName){
110 globaldata = GlobalData::getInstance();
111 openedBatch = openInputFile(batchFileName, inputBatchFile);
115 // char buffer = ' ';
116 // ifstream header("introtext.txt");
117 // while(!header.eof()){
119 // buffer = header.get();
122 catch(exception& e) {
123 cout << "Standard Error: " << e.what() << " has occurred in the BatchEngine class Function BatchEngine. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
127 cout << "An unknown error has occurred in the BatchEngine class function BatchEngine. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
132 /***********************************************************************/
134 BatchEngine::~BatchEngine(){
137 /***********************************************************************/
138 //This Function allows the user to run a batchfile containing several commands on Dotur
139 bool BatchEngine::getInput(){
142 string commandName = "";
144 ErrorCheck* errorCheckor = new ErrorCheck();
146 CommandFactory cFactory;
147 int quitCommandCalled = 0;
149 while(quitCommandCalled == 0){
151 getline(inputBatchFile, input);
152 cout << endl << "dotur > " << input << endl;
153 errorFree = errorCheckor->checkInput(input);
154 if (errorFree == true) {
155 CommandOptionParser parser(input);
156 commandName = parser.getCommandString();
159 if (openedBatch == 0) { //able to open batchfile
160 //executes valid command
161 CommandFactory cFactory;
162 Command* command = cFactory.getCommand(commandName);
163 quitCommandCalled = command->execute();
166 cout << "Invalid." << endl;
170 cout << "Unable to open batchfile." << endl;
175 catch(exception& e) {
176 cout << "Standard Error: " << e.what() << " has occurred in the BatchEngine class Function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
180 cout << "An unknown error has occurred in the BatchEngine class function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
186 /***********************************************************************/