From: <fab...@us...> - 2009-05-05 04:15:29
|
Revision: 4242 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4242&view=rev Author: fabiomaulo Date: 2009-05-05 04:15:19 +0000 (Tue, 05 May 2009) Log Message: ----------- preparing porting for insert/update HQL Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/HqlSqlWalkerTreeAdapter.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/InsertStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs 2009-05-04 23:46:25 UTC (rev 4241) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs 2009-05-05 04:15:19 UTC (rev 4242) @@ -14,6 +14,7 @@ namespace NHibernate.Hql.Ast.ANTLR.Exec { + [CLSCompliant(false)] public class MultiTableDeleteExecutor : AbstractStatementExecutor { private static readonly ILog log = LogManager.GetLogger(typeof(MultiTableDeleteExecutor)); Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs 2009-05-04 23:46:25 UTC (rev 4241) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs 2009-05-05 04:15:19 UTC (rev 4242) @@ -11,7 +11,7 @@ [CLSCompliant(false)] public class DeleteStatement : AbstractRestrictableStatement { - private static readonly ILog log = LogManager.GetLogger(typeof(QueryNode)); + private static readonly ILog log = LogManager.GetLogger(typeof(DeleteStatement)); public DeleteStatement(IToken token) : base(token) {} Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/HqlSqlWalkerTreeAdapter.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/HqlSqlWalkerTreeAdapter.cs 2009-05-04 23:46:25 UTC (rev 4241) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/HqlSqlWalkerTreeAdapter.cs 2009-05-05 04:15:19 UTC (rev 4242) @@ -29,15 +29,13 @@ ret = new QueryNode(payload); break; case HqlSqlWalker.UPDATE: - //return UpdateStatement.class; - ret = new SqlNode(payload); + ret = new UpdateStatement(payload); break; case HqlSqlWalker.DELETE: ret = new DeleteStatement(payload); break; case HqlSqlWalker.INSERT: - //return InsertStatement.class; - ret = new SqlNode(payload); + ret = new InsertStatement(payload); break; case HqlSqlWalker.INTO: ret = new IntoClause(payload); @@ -57,7 +55,7 @@ case HqlSqlWalker.INDEX_OP: ret = new IndexNode(payload); break; - // Alias references and identifiers use the same node class. + // Alias references and identifiers use the same node class. case HqlSqlWalker.ALIAS_REF: case HqlSqlWalker.IDENT: ret = new IdentNode(payload); @@ -154,7 +152,6 @@ default: ret = new SqlNode(payload); break; - } Initialise(ret); @@ -163,11 +160,11 @@ public override object DupNode(object t) { - IASTNode node = t as IASTNode; + var node = t as IASTNode; if (node != null) { - IASTNode dupped = (IASTNode)Create(node.Token); + var dupped = (IASTNode) Create(node.Token); dupped.Parent = node.Parent; @@ -179,16 +176,16 @@ } } - void Initialise(object node) + private void Initialise(object node) { - IInitializableNode initableNode = node as IInitializableNode; + var initableNode = node as IInitializableNode; if (initableNode != null) { initableNode.Initialize(_walker); } - ISessionFactoryAwareNode sessionNode = node as ISessionFactoryAwareNode; + var sessionNode = node as ISessionFactoryAwareNode; if (sessionNode != null) { @@ -196,4 +193,4 @@ } } } -} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/InsertStatement.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/InsertStatement.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/InsertStatement.cs 2009-05-05 04:15:19 UTC (rev 4242) @@ -0,0 +1,45 @@ +using System; +using Antlr.Runtime; + +namespace NHibernate.Hql.Ast.ANTLR.Tree +{ + /// <summary> + /// Defines a top-level AST node representing an HQL "insert select" statement. + /// </summary> + [Serializable] + [CLSCompliant(false)] + public class InsertStatement : AbstractStatement + { + public InsertStatement(IToken token) : base(token) {} + public override bool NeedsExecutor + { + get { return true; } + } + + public override int StatementType + { + get { return HqlSqlWalker.INSERT; } + } + + /// <summary> Retreive this insert statement's into-clause. </summary> + /// <returns> The into-clause </returns> + public IntoClause IntoClause + { + get{return (IntoClause)GetFirstChild();} + } + + /// <summary> Retreive this insert statement's select-clause.</summary> + /// <returns> The select-clause. </returns> + public SelectClause SelectClause + { + get{return ((QueryNode)IntoClause.NextSibling).GetSelectClause();} + } + + /// <summary> Performs detailed semantic validation on this insert statement tree. </summary> + /// <exception cref="QueryException">Indicates validation failure.</exception> + public virtual void Validate() + { + IntoClause.ValidateTypes(SelectClause); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs 2009-05-05 04:15:19 UTC (rev 4242) @@ -0,0 +1,44 @@ +using System; +using Antlr.Runtime; +using log4net; +using NHibernate.Hql.Ast.ANTLR.Util; + +namespace NHibernate.Hql.Ast.ANTLR.Tree +{ + /// <summary> + /// Defines a top-level AST node representing an HQL update statement. + /// </summary> + [Serializable] + [CLSCompliant(false)] + public class UpdateStatement : AbstractRestrictableStatement + { + private static readonly ILog log = LogManager.GetLogger(typeof (UpdateStatement)); + + public UpdateStatement(IToken token) : base(token) {} + + public override bool NeedsExecutor + { + get { return true; } + } + + public override int StatementType + { + get { return HqlSqlWalker.UPDATE; } + } + + public IASTNode SetClause + { + get { return ASTUtil.FindTypeInChildren(this, HqlSqlWalker.SET); } + } + + protected override ILog GetLog() + { + return log; + } + + protected override int GetWhereClauseParentTokenType() + { + return HqlSqlWalker.SET; + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-04 23:46:25 UTC (rev 4241) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-05 04:15:19 UTC (rev 4242) @@ -497,6 +497,8 @@ <Compile Include="Hql\Ast\ANTLR\InvalidWithClauseException.cs" /> <Compile Include="Hql\Ast\ANTLR\IParseErrorHandler.cs" /> <Compile Include="Hql\Ast\ANTLR\Loader\QueryLoader.cs" /> + <Compile Include="Hql\Ast\ANTLR\Tree\InsertStatement.cs" /> + <Compile Include="Hql\Ast\ANTLR\Tree\UpdateStatement.cs" /> <Compile Include="Param\AbstractExplicitParameterSpecification.cs" /> <Compile Include="Param\AggregatedIndexCollectionSelectorParameterSpecifications.cs" /> <Compile Include="Param\CollectionFilterKeyParameterSpecification.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |