SPRNET-1041 - Add new DbProvider for Oracle 11g
Tested provider by adding reference and then removing. oracleAdoTemplateTests.xml now refers to 11g database in SpringSource QA LAB Remove miscellaneous TODO comments that were not relevant.
This commit is contained in:
@@ -186,7 +186,7 @@ namespace Spring.Data
|
||||
myDataRow["Name"] = "OldManWinter";
|
||||
dataSet.Tables["TestObjects"].Rows.Add(myDataRow);
|
||||
|
||||
//TODO - think about api...
|
||||
|
||||
IDbCommand insertCommand = dbProvider.CreateCommand();
|
||||
insertCommand.CommandText = "insert into TestObjects(Age,Name) values (@Age,@Name)";
|
||||
IDbParameters parameters = adoOperations.CreateDbParameters();
|
||||
|
||||
@@ -31,7 +31,7 @@ using Spring.Transaction;
|
||||
namespace Spring.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// Test for declarative transaction management
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
[TestFixture]
|
||||
|
||||
@@ -33,7 +33,7 @@ using Spring.Data.Common;
|
||||
namespace Spring.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// Test a MappingAdoQuery implementation
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
[TestFixture]
|
||||
|
||||
@@ -31,7 +31,7 @@ using Spring.Data.Support;
|
||||
namespace Spring.Data.Northwind
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// AdoTemplate based implementation of IShipperDao
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
public class AdoTemplateShipperDao : AdoDaoSupport, IShipperDao
|
||||
|
||||
@@ -27,7 +27,7 @@ using System;
|
||||
namespace Spring.Data.Northwind
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// ShipperDao interface
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
public interface IShipperDao
|
||||
|
||||
@@ -33,77 +33,81 @@ using Spring.Context;
|
||||
using Spring.Context.Support;
|
||||
using Spring.Data.Common;
|
||||
using Spring.Data.Core;
|
||||
using Spring.Data.Support;
|
||||
using Spring.Objects;
|
||||
|
||||
#endregion
|
||||
|
||||
namespace Spring.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
/// <version>$Id: OracleAdoTemplateTests.cs,v 1.8 2007/08/03 19:51:22 markpollack Exp $</version>
|
||||
[TestFixture]
|
||||
public class OracleAdoTemplateTests
|
||||
{
|
||||
#region Fields
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
[TestFixture]
|
||||
public class OracleAdoTemplateTests
|
||||
{
|
||||
#region Setup/Teardown
|
||||
|
||||
private IAdoOperations adoOperations;
|
||||
private IDbProvider dbProvider;
|
||||
#endregion
|
||||
|
||||
#region Constants
|
||||
|
||||
/// <summary>
|
||||
/// The shared ILog instance for this class (and derived classes).
|
||||
/// </summary>
|
||||
protected static readonly ILog log =
|
||||
LogManager.GetLogger(typeof (OracleAdoTemplateTests));
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor (s)
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="OracleAdoTemplateTests"/> class.
|
||||
/// </summary>
|
||||
public OracleAdoTemplateTests()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
[SetUp]
|
||||
public void CreateAdoTemplate()
|
||||
{
|
||||
IApplicationContext ctx =
|
||||
new XmlApplicationContext("assembly://Spring.Data.Integration.Tests/Spring.Data/oracleAdoTemplateTests.xml");
|
||||
new XmlApplicationContext(
|
||||
"assembly://Spring.Data.Integration.Tests/Spring.Data/oracleAdoTemplateTests.xml");
|
||||
Assert.IsNotNull(ctx);
|
||||
dbProvider = ctx["DbProvider"] as IDbProvider;
|
||||
Assert.IsNotNull(dbProvider);
|
||||
adoOperations = new AdoTemplate(dbProvider);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private IAdoOperations adoOperations;
|
||||
private IDbProvider dbProvider;
|
||||
|
||||
/// <summary>
|
||||
/// The shared ILog instance for this class (and derived classes).
|
||||
/// </summary>
|
||||
protected static readonly ILog log =
|
||||
LogManager.GetLogger(typeof (OracleAdoTemplateTests));
|
||||
|
||||
private class TestObjectExtractor : IResultSetExtractor
|
||||
{
|
||||
#region IResultSetExtractor Members
|
||||
|
||||
public object ExtractData(IDataReader reader)
|
||||
{
|
||||
IList testObjects = new ArrayList();
|
||||
while (reader.Read())
|
||||
{
|
||||
var to = new TestObject();
|
||||
//object foo = reader.GetDataTypeName(0);
|
||||
to.ObjectNumber = (int) reader.GetInt64(0);
|
||||
to.Name = reader.GetString(1);
|
||||
testObjects.Add(to);
|
||||
}
|
||||
return testObjects;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DataSetFillNoParams()
|
||||
{
|
||||
String sql = "select USER_ID, USER_NAME from USER_TABLE";
|
||||
DataSet dataSet = new DataSet();
|
||||
var dataSet = new DataSet();
|
||||
adoOperations.DataSetFill(dataSet, CommandType.Text, sql);
|
||||
Assert.AreEqual(1, dataSet.Tables.Count);
|
||||
Assert.AreEqual(18, dataSet.Tables["Table"].Rows.Count);
|
||||
|
||||
dataSet = new DataSet();
|
||||
adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new string[] {"TestObjects"});
|
||||
adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new[] {"TestObjects"});
|
||||
Assert.AreEqual(1, dataSet.Tables.Count);
|
||||
Assert.AreEqual(18, dataSet.Tables["TestObjects"].Rows.Count);
|
||||
|
||||
dataSet = new DataSet();
|
||||
DataTableMappingCollection mappingCollection =
|
||||
var mappingCollection =
|
||||
new DataTableMappingCollection();
|
||||
DataTableMapping testObjectsMapping = mappingCollection.Add("Table", "TestObjects");
|
||||
testObjectsMapping.ColumnMappings.Add("USER_ID", "UserID");
|
||||
@@ -116,19 +120,18 @@ namespace Spring.Data
|
||||
Assert.IsNotNull(testObjectRow["UserID"]);
|
||||
Assert.IsNotNull(testObjectRow["UserName"]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DataSetFillWithParameters()
|
||||
{
|
||||
String sql = "select USER_ID, USER_NAME from USER_TABLE where USER_ID < :maxId";
|
||||
DataSet dataSet = new DataSet();
|
||||
var dataSet = new DataSet();
|
||||
IDbParameters parameters = adoOperations.CreateDbParameters();
|
||||
parameters.Add("maxId", OracleType.Int32).Value = 10;
|
||||
adoOperations.DataSetFillWithParameters(dataSet, CommandType.Text, sql,
|
||||
parameters,
|
||||
new string[] {"TestObjects"});
|
||||
parameters,
|
||||
new[] {"TestObjects"});
|
||||
Assert.AreEqual(1, dataSet.Tables.Count);
|
||||
Assert.AreEqual(6, dataSet.Tables["TestObjects"].Rows.Count);
|
||||
}
|
||||
@@ -138,8 +141,8 @@ namespace Spring.Data
|
||||
{
|
||||
//'pretend' unique key is the age...
|
||||
String sql = "select USER_ID, USER_NAME from USER_TABLE";
|
||||
DataSet dataSet = new DataSet();
|
||||
adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new string[] {"TestObjects"});
|
||||
var dataSet = new DataSet();
|
||||
adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new[] {"TestObjects"});
|
||||
|
||||
//Create and add new row.
|
||||
DataRow myDataRow = dataSet.Tables["TestObjects"].NewRow();
|
||||
@@ -156,9 +159,10 @@ namespace Spring.Data
|
||||
|
||||
//Extanious CommandTypes....
|
||||
adoOperations.DataSetUpdate(dataSet, "TestObjects",
|
||||
CommandType.Text, "insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)", parameters,
|
||||
CommandType.Text, null, null,
|
||||
CommandType.Text, null, null);
|
||||
CommandType.Text,
|
||||
"insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)", parameters,
|
||||
CommandType.Text, null, null,
|
||||
CommandType.Text, null, null);
|
||||
|
||||
|
||||
//TODO - think about api...
|
||||
@@ -197,21 +201,27 @@ namespace Spring.Data
|
||||
// null, null);
|
||||
|
||||
//TODO how about breaking up the operations...
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ExceptionTranslation()
|
||||
{
|
||||
try
|
||||
{
|
||||
adoOperations.ExecuteNonQuery(CommandType.Text, "select foo from bar");
|
||||
}
|
||||
catch (BadSqlGrammarException e)
|
||||
{
|
||||
// should execute in here in sunny day scenario...
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Assert.Fail("Exception translation not working.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void ExecuteQueryWithResultSetExtractor()
|
||||
{
|
||||
IResultSetExtractor rse = new TestObjectExtractor();
|
||||
String sql = "select USER_ID, USER_NAME from USER_TABLE";
|
||||
IList testObjectList = (IList)adoOperations.QueryWithResultSetExtractor(CommandType.Text, sql, rse);
|
||||
Assert.AreEqual(18, testObjectList.Count);
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ExecuteNonQueryText()
|
||||
{
|
||||
int counter = 0;
|
||||
@@ -228,36 +238,30 @@ namespace Spring.Data
|
||||
sql = "insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)";
|
||||
IDbParameters parameters = adoOperations.CreateDbParameters();
|
||||
|
||||
int user_id1 = 101;
|
||||
string user_name1 = "George1";
|
||||
int user_id1 = 101;
|
||||
string user_name1 = "George1";
|
||||
parameters.Add("id", OracleType.Int32).Value = user_id1;
|
||||
counter++;
|
||||
counter++;
|
||||
parameters.Add("name", DbType.String, 12).Value = user_name1;
|
||||
|
||||
adoOperations.ExecuteNonQuery(CommandType.Text, sql, parameters);
|
||||
adoOperations.ExecuteNonQuery(CommandType.Text, sql, parameters);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private class TestObjectExtractor : IResultSetExtractor
|
||||
[Test]
|
||||
public void ExecuteQueryWithResultSetExtractor()
|
||||
{
|
||||
public object ExtractData(IDataReader reader)
|
||||
{
|
||||
IList testObjects = new ArrayList();
|
||||
while(reader.Read())
|
||||
{
|
||||
TestObject to = new TestObject();
|
||||
//object foo = reader.GetDataTypeName(0);
|
||||
to.ObjectNumber = (int) reader.GetInt64(0);
|
||||
to.Name = reader.GetString(1);
|
||||
testObjects.Add(to);
|
||||
}
|
||||
return testObjects;
|
||||
}
|
||||
IResultSetExtractor rse = new TestObjectExtractor();
|
||||
String sql = "select USER_ID, USER_NAME from USER_TABLE";
|
||||
var testObjectList = (IList) adoOperations.QueryWithResultSetExtractor(CommandType.Text, sql, rse);
|
||||
Assert.AreEqual(18, testObjectList.Count);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
[Test]
|
||||
public void SanityCheck()
|
||||
{
|
||||
adoOperations.ExecuteNonQuery(CommandType.Text, "select * from DUAL");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // (!NET_1_0)
|
||||
@@ -31,7 +31,7 @@ using Spring.Objects;
|
||||
namespace Spring.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// Simple MappingAdoQuery implementation
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
public class TestObjectQuery : MappingAdoQuery
|
||||
|
||||
@@ -30,7 +30,7 @@ using Spring.Data.Objects;
|
||||
namespace Spring.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// TODO:
|
||||
/// Simple StoredProcedure implementation
|
||||
/// </summary>
|
||||
/// <author>Mark Pollack (.NET)</author>
|
||||
public class TestObjectStoredProcedure : StoredProcedure
|
||||
|
||||
@@ -163,7 +163,6 @@ namespace Spring.Data
|
||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
||||
def.PropagationBehavior = TransactionPropagation.Required;
|
||||
|
||||
//TODO change to property of name TransactionStatus...
|
||||
ITransactionStatus status = transactionManager.GetTransaction(def);
|
||||
|
||||
int iCount = 0;
|
||||
|
||||
@@ -2,18 +2,11 @@
|
||||
<objects xmlns='http://www.springframework.net'
|
||||
xmlns:db="http://www.springframework.net/database">
|
||||
|
||||
<!-- This is a server running in the Hyperic Data Center, specifed so that one does not need to use a tnsnames.ora file -->
|
||||
<db:provider id="DbProvider"
|
||||
provider="OracleODP-2.0"
|
||||
connectionString="Data Source=AGORA; User Id=agora_user; Password=welcome"/>
|
||||
provider="OracleODP-11-2.0"
|
||||
connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.0.56)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = QADB))); User Id=mpollack; Password=springqa"/>
|
||||
|
||||
<!--
|
||||
<object id="DbProvider"
|
||||
type="Spring.Data.Support.Oracle.OracleClientProvider, Spring.Data">
|
||||
|
||||
<property name="ConnectionString"
|
||||
value="Data Source=agora; User Id=agora_user; Password=welcome; Integrated Security=no;"/>
|
||||
</object>
|
||||
-->
|
||||
<object id="adoTemplate"
|
||||
type="Spring.Data.Core.AdoTemplate, Spring.Data">
|
||||
|
||||
|
||||
Reference in New Issue
Block a user