2002-11-01 Tim Coleman (tim@timcoleman.com)
[mono.git] / mcs / class / Mono.Data.SybaseClient / Mono.Data.SybaseClient / SybaseDataAdapter.cs
1 //
2 // Mono.Data.SybaseClient.SybaseDataAdapter.cs
3 //
4 // Author:
5 //   Tim Coleman (tim@timcoleman.com)
6 //
7 // Copyright (C) Tim Coleman, 2002
8 //
9
10 using System;
11 using System.ComponentModel;
12 using System.Data;
13 using System.Data.Common;
14
15 namespace Mono.Data.SybaseClient {
16         public sealed class SybaseDataAdapter : DbDataAdapter, IDbDataAdapter 
17         {
18                 #region Fields
19         
20                 SybaseCommand deleteCommand;
21                 SybaseCommand insertCommand;
22                 SybaseCommand selectCommand;
23                 SybaseCommand updateCommand;
24
25                 static readonly object EventRowUpdated = new object(); 
26                 static readonly object EventRowUpdating = new object(); 
27
28                 #endregion
29
30                 #region Constructors
31                 
32                 public SybaseDataAdapter ()     
33                         : this (new SybaseCommand ())
34                 {
35                 }
36
37                 public SybaseDataAdapter (SybaseCommand selectCommand) 
38                 {
39                         DeleteCommand = new SybaseCommand ();
40                         InsertCommand = new SybaseCommand ();
41                         SelectCommand = selectCommand;
42                         UpdateCommand = new SybaseCommand ();
43                 }
44
45                 public SybaseDataAdapter (string selectCommandText, SybaseConnection selectConnection) 
46                         : this (new SybaseCommand (selectCommandText, selectConnection))
47                 { 
48                 }
49
50                 public SybaseDataAdapter (string selectCommandText, string selectConnectionString)
51                         : this (selectCommandText, new SybaseConnection (selectConnectionString))
52                 {
53                 }
54
55                 #endregion
56
57                 #region Properties
58
59                 public SybaseCommand DeleteCommand {
60                         get { return deleteCommand; }
61                         set { deleteCommand = value; }
62                 }
63
64                 public SybaseCommand InsertCommand {
65                         get { return insertCommand; }
66                         set { insertCommand = value; }
67                 }
68
69                 public SybaseCommand SelectCommand {
70                         get { return selectCommand; }
71                         set { selectCommand = value; }
72                 }
73
74                 public SybaseCommand UpdateCommand {
75                         get { return updateCommand; }
76                         set { updateCommand = value; }
77                 }
78
79                 IDbCommand IDbDataAdapter.DeleteCommand {
80                         get { return DeleteCommand; }
81                         set { 
82                                 if (!(value is SybaseCommand)) 
83                                         throw new ArgumentException ();
84                                 DeleteCommand = (SybaseCommand)value;
85                         }
86                 }
87
88                 IDbCommand IDbDataAdapter.InsertCommand {
89                         get { return InsertCommand; }
90                         set { 
91                                 if (!(value is SybaseCommand)) 
92                                         throw new ArgumentException ();
93                                 InsertCommand = (SybaseCommand)value;
94                         }
95                 }
96
97                 IDbCommand IDbDataAdapter.SelectCommand {
98                         get { return SelectCommand; }
99                         set { 
100                                 if (!(value is SybaseCommand)) 
101                                         throw new ArgumentException ();
102                                 SelectCommand = (SybaseCommand)value;
103                         }
104                 }
105
106                 IDbCommand IDbDataAdapter.UpdateCommand {
107                         get { return UpdateCommand; }
108                         set { 
109                                 if (!(value is SybaseCommand)) 
110                                         throw new ArgumentException ();
111                                 UpdateCommand = (SybaseCommand)value;
112                         }
113                 }
114
115
116                 ITableMappingCollection IDataAdapter.TableMappings {
117                         get { return TableMappings; }
118                 }
119
120                 #endregion // Properties
121
122                 #region Methods
123
124                 protected override RowUpdatedEventArgs CreateRowUpdatedEvent (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
125                 {
126                         return new SybaseRowUpdatedEventArgs (dataRow, command, statementType, tableMapping);
127                 }
128
129
130                 protected override RowUpdatingEventArgs CreateRowUpdatingEvent (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
131                 {
132                         return new SybaseRowUpdatingEventArgs (dataRow, command, statementType, tableMapping);
133                 }
134
135                 protected override void OnRowUpdated (RowUpdatedEventArgs value) 
136                 {
137                         SybaseRowUpdatedEventHandler handler = (SybaseRowUpdatedEventHandler) Events[EventRowUpdated];
138                         if ((handler != null) && (value is SybaseRowUpdatedEventArgs))
139                                 handler(this, (SybaseRowUpdatedEventArgs) value);
140                 }
141
142                 protected override void OnRowUpdating (RowUpdatingEventArgs value) 
143                 {
144                         SybaseRowUpdatingEventHandler handler = (SybaseRowUpdatingEventHandler) Events[EventRowUpdating];
145                         if ((handler != null) && (value is SybaseRowUpdatingEventArgs))
146                                 handler(this, (SybaseRowUpdatingEventArgs) value);
147                 }
148
149                 #endregion // Methods
150
151                 #region Events and Delegates
152
153                 public event SybaseRowUpdatedEventHandler RowUpdated {
154                         add { Events.AddHandler (EventRowUpdated, value); }
155                         remove { Events.RemoveHandler (EventRowUpdated, value); }
156                 }
157
158                 public event SybaseRowUpdatingEventHandler RowUpdating {
159                         add { Events.AddHandler (EventRowUpdating, value); }
160                         remove { Events.RemoveHandler (EventRowUpdating, value); }
161                 }
162
163                 #endregion // Events and Delegates
164
165         }
166 }