Beispiel #1
0
// 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;
}