コード例 #1
0
 private void PopulateTreeView()
 {
     UnregisterModelUpdateHandlers();
     SetObjects(ConnectionTreeModel.RootNodes);
     RegisterModelUpdateHandlers();
     NodeSearcher = new NodeSearcher(ConnectionTreeModel);
     ExecutePostSetupActions();
 }
コード例 #2
0
 private void PopulateTreeView(ConnectionTreeModel newModel)
 {
     SetObjects(newModel.RootNodes);
     RegisterModelUpdateHandlers(newModel);
     NodeSearcher = new NodeSearcher(newModel);
     ExecutePostSetupActions();
     AutoResizeColumn(Columns[0]);
 }
コード例 #3
0
 private void PopulateTreeView()
 {
     UnregisterModelUpdateHandlers();
     olvConnections.SetObjects(ConnectionTreeModel.RootNodes);
     RegisterModelUpdateHandlers();
     _nodeSearcher = new NodeSearcher(ConnectionTreeModel);
     ExpandPreviouslyOpenedFolders();
     ExpandRootConnectionNode();
     OpenConnectionsFromLastSession();
 }
コード例 #4
0
        /// <summary>
        /// Merges schemes from multiple APIs
        /// </summary>
        /// <param name="providers">
        /// The API providers descriptions
        /// </param>
        /// <param name="createdTypes">
        /// The list of created types.
        /// <remarks>
        /// This is the mutation dictionary and will be filled during creation process
        /// </remarks>
        /// </param>
        /// <returns>
        /// Merged API
        /// </returns>
        private static MergedApiRoot MergeApis(List <ApiProvider> providers, Dictionary <string, MergedType> createdTypes)
        {
            var apiRoot = new MergedApiRoot("api");

            apiRoot.AddProviders(providers.Select(p => new FieldProvider {
                Provider = p, FieldType = p.Description
            }));
            apiRoot.Category = providers.Count > 1
                                   ? MergedObjectType.EnCategory.MultipleApiType
                                   : MergedObjectType.EnCategory.SingleApiType;

            foreach (var provider in providers)
            {
                MergeFields(apiRoot, provider.Description.Fields, provider, new List <string>(), false, createdTypes);

                foreach (var apiMutation in provider.Description.Mutations)
                {
                    var mutationName =
                        $"{MergedType.EscapeName(provider.Description.ApiName)}_{MergedType.EscapeName(apiMutation.Name)}";
                    MergedField mutation = null;
                    switch (apiMutation.Type)
                    {
                    case ApiMutation.EnType.ConnectionCreate:
                    case ApiMutation.EnType.ConnectionUpdate:
                    case ApiMutation.EnType.ConnectionDelete:
                    case ApiMutation.EnType.Connection:
                        mutation = RegisterConnectionMutation(provider, apiMutation, apiRoot, createdTypes);
                        break;

                    case ApiMutation.EnType.Untyped:
                        mutation = RegisterUntypedMutation(provider, apiMutation, apiRoot, createdTypes);
                        break;
                    }

                    if (mutation != null)
                    {
                        apiRoot.Mutations[mutationName] = mutation;
                    }
                }
            }

            var nodeSearcher = new NodeSearcher(apiRoot);

            apiRoot.NodeSearher = nodeSearcher;
            return(apiRoot);
        }
コード例 #5
0
        public void OnetimeSetup()
        {
            var connectionTreeModel = SetupConnectionTreeModel();

            _nodeSearcher = new NodeSearcher(connectionTreeModel);
        }
コード例 #6
0
ファイル: NodeSearcherTests.cs プロジェクト: rlebowitz/ai
        public void TestEvaluateWith_WildCardThatNotMatched()
        {
            var node = new Node();
            var path = "Test 1 <that> _ <topic> topic";
            var template = "<srai>TEST</srai>";
            node.AddCategory(path, template);

            var pathAlt = "Alt Test <that> that <topic> topic";
            var templateAlt = "<srai>TEST ALT</srai>";
            node.AddCategory(pathAlt, templateAlt);

            var request = new Request("Test 1", _user);
            var searcher = new NodeSearcher();
            var result = searcher.Evaluate(node, "Alt Test <that> that <topic> topic", MatchState.UserInput,
                new StringBuilder());
            Assert.AreEqual("<srai>TEST ALT</srai>", result);
        }
