|
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.
|