static void updateNode(void* abstractSelf) { osm2olm* self = (osm2olm*) abstractSelf; //printf("Write node\n"); for(int c = 0; c < self->countriesCount; c++) { //printf("Check if belongs Country %i\n", c); if(nodeBelongsCountry(self, self->countries + c)) { //printf("Write node in country\n"); // printf("Updating node %i\n", self->node.id); addTree16Node(&(self->countries[c].nodesIndex), self->node.id, self->node.id); //printf("Added to index\n"); //printf("Adding to db with statement: %x\n", self->countries[c].insertNodeStatement); beginTransaction(self->countries[c].db); sqlite3_bind_int(self->countries[c].updateNodeStatement, 1, self->node.id); sqlite3_bind_int(self->countries[c].updateNodeStatement, 2, self->node.lat); sqlite3_bind_int(self->countries[c].updateNodeStatement, 3, self->node.lon); //printf("Binded\n"); sqlite3_step(self->countries[c].updateNodeStatement); //printf("Written\n"); sqlite3_reset(self->countries[c].updateNodeStatement); //printf("Reset\n"); deleteFromDbById(self->countries[c].db, self->countries[c].deleteNodeTagsStatement, self->node.id); writeTags(self, &(self->tags), self->countries[c].insertNodeTagStatement, self->node.id); //printf("Writing tags\n"); commitTransaction(self->countries[c].db); } else { deleteNodeFromCountry(self->countries + c, self->node.id); } } //printf("Write node - end\n"); removeAllPlainTags(&(self->tags)); }
static void writeNode(void* abstractSelf) { osm2olm* self = (osm2olm*) abstractSelf; //printf("Write node\n"); for(int c = 0; c < self->countriesCount; c++) { //printf("Check if belongs Country %i\n", c); if(nodeBelongsCountry(self, self->countries + c)) { //printf("Write node in country\n"); addTree16Node(&(self->countries[c].nodesIndex), self->node.id, self->node.id); //printf("Added to index\n"); //printf("Adding to db with statement: %x\n", self->countries[c].insertNodeStatement); beginTransaction(self->countries[c].db); sqlite3_bind_int64(self->countries[c].insertNodeStatement, 1, self->node.id); sqlite3_bind_int(self->countries[c].insertNodeStatement, 2, self->node.lat); sqlite3_bind_int(self->countries[c].insertNodeStatement, 3, self->node.lon); sqlite3_bind_int64(self->countries[c].insertNodeStatement, 4, self->node.timestamp); //printf("Binded\n"); sqlite3_step(self->countries[c].insertNodeStatement); //printf("Written\n"); sqlite3_reset(self->countries[c].insertNodeStatement); //printf("Reset\n"); writeTags(self, &(self->tags), self->countries[c].insertNodeTagStatement, self->node.id); //printf("Writing tags\n"); commitTransaction(self->countries[c].db); } } //printf("Write node - end\n"); self->tags.count = 0; }
void Mp3Writer::close() { if (!file.isOpen()) { debug("WARNING: Mp3Writer::close() called, but file not open"); return; } if (!hasFlushed) { debug("WARNING: Mp3Writer::close() called but no flush happened, flushing now"); QByteArray dummy1, dummy2; write(dummy1, dummy2, 0, true); } AudioFileWriter::close(); writeTags(); }
static void writeWay(void* abstractSelf) { osm2olm* self = (osm2olm*) abstractSelf; for(int c = 0; c < self->countriesCount; c++) { if(wayBelongsCountry(self, self->countries + c)) { addTree16Node(&(self->countries[c].waysIndex), self->way.id, self->way.id); beginTransaction(self->countries[c].db); sqlite3_bind_int64(self->countries[c].insertWayStatement, 1, self->way.id); sqlite3_bind_int64(self->countries[c].insertWayStatement, 2, self->way.timestamp); sqlite3_step(self->countries[c].insertWayStatement); sqlite3_reset(self->countries[c].insertWayStatement); writeTags(self, &(self->tags), self->countries[c].insertWayTagStatement, self->way.id); writeWayNodes(self, self->countries+c); commitTransaction(self->countries[c].db); } } removeAllPlainTags(&(self->tags)); removeAllWayNodes(&(self->wayNodes)); }
bool MetadataHub::writeTags(const QString& filePath, WriteComponent writeMode, const MetadataSettingsContainer& settings) { applyChangeNotifications(); // if no DMetadata object is needed at all, don't construct one - // important optimization if writing to file is turned off in setup! if (!willWriteMetadata(writeMode, settings)) { return false; } DMetadata metadata(filePath); metadata.setSettings(settings); bool saveFaces = settings.saveFaceTags; bool saveTags = settings.saveTags; if (saveFaces) { metadata.setImageFacesMap(d->faceTagsList,true); } else { metadata.setImageFacesMap(d->faceTagsList,false); } writeToBaloo(filePath); if (writeTags(metadata, saveTags)) { bool success = metadata.applyChanges(); ImageAttributesWatch::instance()->fileMetadataChanged(QUrl::fromLocalFile(filePath)); return success; } else { return false; } }
static void updateWay(void* abstractSelf) { osm2olm* self = (osm2olm*) abstractSelf; // printf("Updating way %i\n", self->way.id); for(int c = 0; c < self->countriesCount; c++) { if(wayBelongsCountry(self, self->countries + c)) { addTree16Node(&(self->countries[c].waysIndex), self->way.id, self->way.id); beginTransaction(self->countries[c].db); sqlite3_bind_int64(self->countries[c].updateWayStatement, 1, self->way.id); sqlite3_step(self->countries[c].updateWayStatement); sqlite3_reset(self->countries[c].updateWayStatement); deleteFromDbById(self->countries[c].db, self->countries[c].deleteWayTagsStatement, self->way.id); writeTags(self, &(self->tags), self->countries[c].insertWayTagStatement, self->way.id); deleteFromDbById(self->countries[c].db, self->countries[c].deleteWayNodesStatement, self->way.id); writeWayNodes(self, self->countries+c); commitTransaction(self->countries[c].db); } else { deleteWayFromCountry(self->countries + c, self->way.id); } } removeAllPlainTags(&(self->tags)); removeAllWayNodes(&(self->wayNodes)); }
static void writeRelations(osm2olm* self, LCountry* country) { Tree16 pseudoIndex; initTree16(&pseudoIndex); Tree16 whishesIndex; initTree16(&whishesIndex); int found; printf("Writing relations for %s. Total relations: %i\n", country->polygon->name, self->relations.count); int iterations = 0; do { found = 0; for(int r = 0; r < self->relations.count; r++) { if(!isInTree16(&pseudoIndex, self->relations.values[r].base.info.id)) { if(self->relations.values[r].change != OSM_CHANGE_DELETE) { if((self->relations.values[r].change == OSM_CHANGE_NONE || relationBelongsCountry(self->relations.values + r, country, &pseudoIndex))) { addTree16Node(&pseudoIndex, self->relations.values[r].base.info.id, 0); found++; } else { if(self->relations.values[r].change != OSM_CHANGE_NONE) { printf("Relation %i does not belongs country\n", self->relations.values[r].base.info.id); } else { printf("Relation %i exists in DB and was'nt changed\n", self->relations.values[r].base.info.id); } } } else { printf("Relation %i was deleted\n", self->relations.values[r].base.info.id); } } else { //printf("Relation %i already encountered\n", self->relations.values[r].base.info.id); } } iterations++; } while(found); printf("Relations found in %i iterations\n", iterations); int written = 0; for(int r=0;r < self->relations.count; r++) { if(isInTree16(&pseudoIndex, self->relations.values[r].base.info.id)){ beginTransaction(country->db); addTree16Node(&(country->relationsIndex), self->relations.values[r].base.info.id, self->relations.values[r].base.info.id); switch (self->relations.values[r].change) { case OSM_CHANGE_CREATE: sqlite3_bind_int(country->insertRelationStatement, 1, self->relations.values[r].base.info.id); sqlite3_bind_int64(country->insertRelationStatement, 2, self->relations.values[r].base.info.timestamp); sqlite3_step(country->insertRelationStatement); sqlite3_reset(country->insertRelationStatement); writeTags(self, &(self->relations.values[r].base.tags), country->insertRelationTagStatement, self->relations.values[r].base.info.id); writeRelationMember(self->relations.values + r, country); break; case OSM_CHANGE_DELETE: deleteRelationFromCountry(country, self->relations.values[r].base.info.id); case OSM_CHANGE_MODIFY: sqlite3_bind_int(country->insertRelationStatement, 1, self->relations.values[r].base.info.id); sqlite3_bind_int64(country->insertRelationStatement, 2, self->relations.values[r].base.info.timestamp); sqlite3_step(country->insertRelationStatement); sqlite3_reset(country->insertRelationStatement); deleteFromDbById(country->db, country->deleteRelationTagsStatement, self->relations.values[r].base.info.id); writeTags(self, &(self->relations.values[r].base.tags), country->insertRelationTagStatement, self->relations.values[r].base.info.id); deleteFromDbById(country->db, country->deleteRelationMembersStatement, self->relations.values[r].base.info.id); writeRelationMember(self->relations.values + r, country); break; case OSM_CHANGE_COUNT: case OSM_CHANGE_NONE: //Just do nothing, as db is up to date break; } commitTransaction(country->db); written++; } else { deleteRelationFromCountry(country, self->relations.values[r].base.info.id); //printf("Skip relation %i. %s\n", self->relations.values[r].info.id, isInTree16(&pseudoIndex, self->relations.values[r].info.id) ? (relationIsFullyBelongsCountry(self->relations.values + r, country, &pseudoIndex)? "HM.." : "It does not have some members.") : "it is not in list"); } } freeTree16(&pseudoIndex); printf("Relations written: %i\n", written); }
bool MetadataHub::write(DMetadata& metadata, WriteComponent writeMode, const MetadataSettingsContainer& settings) { applyChangeNotifications(); bool dirty = false; metadata.setSettings(settings); // find out in advance if we have something to write - needed for FullWriteIfChanged mode bool saveTitle = (settings.saveComments && (d->titlesStatus == MetadataAvailable) && writeMode.testFlag(WRITE_TITLE)); bool saveComment = (settings.saveComments && (d->commentsStatus == MetadataAvailable) && writeMode.testFlag(WRITE_COMMENTS)); bool saveDateTime = (settings.saveDateTime && (d->dateTimeStatus == MetadataAvailable) && writeMode.testFlag(WRITE_DATETIME)); bool savePickLabel = (settings.savePickLabel && (d->pickLabelStatus == MetadataAvailable) && writeMode.testFlag(WRITE_PICKLABEL)); bool saveColorLabel = (settings.saveColorLabel && (d->colorLabelStatus == MetadataAvailable) && writeMode.testFlag(WRITE_COLORLABEL)); bool saveRating = (settings.saveRating && (d->ratingStatus == MetadataAvailable) && writeMode.testFlag(WRITE_RATING)); bool saveTemplate = (settings.saveTemplate && (d->templateStatus == MetadataAvailable) && writeMode.testFlag(WRITE_TEMPLATE)); bool saveTags = settings.saveTags && writeMode.testFlag(WRITE_TAGS); bool saveFaces = settings.saveFaceTags && writeMode.testFlag((WRITE_TAGS)); if (saveTitle) { // Store titles in image as Iptc Object name and Xmp. dirty |= metadata.setImageTitles(d->titles); } if (saveComment) { // Store comments in image as JFIF comments, Exif comments, Iptc Caption, and Xmp. dirty |= metadata.setImageComments(d->comments); } if (saveDateTime) { // Store Image Date & Time as Exif and Iptc tags. dirty |= metadata.setImageDateTime(d->dateTime, false); } if (savePickLabel) { // Store Image Pick Label as XMP tag. dirty |= metadata.setImagePickLabel(d->pickLabel); } if (saveColorLabel) { // Store Image Color Label as XMP tag. dirty |= metadata.setImageColorLabel(d->colorLabel); } if (saveRating) { // Store Image rating as Iptc tag. dirty |= metadata.setImageRating(d->rating); } if (saveTemplate) { QString title = d->metadataTemplate.templateTitle(); if (title == Template::removeTemplateTitle()) { dirty |= metadata.removeMetadataTemplate(); } else if (title.isEmpty()) { // Nothing to do. } else { // Store metadata template as XMP tag. dirty |= metadata.removeMetadataTemplate(); dirty |= metadata.setMetadataTemplate(d->metadataTemplate); } } dirty |= metadata.setImageFacesMap(d->faceTagsList,saveFaces); dirty |= writeTags(metadata,saveTags); return dirty; }
void MyMoneyStorageXML::writeFile(QIODevice* qf, IMyMoneySerialize* storage) { Q_CHECK_PTR(qf); Q_CHECK_PTR(storage); if (!storage) { return; } m_storage = storage; // qDebug("XMLWRITER: Starting file write"); m_doc = new QDomDocument("KMYMONEY-FILE"); Q_CHECK_PTR(m_doc); QDomProcessingInstruction instruct = m_doc->createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""); m_doc->appendChild(instruct); QDomElement mainElement = m_doc->createElement("KMYMONEY-FILE"); m_doc->appendChild(mainElement); QDomElement fileInfo = m_doc->createElement("FILEINFO"); writeFileInformation(fileInfo); mainElement.appendChild(fileInfo); QDomElement userInfo = m_doc->createElement("USER"); writeUserInformation(userInfo); mainElement.appendChild(userInfo); QDomElement institutions = m_doc->createElement("INSTITUTIONS"); writeInstitutions(institutions); mainElement.appendChild(institutions); QDomElement payees = m_doc->createElement("PAYEES"); writePayees(payees); mainElement.appendChild(payees); QDomElement tags = m_doc->createElement("TAGS"); writeTags(tags); mainElement.appendChild(tags); QDomElement accounts = m_doc->createElement("ACCOUNTS"); writeAccounts(accounts); mainElement.appendChild(accounts); QDomElement transactions = m_doc->createElement("TRANSACTIONS"); writeTransactions(transactions); mainElement.appendChild(transactions); QDomElement keyvalpairs = writeKeyValuePairs(m_storage->pairs()); mainElement.appendChild(keyvalpairs); QDomElement schedules = m_doc->createElement("SCHEDULES"); writeSchedules(schedules); mainElement.appendChild(schedules); QDomElement equities = m_doc->createElement("SECURITIES"); writeSecurities(equities); mainElement.appendChild(equities); QDomElement currencies = m_doc->createElement("CURRENCIES"); writeCurrencies(currencies); mainElement.appendChild(currencies); QDomElement prices = m_doc->createElement("PRICES"); writePrices(prices); mainElement.appendChild(prices); QDomElement reports = m_doc->createElement("REPORTS"); writeReports(reports); mainElement.appendChild(reports); QDomElement budgets = m_doc->createElement("BUDGETS"); writeBudgets(budgets); mainElement.appendChild(budgets); QDomElement onlineJobs = m_doc->createElement("ONLINEJOBS"); writeOnlineJobs(onlineJobs); mainElement.appendChild(onlineJobs); QTextStream stream(qf); stream.setCodec("UTF-8"); stream << m_doc->toString(); delete m_doc; m_doc = 0; //hides the progress bar. signalProgress(-1, -1); // this seems to be nonsense, but it clears the dirty flag // as a side-effect. m_storage->setLastModificationDate(m_storage->lastModificationDate()); m_storage = 0; }