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 v1.0" << endl;
63 cout << "Last updated: 1/29/2009" << endl << endl;
65 cout << "Patrick D. Schloss" << endl << endl;
66 cout << "Department of Microbiology" << endl;
67 cout << "The University of Massachusetts" << endl;
68 cout << "pschloss@micro.umass.edu" << endl;
69 cout << "http://schloss.micro.umass.edu/mothur" << endl << endl << endl;
70 cout << "Distributed under the GNU General Public License" << endl << endl;
71 cout << "Type 'help()' for information on the commands that are available" << endl << endl;
72 cout << "Type 'quit()' to exit program" << endl;
74 while(quitCommandCalled != 1){
76 cout << endl << "mothur > ";
78 if (cin.eof()) { input = "quit()"; }
80 errorFree = errorCheckor->checkInput(input);
81 if (errorFree == true) {
82 CommandOptionParser parser(input);
83 commandName = parser.getCommandString();
85 //executes valid command
86 CommandFactory cFactory;
87 Command* command = cFactory.getCommand(commandName);
88 quitCommandCalled = command->execute();
91 cout << "Your input contains errors. Please try again." << endl;
97 cout << "Standard Error: " << e.what() << " has occurred in the InteractEngine class Function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
101 cout << "An unknown error has occurred in the InteractEngine class function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
107 /***********************************************************************/
108 //This function opens the batchfile to be used by BatchEngine::getInput.
109 BatchEngine::BatchEngine(string batchFileName){
111 globaldata = GlobalData::getInstance();
112 openedBatch = openInputFile(batchFileName, inputBatchFile);
116 // char buffer = ' ';
117 // ifstream header("introtext.txt");
118 // while(!header.eof()){
120 // buffer = header.get();
123 catch(exception& e) {
124 cout << "Standard Error: " << e.what() << " has occurred in the BatchEngine class Function BatchEngine. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
128 cout << "An unknown error has occurred in the BatchEngine class function BatchEngine. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
133 /***********************************************************************/
135 BatchEngine::~BatchEngine(){
138 /***********************************************************************/
139 //This Function allows the user to run a batchfile containing several commands on Dotur
140 bool BatchEngine::getInput(){
143 string commandName = "";
145 ErrorCheck* errorCheckor = new ErrorCheck();
147 CommandFactory cFactory;
148 int quitCommandCalled = 0;
150 while(quitCommandCalled == 0){
152 getline(inputBatchFile, input);
153 if (inputBatchFile.eof()) { input = "quit()"; }
155 cout << endl << "mothur > " << input << endl;
156 errorFree = errorCheckor->checkInput(input);
157 if (errorFree == true) {
158 CommandOptionParser parser(input);
159 commandName = parser.getCommandString();
162 if (openedBatch == 0) { //able to open batchfile
163 //executes valid command
164 CommandFactory cFactory;
165 Command* command = cFactory.getCommand(commandName);
166 quitCommandCalled = command->execute();
169 cout << "Invalid." << endl;
173 cout << "Unable to open batchfile." << endl;
178 catch(exception& e) {
179 cout << "Standard Error: " << e.what() << " has occurred in the BatchEngine class Function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
183 cout << "An unknown error has occurred in the BatchEngine class function getInput. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
189 /***********************************************************************/