#include "getgroupcommand.h"
-
-GetgroupCommand::GetgroupCommand(){
+//**********************************************************************************************************************
+GetgroupCommand::GetgroupCommand(string option){
try {
globaldata = GlobalData::getInstance();
- groupMap = globaldata->gGroupmap;
- outputFile = globaldata->inputFileName + ".bootGroups";
- openOutputFile(outputFile, out);
+ abort = false;
+
+ //allow user to run help
+ if(option == "help") { help(); abort = true; }
+
+ else {
+ if (option != "") { cout << "There are no valid parameters for the get.group command." << endl; abort = true; }
+
+ if ((globaldata->getSharedFile() == "")) { cout << "You must use the read.otu command to read a groupfile or a sharedfile before you can use the get.group command." << endl; abort = true; }
+
+ if (abort == false) {
+ //open shared file
+ sharedfile = globaldata->getSharedFile();
+ openInputFile(sharedfile, in);
+
+ //open output file
+ outputFile = getRootName(sharedfile) + "bootGroups";
+ openOutputFile(outputFile, out);
+
+ }
+ }
}
catch(exception& e) {
cout << "Standard Error: " << e.what() << " has occurred in the GetgroupCommand class Function GetgroupCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
}
}
+//**********************************************************************************************************************
+
+void GetgroupCommand::help(){
+ try {
+ cout << "The get.group command can only be executed after a successful read.otu command." << "\n";
+ //cout << "The get.group command outputs a .bootGroups file to you can use in addition to the tree file generated by the bootstrap.shared command to run the concensus command." << "\n";
+ cout << "You may not use any parameters with the get.group command." << "\n";
+ cout << "The get.group command should be in the following format: " << "\n";
+ cout << "get.group()" << "\n";
+ cout << "Example get.group()." << "\n";
+
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the GetgroupCommand class Function help. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the GetgroupCommand class function help. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+}
//**********************************************************************************************************************
int GetgroupCommand::execute(){
try {
- vector<string> groupNames = groupMap->namesOfGroups;
- for(int i = 0; i < groupNames.size(); i++) {
- cout << groupNames[i] << "\n";
- out << groupNames[i] << "\t" << groupNames[i] << "\n";
+
+ if (abort == true) { return 0; }
+
+ int num, inputData, count;
+ count = 0;
+ string holdLabel, nextLabel, groupN, label;
+
+ //read in first row since you know there is at least 1 group.
+ in >> label >> groupN >> num;
+ holdLabel = label;
+
+ //output first group
+ cout << groupN << endl;
+ out << groupN << '\t' << groupN << endl;
+
+ //get rest of line
+ for(int i=0;i<num;i++){
+ in >> inputData;
+ }
+
+ if (in.eof() != true) { in >> nextLabel; }
+
+ //read the rest of the groups info in
+ while ((nextLabel == holdLabel) && (in.eof() != true)) {
+ in >> groupN >> num;
+ count++;
+
+ //output next group
+ cout << groupN << endl;
+ out << groupN << '\t' << groupN << endl;
+
+ //fill vector.
+ for(int i=0;i<num;i++){
+ in >> inputData;
+ }
+
+ if (in.eof() != true) { in >> nextLabel; }
}
+
out.close();
return 0;
}