/// <summary> /// Write to datasource overload with datatype operations /// </summary> /// <param name="dataTypeWriteOperations">collection of datatype operations</param> /// <returns></returns> public ICollection <OperationResult> WriteToDataSource(ICollection <DataTypeWriteOperation> dataTypeWriteOperations) { //Implementation is required in order to use data structures ICollection <OperationResult> dtOperationResults = new List <OperationResult>(); foreach (var dtOperation in dataTypeWriteOperations) { OperationResult opResult = new OperationResult(dtOperation, OperationResult.Status.Success, ""); try { switch (dtOperation.OperationType) { case DatastructureOperationType.CreateDataType: IDictionary <string, ProviderItemBase> dict = new Dictionary <string, ProviderItemBase>(); dict.Add(dtOperation.Key, dtOperation.ProviderItem); PersistenceProvider.Insert(dict); break; case DatastructureOperationType.DeleteDataType: PersistenceProvider.Remove(new string[] { dtOperation.Key }); break; case DatastructureOperationType.AddToDataType: PersistenceProvider.AddToDataType(dtOperation.Key, dtOperation.ProviderItem, dtOperation.DataType); break; case DatastructureOperationType.UpdateDataType: PersistenceProvider.UpdateToDataType(dtOperation.Key, dtOperation.ProviderItem, dtOperation.DataType); break; case DatastructureOperationType.DeleteFromDataType: PersistenceProvider.RemoveFromDataType(dtOperation.Key, dtOperation.DataType); break; } } catch (Exception ex) { opResult.Exception = ex; opResult.OperationStatus = OperationResult.Status.Failure; } dtOperationResults.Add(opResult); } return(dtOperationResults); }
/// <summary> /// Write to data source /// </summary> /// <param name="operation">contians the operation to be written</param> /// <returns></returns> public OperationResult WriteToDataSource(WriteOperation operation) { if (operation == null) { throw new ArgumentNullException(nameof(operation)); } OperationResult operationResults = new OperationResult(operation, OperationResult.Status.Success); try { switch (operation.OperationType) { case WriteOperationType.Add: var items = new Dictionary <string, ProviderItemBase>(); items.Add(operation.Key, operation.ProviderItem); PersistenceProvider.Add(items); break; case WriteOperationType.Update: var itemsToUpdate = new Dictionary <string, ProviderItemBase>(); itemsToUpdate.Add(operation.Key, operation.ProviderItem); PersistenceProvider.Insert(itemsToUpdate); break; case WriteOperationType.Delete: PersistenceProvider.Remove(new string[] { operation.Key }); break; } } catch (Exception ex) { Logger.LogError(ex.ToString()); operationResults = new OperationResult(operation, OperationResult.Status.Failure); } return(operationResults); }