public UpdateResult TestApplyDeltaUpdate(List <long> gids) { string message = "Testing apply delta update method started."; Console.WriteLine(message); CommonTrace.WriteTrace(CommonTrace.TraceInfo, message); UpdateResult updateResult = null; try { Dictionary <DMSType, ResourceDescription> updates = CreateResourcesForUpdate(gids); Delta delta = new Delta(); foreach (ResourceDescription rd in updates.Values) { delta.AddDeltaOperation(DeltaOpType.Update, rd, true); } updateResult = GdaQueryProxy.ApplyUpdate(delta); message = "Testing apply delta update method finished. \n" + updateResult.ToString(); Console.WriteLine(message); CommonTrace.WriteTrace(CommonTrace.TraceInfo, message); } catch (Exception ex) { message = string.Format("Testing apply delta update method failed. {0}\n", ex.Message); if (updateResult != null) { message += updateResult.ToString(); } Console.WriteLine(message); CommonTrace.WriteTrace(CommonTrace.TraceError, message); } return(updateResult); }
private void ImportAsset() { SortedDictionary <string, object> cimAssets = concreteModel.GetAllObjectsOfType("FTN.Asset"); if (cimAssets != null) { foreach (KeyValuePair <string, object> cimAssetsPairs in cimAssets) { FTN.Asset cimAssset = cimAssetsPairs.Value as FTN.Asset; ResourceDescription rd = CreateAssetResourceDescription(cimAssset); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("Asset ID = ").Append(cimAssset.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("Asset ID = ").Append(cimAssset.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportRegulatingControls() { SortedDictionary <string, object> cimRegulatingControls = concreteModel.GetAllObjectsOfType("FTN.RegulatingControl"); if (cimRegulatingControls != null) { foreach (KeyValuePair <string, object> RegulatingControlPair in cimRegulatingControls) { FTN.RegulatingControl cimRegulatingControl = RegulatingControlPair.Value as FTN.RegulatingControl; ResourceDescription rd = CreateRegulatingControlResourceDescription(cimRegulatingControl); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("RegulatingControl ID = ").Append(cimRegulatingControl.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("RegulatingControl ID = ").Append(cimRegulatingControl.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportPhaseImpedanceDatas() { SortedDictionary <string, object> cimPhaseImpedanceDatas = concreteModel.GetAllObjectsOfType("FTN.PhaseImpedanceData"); if (cimPhaseImpedanceDatas != null) { foreach (KeyValuePair <string, object> cimPhaseImpedanceDataPair in cimPhaseImpedanceDatas) { FTN.PhaseImpedanceData cimPhaseImpedanceData = cimPhaseImpedanceDataPair.Value as FTN.PhaseImpedanceData; ResourceDescription rd = CreatePhaseImpedanceDataResourceDescription(cimPhaseImpedanceData); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("PhaseImpedanceData ID = ").Append(cimPhaseImpedanceData.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("PhaseImpedanceData ID = ").Append(cimPhaseImpedanceData.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportGeographicalRegions() { SortedDictionary <string, object> cimRegions = concreteModel.GetAllObjectsOfType("DERMS.GeographicalRegion"); if (cimRegions != null) { foreach (KeyValuePair <string, object> cimRegionPair in cimRegions) { DERMS.GeographicalRegion cimRegion = cimRegionPair.Value as DERMS.GeographicalRegion; ResourceDescription rd = CreateGeographicalRegionResourceDescription(cimRegion); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("GeographicalRegion ID = ").Append(cimRegion.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("GeographicalRegion ID = ").Append(cimRegion.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportSeriesCompensators() { SortedDictionary <string, object> cimSeriesCompensators = concreteModel.GetAllObjectsOfType("FTN.SeriesCompensator"); if (cimSeriesCompensators != null) { foreach (KeyValuePair <string, object> cimSeriesCompensatorPair in cimSeriesCompensators) { FTN.SeriesCompensator cimSeriesCompensator = cimSeriesCompensatorPair.Value as FTN.SeriesCompensator; ResourceDescription rd = CreateSeriesCompensatorResourceDescription(cimSeriesCompensator); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("SeriesCompensator ID = ").Append(cimSeriesCompensator.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("SeriesCompensator ID = ").Append(cimSeriesCompensator.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportBay() { SortedDictionary <string, object> bays = concreteModel.GetAllObjectsOfType("FTN.Bay"); if (bays != null) { foreach (KeyValuePair <string, object> baysPair in bays) { FTN.Bay bay = baysPair.Value as FTN.Bay; ResourceDescription rd = CreateBaysResourceDescription(bay); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("Bay ID = ").Append(bay.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("Bay ID = ").Append(bay.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private void ImportConnectivityNodes() { SortedDictionary <string, object> cimConnectivityNodes = concreteModel.GetAllObjectsOfType("FTN.ConnectivityNode"); if (cimConnectivityNodes != null) { foreach (KeyValuePair <string, object> cimConnectivityNodePair in cimConnectivityNodes) { FTN.ConnectivityNode cimConnectivityNode = cimConnectivityNodePair.Value as FTN.ConnectivityNode; ResourceDescription rd = CreateConnectivityNodeResourceDescription(cimConnectivityNode); if (rd != null) { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("ConnectivityNode ID = ").Append(cimConnectivityNode.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { report.Report.Append("ConnectivityNode ID = ").Append(cimConnectivityNode.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }
private Dictionary <DMSType, ResourceDescription> CreateResourcesForUpdate(List <long> gids) { Dictionary <DMSType, ResourceDescription> updates = new Dictionary <DMSType, ResourceDescription>(new DMSTypeComparer()); Delta delta = new Delta(); ResourceDescription rd = null; List <ModelCode> propertyIDs = null; DMSType type; #region Creating resources foreach (long gid in gids) { type = (DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(gid); propertyIDs = modelResourcesDesc.GetAllPropertyIds(modelResourcesDesc.GetModelCodeFromType(type)); rd = new ResourceDescription(gid); foreach (ModelCode propertyId in propertyIDs) { if (!modelResourcesDesc.NotSettablePropertyIds.Contains(propertyId)) { switch (Property.GetPropertyType(propertyId)) { case PropertyType.Bool: rd.AddProperty(new Property(propertyId, true)); break; case PropertyType.Byte: rd.AddProperty(new Property(propertyId, (byte)7)); break; case PropertyType.Int32: rd.AddProperty(new Property(propertyId, (int)500)); break; case PropertyType.Int64: case PropertyType.TimeSpan: case PropertyType.DateTime: rd.AddProperty(new Property(propertyId, (long)3112)); break; case PropertyType.Enum: rd.AddProperty(new Property(propertyId, (short)2)); break; case PropertyType.Reference: rd.AddProperty(new Property(propertyId, (long)0)); break; case PropertyType.Float: rd.AddProperty(new Property(propertyId, (float)1.05)); break; case PropertyType.String: rd.AddProperty(new Property(propertyId, "UpdateString")); break; case PropertyType.Int64Vector: List <long> longVector = new List <long>(); longVector.Add((long)20); longVector.Add((long)21); longVector.Add((long)22); longVector.Add((long)23); longVector.Add((long)24); longVector.Add((long)25); rd.AddProperty(new Property(propertyId, longVector)); break; case PropertyType.FloatVector: List <float> floatVector = new List <float>(); floatVector.Add((float)21.1); floatVector.Add((float)22.2); floatVector.Add((float)23.3); floatVector.Add((float)24.4); floatVector.Add((float)25.5); rd.AddProperty(new Property(propertyId, floatVector)); break; case PropertyType.EnumVector: List <short> enumVector = new List <short>(); enumVector.Add((short)44); enumVector.Add((short)45); enumVector.Add((short)46); rd.AddProperty(new Property(propertyId, enumVector)); break; default: break; } } } if (!updates.ContainsKey(type)) { updates.Add(type, rd); delta.AddDeltaOperation(DeltaOpType.Update, rd, true); } } #endregion Creating resources #region Set references //SetPowerTransformerReferences(updates); //SetTransformerWindingReferences(updates); //SetWindingTestRefernces(updates); #endregion Set references return(updates); }
public UpdateResult ApplyDelta(Delta delta) { GetDictionaries().GetAwaiter().GetResult(); bool applyingStarted = false; bool transactionSucceded = false; UpdateResult updateResult = new UpdateResult(); Delta newDelta = new Delta(); GetShallowCopyModel(); affectedEntities = new AffectedEntities(); try { CommonTrace.WriteTrace(CommonTrace.TraceInfo, "Applying delta to network model."); Dictionary <short, int> typesCounters = GetCounters(); Dictionary <long, long> globalIdPairs = new Dictionary <long, long>(); var result = GetAllCounters(typesCounters); Delta.Counter = result; delta.FixNegativeToPositiveIds(ref typesCounters, ref globalIdPairs); updateResult.GlobalIdPairs = globalIdPairs; delta.SortOperations(); applyingStarted = true; foreach (ResourceDescription rd in delta.InsertOperations) { // We need newRd because old-new mapping InsertEntity(rd, out ResourceDescription newRd); newDelta.AddDeltaOperation(DeltaOpType.Insert, newRd, true); } #region Update&Delete foreach (ResourceDescription rd in delta.UpdateOperations) { UpdateEntity(rd); } foreach (ResourceDescription rd in delta.DeleteOperations) { DeleteEntity(rd); } #endregion Update&Delete SetDictionaries().GetAwaiter().GetResult(); transactionSucceded = TryApplyTransaction(); if (transactionSucceded) { MergeModelsFinal(); } } catch (Exception ex) { string message = string.Format("Applying delta to network model failed. {0}.", ex.Message); CommonTrace.WriteTrace(CommonTrace.TraceError, message); applyingStarted = false; updateResult.Result = ResultType.Failed; updateResult.Message = message; } finally { if (applyingStarted && transactionSucceded) { if (newDelta.InsertOperations.Count > 0) { SaveDelta(delta); } } else { RestoreModel(); } if (updateResult.Result == ResultType.Succeeded) { string mesage = "Applying delta to network model successfully finished."; CommonTrace.WriteTrace(CommonTrace.TraceInfo, mesage); updateResult.Message = mesage; } } return(updateResult); }
private void ImportDiscrete() { SortedDictionary <string, object> cimBaseVoltages = concreteModel.GetAllObjectsOfType("FTN.Discrete"); if (cimBaseVoltages != null) { foreach (KeyValuePair <string, object> cimBaseVoltagePair in cimBaseVoltages) { FTN.Discrete cimBaseVoltage = cimBaseVoltagePair.Value as FTN.Discrete; ResourceDescription rd = CreateDiscreteResourceDescription(cimBaseVoltage); if (rd != null) { if (ModelCodeHelper.ExtractEntityIdFromGlobalId(rd.Id) > 0) { delta.AddDeltaOperation(DeltaOpType.Update, rd, true); report.Report.Append("EnergyConsumer ID = ").Append(cimBaseVoltage.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } else { delta.AddDeltaOperation(DeltaOpType.Insert, rd, true); report.Report.Append("Discrete ID = ").Append(cimBaseVoltage.ID).Append(" SUCCESSFULLY converted to GID = ").AppendLine(rd.Id.ToString()); } } else { report.Report.Append("Discrete ID = ").Append(cimBaseVoltage.ID).AppendLine(" FAILED to be converted"); } } report.Report.AppendLine(); } }