protected override IQueryNode PostProcessNode(IQueryNode node)
        {
            if (node is BooleanQueryNode)
            {
                IList <IQueryNode> children = node.GetChildren();

                if (children != null && children.Count == 1)
                {
                    IQueryNode child = children[0];

                    if (child is ModifierQueryNode)
                    {
                        ModifierQueryNode modNode = (ModifierQueryNode)child;

                        if (modNode is BooleanModifierNode ||
                            modNode.Modifier == Modifier.MOD_NONE)
                        {
                            return(child);
                        }
                    }
                    else
                    {
                        return(child);
                    }
                }
            }

            return(node);
        }
Esempio n. 2
0
        public virtual Query Build(IQueryNode queryNode)
        {
            ModifierQueryNode modifierNode = (ModifierQueryNode)queryNode;

            return((Query)(modifierNode).GetChild().GetTag(
                       QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID));
        }
Esempio n. 3
0
        private IQueryNode ApplyModifier(IQueryNode node, IQueryNode parent)
        {
            if (this.usingAnd)
            {
                if (parent is OrQueryNode)
                {
                    if (node is ModifierQueryNode)
                    {
                        ModifierQueryNode modNode = (ModifierQueryNode)node;

                        if (modNode.Modifier == Modifier.MOD_REQ)
                        {
                            return(modNode.GetChild());
                        }
                    }
                }
                else
                {
                    if (node is ModifierQueryNode)
                    {
                        ModifierQueryNode modNode = (ModifierQueryNode)node;

                        if (modNode.Modifier == Modifier.MOD_NONE)
                        {
                            return(new BooleanModifierNode(modNode.GetChild(), Modifier.MOD_REQ));
                        }
                    }
                    else
                    {
                        return(new BooleanModifierNode(node, Modifier.MOD_REQ));
                    }
                }
            }
            else
            {
                if (node.Parent is AndQueryNode)
                {
                    if (node is ModifierQueryNode)
                    {
                        ModifierQueryNode modNode = (ModifierQueryNode)node;

                        if (modNode.Modifier == Modifier.MOD_NONE)
                        {
                            return(new BooleanModifierNode(modNode.GetChild(), Modifier.MOD_REQ));
                        }
                    }
                    else
                    {
                        return(new BooleanModifierNode(node, Modifier.MOD_REQ));
                    }
                }
            }

            return(node);
        }
 protected virtual void TagModifierButDoNotOverride(IQueryNode node, Modifier mod)
 {
     if (node is ModifierQueryNode)
     {
         ModifierQueryNode modNode = (ModifierQueryNode)node;
         if (modNode.Modifier == Modifier.MOD_NONE)
         {
             node.SetTag(TAG_MODIFIER, mod);
         }
     }
     else
     {
         node.SetTag(TAG_MODIFIER, Modifier.MOD_REQ);
     }
 }
Esempio n. 5
0
        // QueryNode Query(CharSequence field) :
        // {
        // List clauses = new ArrayList();
        //   List modifiers = new ArrayList();
        //   QueryNode q, firstQuery=null;
        //   ModifierQueryNode.Modifier mods;
        //   int conj;
        // }
        // {
        //   mods=Modifiers() q=Clause(field)
        //   {
        //     if (mods == ModifierQueryNode.Modifier.MOD_NONE) firstQuery=q;
        //
        //     // do not create modifier nodes with MOD_NONE
        //      if (mods != ModifierQueryNode.Modifier.MOD_NONE) {
        //        q = new ModifierQueryNode(q, mods);
        //      }
        //      clauses.add(q);
        //   }
        //   (
        //     conj=Conjunction() mods=Modifiers() q=Clause(field)
        //     {
        //       // do not create modifier nodes with MOD_NONE
        //        if (mods != ModifierQueryNode.Modifier.MOD_NONE) {
        //          q = new ModifierQueryNode(q, mods);
        //        }
        //        clauses.add(q);
        //        //TODO: figure out what to do with AND and ORs
        //   }
        //   )*
        //     {
        //      if (clauses.size() == 1 && firstQuery != null)
        //         return firstQuery;
        //       else {
        //       return new BooleanQueryNode(clauses);
        //       }
        //     }
        // }
        public IQueryNode ModClause(string field)
        {
            IQueryNode q;
            Modifier   mods;

            mods = Modifiers();
            q    = Clause(field);
            if (mods != Modifier.MOD_NONE)
            {
                q = new ModifierQueryNode(q, mods);
            }
            { if (true)
              {
                  return(q);
              }
            }
            throw new Exception("Missing return statement in function");
        }
Esempio n. 6
0
        private IQueryNode ApplyModifier(IQueryNode node, Modifier mod)
        {
            // check if modifier is not already defined and is default
            if (!(node is ModifierQueryNode))
            {
                return(new ModifierQueryNode(node, mod));
            }
            else
            {
                ModifierQueryNode modNode = (ModifierQueryNode)node;

                if (modNode.Modifier == Modifier.MOD_NONE)
                {
                    return(new ModifierQueryNode(modNode.GetChild(), mod));
                }
            }

            return(node);
        }
Esempio n. 7
0
        private static Occur GetModifierValue(IQueryNode node)
        {
            if (node is ModifierQueryNode)
            {
                ModifierQueryNode mNode = ((ModifierQueryNode)node);
                switch (mNode.Modifier)
                {
                case Modifier.MOD_REQ:
                    return(Occur.MUST);

                case Modifier.MOD_NOT:
                    return(Occur.MUST_NOT);

                case Modifier.MOD_NONE:
                    return(Occur.SHOULD);
                }
            }

            return(Occur.SHOULD);
        }
        private static BooleanClause.Occur GetModifierValue(IQueryNode node)
        {
            if (node is ModifierQueryNode)
            {
                ModifierQueryNode mNode    = ((ModifierQueryNode)node);
                Modifier          modifier = mNode.Modifier;

                if (Modifier.MOD_NONE.Equals(modifier))
                {
                    return(BooleanClause.Occur.SHOULD);
                }
                else if (Modifier.MOD_NOT.Equals(modifier))
                {
                    return(BooleanClause.Occur.MUST_NOT);
                }
                else
                {
                    return(BooleanClause.Occur.MUST);
                }
            }

            return(BooleanClause.Occur.SHOULD);
        }