bool ActionModel::loadXmlData (const CoaDomDocument& doc, const bool deepCopy) { BEGIN; bool result = CoaXmlItemModel::loadXmlData(doc, deepCopy); if (result == true){ if (documentVersion() != DOCVERSION) result = false; } RETURN(result); }
ScreenieScene *XmlScreenieSceneDao::read() const { ScreenieScene *result = 0; if (d->device.open(QIODevice::ReadOnly)) { d->streamReader = new QXmlStreamReader(&d->device); QXmlStreamReader::TokenType tokenType; while ((tokenType = d->streamReader->readNext()) != QXmlStreamReader::EndDocument) { if (tokenType == QXmlStreamReader::StartElement) { if (d->streamReader->name() == "screeniescene") { QXmlStreamAttributes sceneAttributes = d->streamReader->attributes(); QString versionString = sceneAttributes.value("version").toString(); Version documentVersion(versionString); if (documentVersion < d->version) { /*!\todo Convert file to current version */ #ifdef DEBUG qDebug("XmlScreenieSceneDao::read: CONVERSION NEEDED, document version: %s, app version: %s", qPrintable(documentVersion.toString()), qPrintable(d->version.toString())); #endif } result = readScreenieScene(); } else { result = 0; } } if (d->streamReader->error() != QXmlStreamReader::NoError) { // Note: we do not deal yet with QXmlStreamReader::PrematureEndOfDocumentError: disk files // should always be complete XML #ifdef DEBUG qDebug("XmlScreenieSceneDao::read: error: %d", d->streamReader->error()); #endif result = 0; break; } } d->device.close(); } else { result = 0; } cleanUp(); return result; }