std::string InventoryReport::Generate() { ClassificationService classificationService; vector<Record> records; vector<Holding>* holdings = Catalog::Holdings(); for (vector<Holding>::iterator it = holdings->begin(); it != holdings->end(); it++) { Holding holding = *it; Book book = classificationService.RetrieveDetails(holding.Classification()); if (book.Type() == Book::TYPE_BOOK) { Record record(book, holding.CurrentBranch().Name(), mIsbnApi); records.push_back(record); } } sort(records.begin(), records.end()); stringstream buffer; AppendHeader(buffer); AppendColumnHeaders(buffer); for (vector<Record>::iterator it = records.begin(); it != records.end();it++) Append(buffer, *it); AppendFooter(buffer); return buffer.str(); }