Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 5
0
        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();
            }
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        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();
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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();
            }
        }