2002-11-18 Tim Coleman <tim@timcoleman.com>
[mono.git] / mcs / class / Mono.Data.SybaseClient / Mono.Data.SybaseClient / SybaseException.cs
1 //
2 // Mono.Data.SybaseClient.SybaseException.cs
3 //
4 // Author:
5 //   Tim Coleman (tim@timcoleman.com)
6 //
7 // Copyright (C) Tim Coleman, 2002
8 //
9
10 using Mono.Data.TdsClient.Internal;
11 using System;
12 using System.Data;
13 using System.Runtime.Serialization;
14 using System.Text;
15
16 namespace Mono.Data.SybaseClient {
17         [Serializable]
18         public sealed class SybaseException : SystemException
19         {
20                 #region Fields
21
22                 SybaseErrorCollection errors; 
23
24                 #endregion Fields
25
26                 #region Constructors
27
28                 internal SybaseException () 
29                         : base ("a SQL Exception has occurred.") 
30                 {
31                         errors = new SybaseErrorCollection();
32                 }
33
34                 internal SybaseException (byte theClass, int lineNumber, string message, int number, string procedure, string server, string source, byte state) 
35                         : base (message) 
36                 {
37                         errors = new SybaseErrorCollection (theClass, lineNumber, message, number, procedure, server, source, state);
38                 }
39
40                 #endregion // Constructors
41
42                 #region Properties
43
44                 public byte Class {
45                         get { return errors [0].Class; }
46                 }
47
48                 public SybaseErrorCollection Errors {
49                         get { return errors; }
50                 }
51
52                 public int LineNumber {
53                         get { return errors [0].LineNumber; }
54                 }
55                 
56                 public override string Message  {
57                         get {
58                                 StringBuilder result = new StringBuilder ();
59                                 foreach (SybaseError error in Errors) {
60                                         if (result.Length > 0)
61                                                 result.Append ('\n');
62                                         result.Append (error.Message);
63                                 }
64                                 return result.ToString ();
65                         }                                                                
66                 }
67                 
68                 public int Number {
69                         get { return errors [0].Number; }
70                 }
71                 
72                 public string Procedure {
73                         get { return errors [0].Procedure; }
74                 }
75
76                 public string Server {
77                         get { return errors [0].Server; }
78                 }
79                 
80                 public override string Source {
81                         get { return errors [0].Source; }
82                 }
83
84                 public byte State {
85                         get { return errors [0].State; }
86                 }
87
88                 #endregion // Properties
89
90                 #region Methods
91
92                 [MonoTODO]
93                 public override void GetObjectData (SerializationInfo si, StreamingContext context) 
94                 {
95                         throw new NotImplementedException ();
96                 }
97
98                 internal static SybaseException FromTdsInternalException (TdsInternalException e)
99                 {
100                         return new SybaseException (e.Class, e.LineNumber, e.Message, e.Number, e.Procedure, e.Server, "Mono SybaseClient Data Provider", e.State);
101                 }
102
103                 #endregion // Methods
104         }
105 }