public void SetupTest() { _defaultopcuaApp = new OpcuaServerApp(); _opcuaapp = new OpcuaServerApp(_name, _url, _port); }
public override CommandResult Execute(IEnumerable <string> inputParams) { if (!ExecuteCommon(inputParams)) { return(new CommandResult(false, _outputMessages)); } // validate server var serverFullName = _fileSystem.CombinePaths(_serverName, _serverName + Constants.FileExtension.Appioproject); if (!ValidateServer(_serverName, serverFullName)) { return(new CommandResult(false, _outputMessages)); } // deserialize server file OpcuaServerApp opcuaServer = SlnUtility.DeserializeFile <OpcuaServerApp>(serverFullName, _fileSystem); if (opcuaServer == null) { AppioLogger.Warn(LoggingText.ReferenceAddCouldntDeserliazeServer); _outputMessages.Add(string.Format(OutputText.ReferenceAddCouldntDeserliazeServer, serverFullName), string.Empty); return(new CommandResult(false, _outputMessages)); } // check if deserialized server is not a client if (opcuaServer.Type == Constants.ApplicationType.Client) { AppioLogger.Warn(LoggingText.ReferenceAddClientCannotBeReferred); _outputMessages.Add(string.Format(OutputText.ReferenceAddClientCannotBeReferred, _serverName), string.Empty); return(new CommandResult(false, _outputMessages)); } // deserialize client file OpcuaClientApp opcuaClient = null; OpcuaClientServerApp opcuaClientServer = null; RefUtility.DeserializeClient(ref opcuaClient, ref opcuaClientServer, _clientFullName, _fileSystem); if (opcuaClient == null && opcuaClientServer == null) { AppioLogger.Warn(LoggingText.ReferenceCouldntDeserliazeClient); _outputMessages.Add(string.Format(OutputText.ReferenceCouldntDeserliazeClient, _clientFullName), string.Empty); return(new CommandResult(false, _outputMessages)); } // check if deserialized client is not a server if (!ClientIsNotAServer(ref opcuaClient, ref opcuaClientServer, _clientName)) { return(new CommandResult(false, _outputMessages)); } // check if server is not already a part of client's references if (!ServerIsNotYetClientsReference(ref opcuaClient, ref opcuaClientServer, _clientName, opcuaServer.Name)) { return(new CommandResult(false, _outputMessages)); } // overwrite client appioproj file with new server reference string clientNewContent = string.Empty; if (opcuaClientServer != null) { opcuaClientServer.ServerReferences.Add(opcuaServer); clientNewContent = JsonConvert.SerializeObject(opcuaClientServer, Formatting.Indented); } else { opcuaClient.ServerReferences.Add(opcuaServer); clientNewContent = JsonConvert.SerializeObject(opcuaClient, Formatting.Indented); } _fileSystem.WriteFile(_clientFullName, new List <string> { clientNewContent }); // exit with success AppioLogger.Info(LoggingText.ReferenceAddSuccess); _outputMessages.Add(string.Format(OutputText.RefereneceAddSuccess, _serverName, _clientName), string.Empty); return(new CommandResult(true, _outputMessages)); }
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)); }