01: package com.teamkonzept.db;
02:
03: import java.sql.SQLException;
04: import com.teamkonzept.lib.*;
05:
06: /**
07: Analyzed database related exceptions
08: using the SQL State
09: here some Oracle specific extensions
10: * @author $Author: alex $
11: * @version $Revision: 1.2 $
12: */
13: public class OracleErrorAnalyzer extends DatabaseErrorAnalyzer {
14: protected OracleErrorAnalyzer() {
15: }
16:
17: // alle Fälle nochmal mit anderen Treibern/Datenbanken testen !!
18: public TKException analyzeSQLError(SQLException e) {
19: String state = e.getSQLState();
20: // System.out.println("Oracle State : " + state);
21: if (state == null) {
22: return new TKDatabaseException("Unbekannter Fehler",
23: UNDEFINED, NORMAL_SEVERITY, false, e);
24: }
25:
26: // Wrong URL format.
27: if (state.equals("JZ003")) {
28: return new TKDatabaseException(
29: "Ihre Konfiguration ist inkorrekt", CONFIGURATION,
30: HIGH_SEVERITY, true, e);
31: }
32:
33: // Host unreachable.
34: if (state.equals("JZ006")) {
35: // das kann aber auch Konfiguration sein ! falsche Portnummer
36: return new TKDatabaseException(
37: "Die Datenbank ist nicht erreichbar",
38: CONNECTION_BROKEN, TEMPORARY_SEVERITY, true, e);
39: }
40:
41: // Login failed.
42: if (state.equals("ORA-01005") || state.equals("ORA-01004")
43: || state.equals("ORA-01017")) {
44: return new TKDatabaseException(
45: "Ihre Konfiguration ist inkorrekt", CONFIGURATION,
46: HIGH_SEVERITY, true, e);
47: }
48: // too many open cursors
49: if (state.equals("ORA-01000")) {
50: return new TKDatabaseException("Zu viele offene Cursor",
51: TOO_MANY_CURSOR, HIGH_SEVERITY, false, e);
52: }
53:
54: // JDBC-Support not loaded.
55: if (state.equals("JZ0SJ")) {
56: return new TKDatabaseException(
57: "Keine JDBC-Unterstützung in der DB installiert",
58: CONFIGURATION, HIGH_SEVERITY, true, e);
59: }
60:
61: // Foreign key constraint violation.
62: if (state.equals("23000") || state.equals("23001")) {
63: return new TKDatabaseException(
64: "Referentielle Integrität verletzt",
65: FK_CONSTRAINT_VIOLATION, NORMAL_SEVERITY, true, e);
66: }
67: return new TKDatabaseException("Unbekannter Fehler", UNDEFINED,
68: NORMAL_SEVERITY, false, e);
69: }
70: }
|