a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
220 lines
6.0 KiB
C#
220 lines
6.0 KiB
C#
//
|
|
// System.Data.Odbc.OdbcConnectionStringBuilder
|
|
//
|
|
// Authors:
|
|
// Nidhi Rawal (rawalnidhi_rawal@yahoo.com)
|
|
//
|
|
// Copyright (C) 2007 Novell, Inc (http://www.novell.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.
|
|
//
|
|
|
|
#if NET_2_0
|
|
using System;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Data.Odbc;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
|
|
namespace System.Data.Odbc
|
|
{
|
|
[DefaultProperty ("Driver")]
|
|
[TypeConverter ("System.Data.Odbc.OdbcConnectionStringBuilder+OdbcConnectionStringBuilderConverter, " + Consts.AssemblySystem_Data)]
|
|
public sealed class OdbcConnectionStringBuilder : DbConnectionStringBuilder
|
|
{
|
|
#region Fields
|
|
string driver;
|
|
string dsn;
|
|
#endregion //Fields
|
|
|
|
#region Constructors
|
|
|
|
public OdbcConnectionStringBuilder () : base (true)
|
|
{
|
|
}
|
|
|
|
public OdbcConnectionStringBuilder (string connectionString) : base (true)
|
|
{
|
|
if (connectionString == null) {
|
|
base.ConnectionString = string.Empty;
|
|
return;
|
|
}
|
|
|
|
base.ConnectionString = connectionString;
|
|
}
|
|
|
|
#endregion // Constructors
|
|
|
|
#region Properties
|
|
|
|
public override Object this [string keyword] {
|
|
get {
|
|
if (keyword == null)
|
|
throw new ArgumentNullException ("keyword");
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
return Driver;
|
|
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
return Dsn;
|
|
return base [keyword];
|
|
}
|
|
set {
|
|
if (value == null) {
|
|
Remove (keyword);
|
|
return;
|
|
}
|
|
|
|
if (keyword == null)
|
|
throw new ArgumentNullException ("keyword");
|
|
|
|
string text_value = value.ToString ();
|
|
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
|
|
Driver = text_value;
|
|
return;
|
|
} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
|
|
dsn = text_value;
|
|
} else if (value.ToString ().IndexOf (';') != -1) {
|
|
text_value = "{" + text_value + "}";
|
|
}
|
|
base [keyword] = value;
|
|
}
|
|
}
|
|
|
|
public override ICollection Keys {
|
|
get {
|
|
List<string> keys = new List<string> ();
|
|
keys.Add ("Dsn");
|
|
keys.Add ("Driver");
|
|
|
|
ICollection base_keys = base.Keys;
|
|
foreach (string keyword in base_keys) {
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
continue;
|
|
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
continue;
|
|
keys.Add (keyword);
|
|
}
|
|
|
|
string [] final = new string [keys.Count];
|
|
keys.CopyTo (final);
|
|
return final;
|
|
}
|
|
}
|
|
|
|
[DisplayName ("Driver")]
|
|
[RefreshProperties (RefreshProperties.All)]
|
|
public string Driver {
|
|
get {
|
|
if (driver == null)
|
|
return string.Empty;
|
|
return driver;
|
|
}
|
|
set {
|
|
if (value == null)
|
|
throw new ArgumentNullException ("Driver");
|
|
driver = value;
|
|
|
|
if (value.Length > 0) {
|
|
int startBrace = value.IndexOf ('{');
|
|
int endBrace = value.IndexOf ('}');
|
|
if (startBrace == -1 || endBrace == -1)
|
|
value = "{" + value + "}";
|
|
else if (startBrace > 0 || endBrace < (value.Length - 1))
|
|
value = "{" + value + "}";
|
|
}
|
|
base ["Driver"] = value;
|
|
}
|
|
}
|
|
|
|
[DisplayName ("Dsn")]
|
|
[RefreshProperties (RefreshProperties.All)]
|
|
public string Dsn {
|
|
get {
|
|
if (dsn == null)
|
|
return string.Empty;
|
|
return dsn;
|
|
}
|
|
set {
|
|
if (value == null)
|
|
throw new ArgumentNullException ("Dsn");
|
|
dsn = value;
|
|
base ["Dsn"] = dsn;
|
|
}
|
|
}
|
|
|
|
#endregion // Properties
|
|
|
|
#region Methods
|
|
|
|
public override bool ContainsKey (string keyword)
|
|
{
|
|
if (keyword == null)
|
|
throw new ArgumentNullException ("keyword");
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
return true;
|
|
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
return true;
|
|
return base.ContainsKey (keyword);
|
|
}
|
|
|
|
public override bool Remove (string keyword)
|
|
{
|
|
if (keyword == null)
|
|
throw new ArgumentNullException ("keyword");
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
driver = string.Empty;
|
|
else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
|
|
dsn = string.Empty;
|
|
return base.Remove (keyword);
|
|
}
|
|
|
|
public override void Clear ()
|
|
{
|
|
driver = null;
|
|
dsn = null;
|
|
base.Clear ();
|
|
}
|
|
|
|
public override bool TryGetValue (string keyword, out Object value)
|
|
{
|
|
if (keyword == null )
|
|
throw new ArgumentNullException ("keyword");
|
|
bool found = base.TryGetValue (keyword, out value);
|
|
if (found)
|
|
return found;
|
|
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
|
|
value = string.Empty;
|
|
return true;
|
|
} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
|
|
value = string.Empty;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
#endregion // Methods
|
|
}
|
|
}
|
|
#endif // NET_2_0 using
|