示例#1
0
        private bool BuildModelData(ref ModelData modelData, IOpcuaServerApp opcuaServerData, string opcuaAppName, string modelFileName, string modelPath, string typesFileName)
        {
            // build model data
            modelData.Name = modelFileName;
            if (!ExtractNodesetUris(ref modelData, modelPath))
            {
                return(false);
            }
            modelData.Types             = typesFileName;
            modelData.NamespaceVariable = Constants.NodesetXml.NamespaceVariablePrefix + _fileSystem.GetFileNameWithoutExtension(modelFileName);

            // check if appioproj file already contains model with imported model name
            var modelName = modelData.Name;

            if (opcuaServerData.Models.Any(x => x.Name == modelName))
            {
                AppioLogger.Warn(LoggingText.ImportInforamtionModelCommandFailureModelDuplication);
                _outputMessages.Add(string.Format(OutputText.ImportInforamtionModelCommandFailureModelNameDuplication, opcuaAppName, modelFileName), string.Empty);
                return(false);
            }
            // check if appioproj file already contains model with imported model namespace uri
            var modelUri = modelData.Uri;

            if (opcuaServerData.Models.Any(x => x.Uri == modelUri))
            {
                AppioLogger.Warn(LoggingText.ImportInforamtionModelCommandFailureModelDuplication);
                _outputMessages.Add(string.Format(OutputText.ImportInforamtionModelCommandFailureModelUriDuplication, opcuaAppName, modelData.Uri), string.Empty);
                return(false);
            }

            return(true);
        }
        public override CommandResult Execute(IEnumerable <string> inputParams)
        {
            if (!ExecuteCommon(inputParams))
            {
                return(new CommandResult(false, _outputMessages));
            }

            // deserialise 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 server is part of client's reference and remove it
            string          clientNewContent = string.Empty;
            IOpcuaServerApp serverReference  = null;

            if (opcuaClientServer != null && (serverReference = opcuaClientServer.ServerReferences.SingleOrDefault(x => x.Name == _serverName)) != null)
            {
                opcuaClientServer.ServerReferences.Remove(serverReference);
                clientNewContent = JsonConvert.SerializeObject(opcuaClientServer, Formatting.Indented);
            }
            else if (opcuaClient != null && (serverReference = opcuaClient.ServerReferences.SingleOrDefault(x => x.Name == _serverName)) != null)
            {
                opcuaClient.ServerReferences.Remove(serverReference);
                clientNewContent = JsonConvert.SerializeObject(opcuaClient, Formatting.Indented);
            }
            else
            {
                AppioLogger.Warn(LoggingText.ReferenceRemoveServerIsNotInClient);
                _outputMessages.Add(string.Format(OutputText.ReferenceRemoveServerIsNotInClient, _serverName, _clientName), string.Empty);
                return(new CommandResult(false, _outputMessages));
            }
            _fileSystem.WriteFile(_clientFullName, new List <string> {
                clientNewContent
            });

            // exit method with success
            AppioLogger.Info(LoggingText.ReferenceRemoveSuccess);
            _outputMessages.Add(string.Format(OutputText.ReferenceRemoveSuccess, _clientName, _serverName), string.Empty);
            return(new CommandResult(true, _outputMessages));
        }
 public void SetupTest()
 {
     _defaultopcuaApp = new OpcuaServerApp();
     _opcuaapp        = new OpcuaServerApp(_name, _url, _port);
 }