コード例 #1
0
        public virtual void Visit(SoqlSoodaClassExpression v)
        {
            if (v.Path != null)
            {
                v.Path.Accept(this);
                Output.Write('.');
            }

            Output.Write("SoodaClass");
        }
コード例 #2
0
 void Sooda.QL.ISoqlVisitor.Visit(SoqlSoodaClassExpression v)
 {
     if (v.Path != null)
     {
         v.Path.Accept(this);
     }
     else
     {
         if (!_result.Contains(_rootClass))
         {
             _result.Add(_rootClass);
         }
     }
 }
コード例 #3
0
        public virtual void Visit(SoqlSoodaClassExpression v)
        {
            if (v.Path != null)
            {
                v.Path.Accept(this);
                Output.Write('.');
            }

            Output.Write("SoodaClass");
        }
コード例 #4
0
 void Sooda.QL.ISoqlVisitor.Visit(SoqlSoodaClassExpression v)
 {
     if (v.Path != null)
     {
         v.Path.Accept(this);
     }
     else
     {
         if (!_result.Contains(_rootClass))
             _result.Add(_rootClass);
     }
 }
コード例 #5
0
        public override void Visit(SoqlSoodaClassExpression v)
        {
            ClassInfo currentClass;
            string p = "";
            string firstTableAlias = null;

            if (v.Path != null)
            {
                IFieldContainer container = GenerateTableJoins(v.Path, out p, out firstTableAlias);
                currentClass = container as ClassInfo;
            }
            else
            {
                if (Query.From.Count != 1)
                    throw new Exception("Ambiguous SoodaClass!");
                p = ExpressionPrefixToTableAlias[Query.From[0]];
                currentClass = (ClassInfo) Schema.FindContainerByName(Query.From[0]);
            }

            List<ClassInfo> subclasses = currentClass.GetSubclassesForSchema(Schema);
            if (subclasses.Count == 0)
            {
                Output.Write('\'');
                Output.Write(currentClass.Name);
                Output.Write('\'');
            }
            else
            {
                Output.Write("(case ");
                Output.Write(p);
                Output.Write('.');
                Output.Write(currentClass.SubclassSelectorField.DBColumnName);

                OutputSoodaClassCase(currentClass);
                foreach (ClassInfo subci in subclasses)
                    OutputSoodaClassCase(subci);

                Output.Write(" else null end)");
            }
        }