KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > db > DatabaseErrorAnalyzer


1 package com.teamkonzept.db;
2
3 import java.sql.SQLException JavaDoc;
4 import com.teamkonzept.lib.*;
5
6 /**
7     Analyzed database related exceptions
8     using the SQL State
9     general codes here
10     Singleton
11 */

12 public class DatabaseErrorAnalyzer implements ErrorAnalyzer, DatabaseErrorCodes
13 {
14     private static DatabaseErrorAnalyzer instance = null;
15
16     /**
17         looks for a database specific analyzer
18     */

19     public static DatabaseErrorAnalyzer getInstance()
20     {
21         if (instance == null)
22         {
23             if (TKDBManager.getDBVendor() == QueryConstants.ORACLE)
24             {
25                 instance = new OracleErrorAnalyzer();
26             }
27             else if (TKDBManager.getDBVendor() == QueryConstants.SYBASE)
28             {
29                 instance = new SybaseErrorAnalyzer();
30             }
31             else if (TKDBManager.getDBVendor() == QueryConstants.POSTGRESQL)
32             {
33                 instance = new PostgreSQLErrorAnalyzer();
34             }
35             // cant happen
36
}
37         return instance;
38     }
39
40     protected DatabaseErrorAnalyzer()
41     {}
42
43     public TKException analyzeSQLError (SQLException JavaDoc e)
44     {
45         String JavaDoc state = e.getSQLState();
46
47         if (state == null)
48         {
49             return new TKDatabaseException("Unbekannter Fehler",UNDEFINED, NORMAL_SEVERITY, false, e);
50         }
51
52         // Wrong URL format.
53
if (state.equals("JZ003"))
54         {
55             return new TKDatabaseException("Ihre Konfiguration ist inkorrekt",CONFIGURATION, HIGH_SEVERITY , true, e);
56         }
57
58         // Host unreachable.
59
if (state.equals("JZ006"))
60         {
61             // das kann aber auch Konfiguration sein ! falsche Portnummer
62
return new TKDatabaseException("Die Datenbank ist nicht erreichbar",CONNECTION_BROKEN, TEMPORARY_SEVERITY , true, e);
63         }
64
65         // Login failed.
66
if (state.equals("ZZZZZ") || state.equals("JZ00L"))
67         {
68             return new TKDatabaseException("Ihre Konfiguration ist inkorrekt",CONFIGURATION, HIGH_SEVERITY , true, e);
69         }
70
71         // JDBC-Support not loaded.
72
if (state.equals("JZ0SJ"))
73         {
74             return new TKDatabaseException("Keine JDBC-Unterstützung in der DB installiert", CONFIGURATION, HIGH_SEVERITY, true, e);
75         }
76
77         // Foreign key constraint violation.
78
if (state.equals("23000") || state.equals("23001"))
79         {
80             return new TKDatabaseException("Referentielle Integrität verletzt",FK_CONSTRAINT_VIOLATION, NORMAL_SEVERITY , true, e);
81         }
82         return new TKDatabaseException("Unbekannter Fehler",UNDEFINED, NORMAL_SEVERITY, false, e);
83     }
84
85 }
86
Popular Tags