Added OracleProvider implementation for TARGET_JVM
authorBoris Kirzner <borisk@mono-cvs.ximian.com>
Tue, 21 Mar 2006 13:41:40 +0000 (13:41 -0000)
committerBoris Kirzner <borisk@mono-cvs.ximian.com>
Tue, 21 Mar 2006 13:41:40 +0000 (13:41 -0000)
svn path=/trunk/mcs/; revision=58217

mcs/class/System.Data.OracleClient/ChangeLog
mcs/class/System.Data.OracleClient/Mainsoft.Data.Jdbc.Providers.jvm/OracleProvider.cs [new file with mode: 0644]
mcs/class/System.Data.OracleClient/System.Data.OracleClient.vmwcsproj

index cdbedc6b5d3ba60bc6e7fe88ba7620aece03d476..e3d7461f128c9ad41658d6d29e21f865f59555b6 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-21     Boris Kirzner <borisk@mainsoft.com>
+       * Mainsoft.Data.Jdbc.Providers.jvm: added TARGET_JVM directory
+       * System.Data.OracleClient.vmwcsproj: added OracleProvider.cs
+
 2006-03-13 Boris Kirzner <borisk@mainsoft.com>
        * run-tests.bat, run-tests.test.bat: added batch files for automated testing 
        support for TARGET_JVM.
diff --git a/mcs/class/System.Data.OracleClient/Mainsoft.Data.Jdbc.Providers.jvm/OracleProvider.cs b/mcs/class/System.Data.OracleClient/Mainsoft.Data.Jdbc.Providers.jvm/OracleProvider.cs
new file mode 100644 (file)
index 0000000..e72ebb7
--- /dev/null
@@ -0,0 +1,205 @@
+//
+// Mainsoft.Data.Jdbc.Providers.OracleProvider
+//
+// Authors:
+//     Konstantin Triger <kostat@mainsoft.com>
+//     Boris Kirzner <borisk@mainsoft.com>
+//     
+// (C) 2006 Mainsoft Corporation (http://www.mainsoft.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using Mainsoft.Data.Configuration;
+using System.Reflection;
+
+namespace Mainsoft.Data.Jdbc.Providers
+{
+       public class OracleProvider : GenericProvider
+       {
+               #region Consts
+
+               private const string Port = "Port";
+
+               #endregion //Consts
+
+               #region Fields
+
+               #endregion // Fields
+
+               #region Constructors
+
+               public OracleProvider (IDictionary providerInfo) : base (providerInfo)
+               {
+               }
+
+               #endregion // Constructors
+
+               #region Properties
+
+               #endregion // Properties
+
+               #region Methods
+
+               public override IConnectionStringDictionary GetConnectionStringBuilder (string connectionString)
+               {
+                       IConnectionStringDictionary conectionStringBuilder = base.GetConnectionStringBuilder (connectionString);
+
+                       string port = (string) conectionStringBuilder [Port];
+                       if (port == null || port.Length == 0) {
+                               port = (string) ProviderInfo [Port];
+                               conectionStringBuilder.Add (Port, port);
+                       }
+                       
+                       return conectionStringBuilder;
+               }
+
+               public override java.sql.Connection GetConnection(IConnectionStringDictionary conectionStringBuilder) {
+                       return new OracleConnection(base.GetConnection (conectionStringBuilder));
+               }
+
+
+               #endregion //Methods
+
+               #region OracleConnection
+
+               sealed class OracleConnection : Connection {
+
+                       public OracleConnection(java.sql.Connection connection)
+                               : base(connection) {}
+
+                       public override java.sql.CallableStatement prepareCall(string arg_0) {
+                               return base.prepareCall (arg_0);
+                       }
+
+                       public override java.sql.CallableStatement prepareCall(string arg_0, int arg_1, int arg_2) {
+                               return new OracleCallableStatement(base.prepareCall (arg_0, arg_1, arg_2));
+                       }
+
+                       public override java.sql.CallableStatement prepareCall(string arg_0, int arg_1, int arg_2, int arg_3) {
+                               return new OracleCallableStatement(base.prepareCall (arg_0, arg_1, arg_2, arg_3));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1, int arg_2) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1, arg_2));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1, int arg_2, int arg_3) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1, arg_2, arg_3));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0, int[] arg_1) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
+                       }
+
+                       public override java.sql.PreparedStatement prepareStatement(string arg_0, string[] arg_1) {
+                               return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
+                       }
+               }
+
+               #endregion
+
+               sealed class OraclePreparedStatement : PreparedStatement, IPreparedStatement {
+                       readonly MethodInfo _info;
+
+                       public OraclePreparedStatement(java.sql.PreparedStatement statement)
+                               : base(statement) {
+                               _info = Wrapped.GetType().GetMethod("setFixedCHAR");
+                       }
+
+                       #region IPreparedStatement Members
+
+                       public void setBit(int parameterIndex, int value) {
+                               base.setInt(parameterIndex, value);
+                       }
+
+                       public void setChar(int parameterIndex, string value) {
+                               if (_info == null) {
+                                       base.setString(parameterIndex, value);
+                                       return;
+                               }
+
+                               _info.Invoke(Wrapped, new object[] {
+                                                       new java.lang.Integer(parameterIndex),
+                                                       value});
+                       }
+
+                       public void setNumeric(int parameterIndex, java.math.BigDecimal value) {
+                               base.setBigDecimal(parameterIndex, value);
+                       }
+
+                       public void setReal(int parameterIndex, double value) {
+                               base.setDouble(parameterIndex, value);
+                       }
+
+                       #endregion
+               }
+
+               sealed class OracleCallableStatement : CallableStatement, IPreparedStatement {
+                       readonly MethodInfo _info;
+
+                       public OracleCallableStatement(java.sql.CallableStatement statement)
+                               : base(statement) {
+                               _info = Wrapped.GetType().GetMethod("setFixedCHAR");
+                       }
+
+                       #region IPreparedStatement Members
+
+                       public void setBit(int parameterIndex, int value) {
+                               base.setInt(parameterIndex, value);
+                       }
+
+                       public void setChar(int parameterIndex, string value) {
+                               if (_info == null) {
+                                       base.setString(parameterIndex, value);
+                                       return;
+                               }
+
+                               _info.Invoke(Wrapped, new object[] {
+                                                               new java.lang.Integer(parameterIndex),
+                                                               value});
+                       }
+
+                       public void setNumeric(int parameterIndex, java.math.BigDecimal value) {
+                               base.setBigDecimal(parameterIndex, value);
+                       }
+
+                       public void setReal(int parameterIndex, double value) {
+                               base.setDouble(parameterIndex, value);
+                       }
+
+                       #endregion
+
+               }
+
+       }
+}
index 79a8f8316a949125363fd0a24df78eaf419d5a88..51adba3c787414e5456a565bec3039672b596db4 100755 (executable)
@@ -18,6 +18,7 @@
                                <File RelPath="Assembly\Consts.cs.in" Link="..\..\build\common\Consts.cs.in" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Assembly\Locale.cs" Link="..\..\build\common\Locale.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Assembly\MonoTODOAttribute.cs" Link="..\..\build\common\MonoTODOAttribute.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="Mainsoft.Data.Jdbc.Providers.jvm\OracleProvider.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Data.OracleClient\OracleBoolean.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Data.OracleClient\OracleDataAdapter.cs" SubType="Component" BuildAction="Compile"/>\r
                                <File RelPath="System.Data.OracleClient\OracleDateTime.cs" SubType="Code" BuildAction="Compile"/>\r