コード例 #7
0
ファイル: NodeSearcherTests.cs プロジェクト: rlebowitz/ai
        public void TestEvaluateWithWildcardsInDifferentPartsOfPath()
        {
            var node = new Node();
            var path = "Test * 1 <that> Test * 1 <topic> Test * 1";
            var template = "<srai>TEST</srai>";
            node.AddCategory(path, template);

            var pathAlt = "Alt Test <that> that <topic> topic";
            var templateAlt = "<srai>TEST ALT</srai>";
            node.AddCategory(pathAlt, templateAlt);

            var request = new Request("Test 1", _user);
            var searcher = new NodeSearcher();
            var result = searcher.Evaluate(node,
                "Test WILDCARD USER WORDS 1 <that> Test WILDCARD THAT WORDS 1 <topic> Test WILDCARD TOPIC WORDS 1",
                MatchState.UserInput, new StringBuilder());
            Assert.AreEqual("<srai>TEST</srai>", result);
            Assert.AreEqual("WILDCARD USER WORDS", searcher.Query.InputStar[0]);
            Assert.AreEqual("WILDCARD THAT WORDS", searcher.Query.ThatStar[0]);
            Assert.AreEqual("WILDCARD TOPIC WORDS", searcher.Query.TopicStar[0]);
        }
コード例 #8
0
ファイル: NodeSearcherTests.cs プロジェクト: rlebowitz/ai
        public void TestEvaluateWithMultipleWildcardsSwitched()
        {
            var node = new Node();
            var path = "Test * 1 _ <that> Test * 1 _ <topic> Test _ 1 *";
            var template = "<srai>TEST</srai>";
            node.AddCategory(path, template);

            var pathAlt = "Alt Test <that> that <topic> topic";
            var templateAlt = "<srai>TEST ALT</srai>";
            node.AddCategory(pathAlt, templateAlt);

            var request = new Request("Test 1", _user);
            var searcher = new NodeSearcher();
            var result = searcher.Evaluate(node,
                "Test FIRST USER 1 SECOND USER <that> Test FIRST THAT 1 SECOND THAT <topic> Test FIRST TOPIC 1 SECOND TOPIC",
                MatchState.UserInput, new StringBuilder());
            Assert.AreEqual("<srai>TEST</srai>", result);
            Assert.AreEqual(2, searcher.Query.InputStar.Count);
            Assert.AreEqual("SECOND USER", searcher.Query.InputStar[0]);
            Assert.AreEqual("FIRST USER", searcher.Query.InputStar[1]);
            Assert.AreEqual(2, searcher.Query.ThatStar.Count);
            Assert.AreEqual("SECOND THAT", searcher.Query.ThatStar[0]);
            Assert.AreEqual("FIRST THAT", searcher.Query.ThatStar[1]);
            Assert.AreEqual(2, searcher.Query.TopicStar.Count);
            Assert.AreEqual("SECOND TOPIC", searcher.Query.TopicStar[0]);
            Assert.AreEqual("FIRST TOPIC", searcher.Query.TopicStar[1]);
        }
コード例 #9
0
ファイル: NodeSearcherTests.cs プロジェクト: rlebowitz/ai
        public void TestEvaluateWithInternationalCharset()
        {
            var node = new Node();

            var path = "中 文 <that> * <topic> *";
            var template = "中文 (Chinese)";
            node.AddCategory(path, template);

            var path2 = "日 本 語 <that> * <topic> *";
            var template2 = "日 本 語 (Japanese)";
            node.AddCategory(path2, template2);

            var path3 = "Русский язык <that> * <topic> *";
            var template3 = "Русский язык (Russian)";
            node.AddCategory(path3, template3);

            var request = new Request("中 文", _user);
            var searcher = new NodeSearcher();
            var result = searcher.Evaluate(node, "中 文 <that> * <topic> *", MatchState.UserInput, new StringBuilder());
            Assert.AreEqual("中文 (Chinese)", result);

            request = new Request("日 本 語", _user);
            searcher = new NodeSearcher();
            result = searcher.Evaluate(node, "日 本 語 <that> * <topic> *", MatchState.UserInput, new StringBuilder());
            Assert.AreEqual("日 本 語 (Japanese)", result);

            request = new Request("Русский язык", _user);
            searcher = new NodeSearcher();
            result = searcher.Evaluate(node, "Русский язык <that> * <topic> *", MatchState.UserInput,
                new StringBuilder());
            Assert.AreEqual("Русский язык (Russian)", result);
        }
コード例 #10
0
ファイル: NodeSearcherTests.cs プロジェクト: rlebowitz/ai
 public void TestEvaluateWithEmptyNode()
 {
     var node = new Node();
     var request = new Request("Test 1", _user);
     var searcher = new NodeSearcher();
     var result = searcher.Evaluate(node, "Test 1 <that> that <topic> topic", MatchState.UserInput,
         new StringBuilder());
     Assert.AreEqual(string.Empty, result);
 }