예제 #1
0
        private TextOutput SyncSoftwareInfo(Structure.Software infoResultSoftware)
        {
            TextOutput result;

            Structure.Software libSoft;

            if (!Promise.SoftwareLib.All.TryGetValue(infoResultSoftware.Code, out libSoft))
            {
                if (string.IsNullOrEmpty(_networkName))
                {
                    if (Promise.Network != null)
                    {
                        _networkName = Promise.Network.Name;
                    }
                }

                if (!string.IsNullOrEmpty(_softwareType))
                {
                    infoResultSoftware.SoftwareType = _softwareType;
                }

                //new software found.
                Promise.SoftwareLib.AddNewSoft(infoResultSoftware, _networkName);
                Promise.SoftwareLib.DumpToFile();

                result = new TextOutput(Verbosity, $"New {infoResultSoftware.SoftwareType} software added to Lib!");
                return(result);
            }

            // known soft, trying to update
            StringBuilder updateString = new StringBuilder();

            if (!libSoft.Effect.Equals(infoResultSoftware.Effect))
            {
                updateString.AppendLine($"Effect updated from {libSoft.Effect} to {infoResultSoftware.Effect}");
                libSoft.Effect = infoResultSoftware.Effect;
            }
            if (!libSoft.InevitableEffect.Equals(infoResultSoftware.InevitableEffect))
            {
                updateString.AppendLine($"Inevitable Effect updated from {libSoft.InevitableEffect} to {infoResultSoftware.InevitableEffect}");
                libSoft.InevitableEffect = infoResultSoftware.InevitableEffect;
            }
            if (!libSoft.NodeTypesString.Equals(infoResultSoftware.NodeTypesString))
            {
                updateString.AppendLine($"Supported Node Types updated from {libSoft.NodeTypesString} to {infoResultSoftware.NodeTypesString}");
                libSoft.NodeTypesString = infoResultSoftware.NodeTypesString;
            }
            if (!libSoft.Duration.Equals(infoResultSoftware.Duration))
            {
                updateString.AppendLine($"Supported Node Types updated from {libSoft.Duration} to {infoResultSoftware.Duration}");
                libSoft.Duration = infoResultSoftware.Duration;
            }

            //check if there was an update
            if (updateString.ToString().Equals(""))
            {
                //no changes found
                result = new TextOutput(Verbosity, $"Got no new info on sofware #{libSoft.Code}.");
            }
            else
            {
                //changes found, dumping and updating
                Promise.SoftwareLib.DumpToFile();
                result = new TextOutput(Verbosity, $"Sofware #{libSoft.Code}  updated: \n{updateString}");
            }

            return(result);
        }
예제 #2
0
 public static string Assemble(Structure.Software programm)
 {
     return(Assemble(programm.Code.ToString(), programm.Effect, programm.InevitableEffect, programm.NodeTypesString, programm.Duration));
 }