Ejemplo n.º 1
0
 public static bool LoadAssembly(SupportedProfiles profile, out Assembly assembly)
 {
     try
     {
         assembly = Assembly.LoadFrom(string.Format(".\\{0}", ProfileManager.GetProfileDLLName(profile)));
     }
     catch (Exception e)
     {
         assembly = null;
         LogManager.Log(string.Format("Error during Assembly load. Profile: {0} ; Message: {1}", profile, e.Message), LogLevel.Error);
         return(false);
     }
     return(true);
 }
Ejemplo n.º 2
0
        public Delta CreateDelta(Stream extract, SupportedProfiles extractType, out string log)
        {
            Delta         nmsDelta      = null;
            ConcreteModel concreteModel = null;
            Assembly      assembly      = null;
            string        loadLog       = string.Empty;
            string        transformLog  = string.Empty;

            if (LoadModelFromExtractFile(extract, extractType, ref concreteModel, ref assembly, out loadLog))
            {
                DoTransformAndLoad(assembly, concreteModel, extractType, out nmsDelta, out transformLog);
            }
            log = string.Concat("Load report:\r\n", loadLog, "\r\nTransform report:\r\n", transformLog);

            return(nmsDelta);
        }
        public static bool LoadAssembly(SupportedProfiles profile, out Assembly assembly)
        {
            try
            {
                string assemblyFile = string.Format(".\\{0}", ProfileManager.GetProfileDLLName(profile));
                assembly = Assembly.LoadFrom(assemblyFile);
            }
            catch (Exception e)
            {
                assembly = null;
                Logger.LogError($"Error during Assembly load. Profile: {profile} ; Message: {e.Message}", e);

                return(false);
            }
            return(true);
        }
Ejemplo n.º 4
0
        private bool TransformModel(Assembly assembly, ConcreteModel concreteModel, SupportedProfiles extractType, out Delta nmsDelta, out string log)
        {
            nmsDelta = null;
            log      = string.Empty;
            bool success = false;

            try
            {
                LogManager.Log(string.Format("Importing {0} data...", extractType), LogLevel.Info);

                switch (extractType)
                {
                case SupportedProfiles.PowerTransformer:
                {
                    // transformation to DMS delta
                    TransformAndLoadReport report = PowerTransformerImporter.Instance.CreateNMSDelta(concreteModel);

                    if (report.Success)
                    {
                        nmsDelta = PowerTransformerImporter.Instance.NMSDelta;
                        success  = true;
                    }
                    else
                    {
                        success = false;
                    }
                    log = report.Report.ToString();
                    PowerTransformerImporter.Instance.Reset();

                    break;
                }

                default:
                {
                    LogManager.Log(string.Format("Import of {0} data is NOT SUPPORTED.", extractType), LogLevel.Warning);
                    break;
                }
                }

                return(success);
            }
            catch (Exception ex)
            {
                LogManager.Log(string.Format("Import unsuccessful: {0}", ex.StackTrace), LogLevel.Error);
                return(false);
            }
        }
Ejemplo n.º 5
0
        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ProductName", ProductName);
            encoder.WriteString("ProductUri", ProductUri);
            encoder.WriteString("VendorName", VendorName);
            encoder.WriteByteString("VendorProductCertificate", VendorProductCertificate);
            encoder.WriteString("SoftwareVersion", SoftwareVersion);
            encoder.WriteString("BuildNumber", BuildNumber);
            encoder.WriteDateTime("BuildDate", BuildDate);
            encoder.WriteString("IssuedBy", IssuedBy);
            encoder.WriteDateTime("IssueDate", IssueDate);
            encoder.WriteEncodeableArray("SupportedProfiles", SupportedProfiles.ToArray(), typeof(SupportedProfile));

            encoder.PopNamespace();
        }
