//**********************************************************************************************************************
NameAssignment::NameAssignment(string nameMapFile){
-
+ m = MothurOut::getInstance();
openInputFile(nameMapFile, fileHandle);
}
string firstCol, secondCol, skip;
// int index = 0;
-
-// map<string, string> data;
+
+ map<string, int>::iterator itData;
int rowIndex = 0;
-
+
while(fileHandle){
fileHandle >> firstCol; //read from first column
fileHandle >> secondCol; //read from second column
+
+ itData = (*this).find(firstCol);
+ if (itData == (*this).end()) {
+
+ (*this)[firstCol] = rowIndex++;
+ list.push_back(secondCol); //adds data's value to list
+ reverse[rowIndex] = firstCol;
+
+ }else{ m->mothurOut(firstCol + " is already in namesfile. I will use first definition."); m->mothurOutEndLine(); }
-// data[firstCol] = secondCol; //store data in map
-
- list.push_back(secondCol); //adds data's value to list
- reverse[rowIndex] = firstCol;
- (*this)[firstCol] = rowIndex++;
gobble(fileHandle);
}
fileHandle.close();
}
catch(exception& e) {
- errorOut(e, "NameAssignment", "readMap");
+ m->errorOut(e, "NameAssignment", "readMap");
exit(1);
}
}
list.push_back(name);
}
catch(exception& e) {
- errorOut(e, "NameAssignment", "push_back");
+ m->errorOut(e, "NameAssignment", "push_back");
exit(1);
}
}
void NameAssignment::print(ostream& out){
try {
map<string,int>::iterator it;
-cout << (*this).size() << endl;
+//cout << (*this).size() << endl;
for(it = (*this).begin(); it!=(*this).end(); it++){
out << it->first << '\t' << it->second << endl; //prints out keys and values of the map this.
}
}
catch(exception& e) {
- errorOut(e, "NameAssignment", "print");
+ m->errorOut(e, "NameAssignment", "print");
exit(1);
}
}