Exemplo n.º 1
0
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();
    }
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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();
    }
}