public override void RemoveObject(IDataObject objectToRemove) { if (GOLoginHistoryObjects == null) { return; } bool completed; int? objectToRemoveInternalId; if ((objectToRemove as GOLoginHistoryDataObject) == null) { _logEngine.LogError("Unable to remove null object", "The object you are trying to remove is null", "GOLoginHistoryObjectsDataSet.RemoveObject", null); throw new PulpException("Unable to remove Null Object."); } if (objectToRemove.IsNew) { objectToRemoveInternalId = objectToRemove.InternalObjectId; } else { objectToRemoveInternalId = GOLoginHistoryObjectInternalIds.ContainsKey((objectToRemove as GOLoginHistoryDataObject).PrimaryKey) ? (int?)GOLoginHistoryObjectInternalIds[(objectToRemove as GOLoginHistoryDataObject).PrimaryKey] : null; } if (objectToRemoveInternalId != null) { GOLoginHistoryDataObject value; completed = false; var count = 0; while (!completed && count++ < 15) { completed = GOLoginHistoryObjects.TryRemove((int)objectToRemoveInternalId, out value); } // Reinit InternalObjectId only if the object to remove is part of the current dataset if (ReferenceEquals(objectToRemove.ObjectsDataSet, this._rootObjectDataSet)) { objectToRemove.InternalObjectId = null; } if (!objectToRemove.IsNew) { int idvalue; completed = false; count = 0; while (!completed && count++ < 15) { completed = GOLoginHistoryObjectInternalIds.TryRemove((objectToRemove as GOLoginHistoryDataObject).PrimaryKey, out idvalue); } } } }
public override void AddObject(IDataObject objectToAdd, bool replaceIfExists) { var existingObject = GetObject(objectToAdd); if (!replaceIfExists && existingObject != null) { throw new PulpException("Object already exists"); } int newInternalId; if (existingObject != null) { //RemoveObject(existingObject); if (existingObject.InternalObjectId == null) { _logEngine.LogError("Error while trying to Add Object to the GOLoginHistoryObjectsDataSet", "The object you are trying to add doesn't have an InternalObjectId", "GOLoginHistoryObjectsDataSet", null); throw new PulpException("Error while trying to add an object to the dataset without InternalObjectId"); } newInternalId = (int)existingObject.InternalObjectId; objectToAdd.InternalObjectId = newInternalId; existingObject.CopyValuesFrom(objectToAdd, false); } else { newInternalId = GetNextNewInternalObjectId(); objectToAdd.InternalObjectId = newInternalId; var completed = false; var count = 0; while (!completed && count++ < 15) { completed = GOLoginHistoryObjects.TryAdd(newInternalId, (GOLoginHistoryDataObject)objectToAdd); } } if (!objectToAdd.IsNew && existingObject == null) { //The following if should not be necessary... var completed = false; if (GOLoginHistoryObjectInternalIds.ContainsKey(((GOLoginHistoryDataObject)objectToAdd).PrimaryKey)) { int value; var count2 = 0; while (!completed && count2++ < 15) { completed = GOLoginHistoryObjectInternalIds.TryRemove(((GOLoginHistoryDataObject)objectToAdd).PrimaryKey, out value); } } completed = false; var count = 0; while (!completed && count++ < 15) { completed = GOLoginHistoryObjectInternalIds.TryAdd(((GOLoginHistoryDataObject)objectToAdd).PrimaryKey, newInternalId); } } // Update relations including platform as "many" side or "one" side , pk side for one to one relations if ((objectToAdd as GOLoginHistoryDataObject) == null) { _logEngine.LogError("Unable to Add an object which is null", "Unable to add an object which is null", "GOLoginHistoryDataObject", null); throw new PulpException("Unexpected Error: Unable to Add an object which is Null."); } }