Ejemplo n.º 1
0
        static public IOpcuaapp Opcuaapp(string jsonFileFullName, IFileSystem fileSystem)
        {
            IOpcuaapp deserializedData = null;

            using (var memoryStream = fileSystem.ReadFile(jsonFileFullName))
            {
                StreamReader reader          = new StreamReader(memoryStream);
                var          jsonFileContent = reader.ReadToEnd();

                try
                {
                    var opcuaappType = JObject.Parse(jsonFileContent)["type"].ToString();

                    if (opcuaappType == Constants.ApplicationType.Client)
                    {
                        deserializedData = JsonConvert.DeserializeObject <OpcuaClientApp>(jsonFileContent);
                    }
                    else if (opcuaappType == Constants.ApplicationType.Server)
                    {
                        deserializedData = JsonConvert.DeserializeObject <OpcuaServerApp>(jsonFileContent);
                    }
                    else if (opcuaappType == Constants.ApplicationType.ClientServer)
                    {
                        deserializedData = JsonConvert.DeserializeObject <OpcuaClientServerApp>(jsonFileContent);
                    }
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            return(deserializedData);
        }
Ejemplo n.º 2
0
        private bool DeserializeAppioprojFile(string appioprojFilePath, out IOpcuaapp opcuaappData)
        {
            // deserialize appioproj file
            opcuaappData = Deserialize.Opcuaapp(appioprojFilePath, _fileSystem);
            if (opcuaappData == null)
            {
                AppioLogger.Warn(LoggingText.ImportInforamtionModelCommandFailureCannotReadAppioprojFile);
                _outputMessages.Add(OutputText.ImportInforamtionModelCommandFailureCannotReadAppioprojFile, string.Empty);
                return(false);
            }
            if (opcuaappData.Type == Constants.ApplicationType.Client)
            {
                AppioLogger.Warn(LoggingText.ImportInformationModelCommandOpcuaappIsAClient);
                _outputMessages.Add(OutputText.ImportInformationModelCommandOpcuaappIsAClient, string.Empty);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 3
0
        public CommandResult Execute(IEnumerable <string> inputParams)
        {
            var outputMessages = new MessageLines();
            var messages       = new Messages();

            var(error, stringParams, options) = _resolver.ResolveParams(inputParams);

            if (error != null)
            {
                return(new CommandResult(false, new MessageLines {
                    { error, string.Empty }
                }));
            }

            var opcuaAppName    = stringParams[ParamId.OpcuaAppName];
            var applicationType = stringParams[ParamId.ApplicationType];
            var url             = stringParams[ParamId.Url];
            var port            = stringParams[ParamId.Port];

            // validate opcuaapp name
            if (_fileSystem.GetInvalidFileNameChars().Any(opcuaAppName.Contains) ||
                _fileSystem.GetInvalidPathChars().Any(opcuaAppName.Contains))
            {
                AppioLogger.Warn(LoggingText.InvalidOpcuaappName);
                outputMessages.Add(string.Format(OutputText.NewOpcuaappCommandFailureInvalidProjectName, opcuaAppName),
                                   string.Empty);
                return(new CommandResult(false, outputMessages));
            }

            // validate opcuaapp type
            if (!ValidateApplicationType(ref messages, applicationType, url, port))
            {
                AppioLogger.Warn(messages.loggerMessage);
                outputMessages.Add(messages.outputMessage, string.Empty);
                return(new CommandResult(false, outputMessages));
            }

            // combine project file paths
            var projectFilePath =
                _fileSystem.CombinePaths(opcuaAppName, $"{opcuaAppName}{Constants.FileExtension.Appioproject}");
            var sourceDirectory = _fileSystem.CombinePaths(opcuaAppName, Constants.DirectoryName.SourceCode);
            var mesonFilePath   = _fileSystem.CombinePaths(opcuaAppName, Constants.FileName.SourceCode_meson_build);

            // create project directories
            _fileSystem.CreateDirectory(opcuaAppName);
            _fileSystem.CreateDirectory(sourceDirectory);

            IOpcuaapp opcuaapp = null;

            // deploy files for opcuaapp Client
            if (applicationType == Constants.ApplicationType.Client)
            {
                opcuaapp = new OpcuaClientApp(opcuaAppName);
                _fileSystem.CreateFile(mesonFilePath,
                                       _fileSystem.LoadTemplateFile(
                                           Resources.Resources.AppioOpcuaAppTemplateFileName_meson_ClientType_build));

                DeployTemplateOpcuaClientSourceFiles(sourceDirectory);
            }
            // deploy files for opcuaapp Server
            else if (applicationType == Constants.ApplicationType.Server)
            {
                opcuaapp = new OpcuaServerApp(opcuaAppName, url, port);
                _fileSystem.CreateFile(mesonFilePath,
                                       _fileSystem.LoadTemplateFile(
                                           Resources.Resources.AppioOpcuaAppTemplateFileName_meson_ServerType_build));

                CreateModelsDirectory(opcuaAppName);
                DeployTemplateOpcuaServerSourceFiles(sourceDirectory);
            }
            // deploy files for opcuaapp ClientServer
            else if (applicationType == Constants.ApplicationType.ClientServer)
            {
                opcuaapp = new OpcuaClientServerApp(opcuaAppName, url, port);
                _fileSystem.CreateFile(mesonFilePath,
                                       _fileSystem.LoadTemplateFile(Resources.Resources
                                                                    .AppioOpcuaAppTemplateFileName_meson_ClientServerType_build));

                CreateModelsDirectory(opcuaAppName);
                DeployTemplateOpcuaClientSourceFiles(sourceDirectory);
                DeployTemplateOpcuaServerSourceFiles(sourceDirectory);
            }

            if (!options[ParamId.NoCert])
            {
                if (applicationType == Constants.ApplicationType.ClientServer)
                {
                    _certificateGenerator.Generate(opcuaAppName, Constants.FileName.ClientCryptoPrefix);
                    _certificateGenerator.Generate(opcuaAppName, Constants.FileName.ServerCryptoPrefix);
                }
                else
                {
                    _certificateGenerator.Generate(opcuaAppName);
                }
            }

            // create *.appioproj file
            var opcuaappAsJson = JsonConvert.SerializeObject(opcuaapp, Formatting.Indented);

            _fileSystem.CreateFile(projectFilePath, opcuaappAsJson);

            AppioLogger.Info(string.Format(LoggingText.NewOpcuaappCommandSuccess, opcuaAppName));
            outputMessages.Add(string.Format(OutputText.NewOpcuaappCommandSuccess, opcuaAppName), string.Empty);
            return(new CommandResult(true, outputMessages));
        }