// Saves list items to file bool FileHandler::saveRegister(list<Movie*> pMediaRegister, const char* fileName) { try { if (pMediaRegister.empty()) { _errorMessage = "Cannot save. List is empty!"; throw _errorMessage; return false; } _outfile.open(fileName); // If file cannot be red if (!_outfile.is_open()) { throw "Error occured when reading file"; return false; } int i = 0; MyTime runTime; char* genre; // Stepping through all list items. Extracts data from them. // Putting data in the register file according to format specification // (one row for one item and one ¤ between every data member for (_it = pMediaRegister.begin(); _it != pMediaRegister.end(); _it++) { _outfile << (*_it)->getID() << "¤"; genre = (*_it)->getGenre(); _outfile << genre << "¤"; _outfile << (*_it)->getTitle() << "¤"; _outfile << (*_it)->getYear() << "¤"; runTime = (*_it)->getRunTime(); _outfile << runTime.getHours() << "," << runTime.getMinutes() << "¤"; _outfile << (*_it)->getDescription() << "¤"; // Specific data for genres if (strcmp(genre, "Sci-Fi") == 0) { _outfile << (*_it)->getSubgenre() << "¤"; _outfile << (*_it)->getSciFiPeriod() << "¤"; } else if (strcmp(genre, "Historic") == 0) { _outfile << (*_it)->getSubgenre() << "¤"; _outfile << (*_it)->getHistoricFigure() << "¤"; _outfile << (*_it)->getTimePeriod() << "¤"; } _outfile << endl; } } catch (char* error) { throw error; } catch (...) { throw 0; } _outfile.close(); return true; }