Ejemplo n.º 6
0
        private bool LoadModelFromExtractFile(Stream extract, SupportedProfiles extractType, ref ConcreteModel concreteModelResult, ref Assembly assembly, out string log)
        {
            bool valid = false;

            log = string.Empty;

            System.Globalization.CultureInfo culture = Thread.CurrentThread.CurrentCulture;
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            try
            {
                ProfileManager.LoadAssembly(extractType, out assembly);
                if (assembly != null)
                {
                    CIMModel             cimModel        = new CIMModel();
                    CIMModelLoaderResult modelLoadResult = CIMModelLoader.LoadCIMXMLModel(extract, ProfileManager.Namespace, out cimModel);
                    if (modelLoadResult.Success)
                    {
                        concreteModelResult = new ConcreteModel();
                        ConcreteModelBuilder        builder          = new ConcreteModelBuilder();
                        ConcreteModelBuildingResult modelBuildResult = builder.GenerateModel(cimModel, assembly, ProfileManager.Namespace, ref concreteModelResult);

                        if (modelBuildResult.Success)
                        {
                            valid = true;
                        }
                        log = modelBuildResult.Report.ToString();
                    }
                    else
                    {
                        log = modelLoadResult.Report.ToString();
                    }
                }
            }
            catch (Exception e)
            {
                log = e.Message;
            }
            finally
            {
                Thread.CurrentThread.CurrentCulture = culture;
            }
            return(valid);
        }
Ejemplo n.º 7
0
        public ConditionalValue <Delta> CreateDelta(Stream extract, SupportedProfiles extractType, StringBuilder logBuilder)
        {
            ConditionalValue <Delta> result;
            ConcreteModel            concreteModel = null;
            Assembly assembly = null;

            report = new TransformAndLoadReport();

            string loadLog;

            if (LoadModelFromExtractFile(extract, extractType, ref concreteModel, ref assembly, out loadLog))
            {
                logBuilder.AppendLine($"Load report:\r\n{loadLog}");
                result = DoTransformAndLoad(assembly, concreteModel, extractType, logBuilder);
            }
            else
            {
                result = new ConditionalValue <Delta>(false, null);
            }

            return(result);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Method returns the name of the CIM profile DLL based on the defined enumeration.
 /// </summary>
 /// <param name="profile">supported CIM profile</param>
 /// <returns>name of profile + "CIMProfile_Labs.DLL"</returns>
 public static string GetProfileDLLName(SupportedProfiles profile)
 {
     return(string.Format("{0}CIMProfile_Labs.DLL", profile.ToString()));
 }
Ejemplo n.º 9
0
        private ConditionalValue <Delta> DoTransformAndLoad(Assembly assembly, ConcreteModel concreteModel, SupportedProfiles extractType, StringBuilder logBuilder)
        {
            Delta nmsDelta;
            bool  success;

            try
            {
                Logger.LogInfo($"Importing {extractType} data...");

                if (extractType != SupportedProfiles.Outage)
                {
                    Logger.LogWarn($"Import of {extractType} data is NOT SUPPORTED.");
                }

                TransformAndLoadReport report = OutageImporter.Instance.CreateNMSDelta(concreteModel, resourcesDesc);
                success = report.Success;

                nmsDelta = success ? OutageImporter.Instance.NMSDelta : null;

                logBuilder.Append(report.Report.ToString());
                OutageImporter.Instance.Reset();
            }
            catch (Exception ex)
            {
                success  = false;
                nmsDelta = null;
                Logger.LogError("Import unsuccessful.", ex);
            }

            return(new ConditionalValue <Delta>(success, nmsDelta));
        }
 /// <summary>
 /// Method returns the name of the CIM profile DLL based on the defined enumeration.
 /// </summary>
 /// <param name="profile">supported CIM profile</param>
 /// <returns>name of profile + "CIMProfile_Labs.DLL"</returns>
 public static string GetProfileDLLName(SupportedProfiles profile)
 {
     return(string.Format("{0}CIMProfile_{1}.dll", profile.ToString(), ProductName));
 }