OGRErr OGRGMELayer::DeleteFeature( long nFID ) { if(bInTransaction) { std::map<int, OGRFeature *>::iterator fit; fit = omnpoInsertedFeatures.find(nFID); if (fit != omnpoInsertedFeatures.end()) { omnpoInsertedFeatures.erase(fit); CPLDebug("GME", "Found %ld in omnpoInsertedFeatures", nFID); } else { unsigned int iBatchSize = GetBatchPatchSize(); if (oListOfDeletedFeatures.size() >= iBatchSize) { CPLDebug("GME", "BatchDelete, reached BatchSize of %d", iBatchSize); OGRErr iBatchResult = BatchDelete(); if (iBatchResult != OGRERR_NONE) { return iBatchResult; } } CPLDebug("GME", "In Transaction, adding feature to List"); bDirty = true; oListOfDeletedFeatures.push_back(nFID); } return OGRERR_NONE; } else { CPLDebug("GME", "Not in Transaction, BatchDelete()"); return BatchDelete(); } }
OGRErr OGRGMELayer::SyncToDisk() { CPLDebug("GME", "SyncToDisk()"); if (bDirty) { if (omnpoInsertedFeatures.size() > 0) { BatchInsert(); } if (omnpoUpdatedFeatures.size() > 0) { BatchPatch(); } if (oListOfDeletedFeatures.size() > 0) { BatchDelete(); } bDirty = false; } return OGRERR_NONE; }
OGRErr OGRGMELayer::DeleteFeature( long nFID ) { if(bInTransaction) { std::map<int, OGRFeature *>::iterator fit; fit = omnpoInsertedFeatures.find(nFID); if (fit != omnpoInsertedFeatures.end()) { omnpoInsertedFeatures.erase(fit); CPLDebug("GME", "Found %ld in omnpoInsertedFeatures", nFID); } else { CPLDebug("GME", "In Transaction, adding feature to List"); bDirty = true; oListOfDeletedFeatures.push_back(nFID); } return OGRERR_NONE; } else { CPLDebug("GME", "Not in Transaction, BatchDelete()"); return BatchDelete(); } }