1 package com.instantbank.collections.util;
2
3 import java.io.PrintWriter;
4 import java.io.StringWriter;
5 import java.util.Enumeration;
6 import java.util.Vector;
7
8
14 public class InstantbankException extends Exception {
15 private String stackTrace = "";
16 private Vector technicalMessages;
17 private Vector userMessages;
18
19
20
23 public InstantbankException() {
24 technicalMessages = new Vector();
25 userMessages = new Vector();
26 }
27
28
29 public InstantbankException(String code, String message) {
30 technicalMessages = new Vector();
31 userMessages = new Vector();
32 this.setUserMessage(code, message);
33 }
34
35
36 public InstantbankException(Exception e, String code, String message) {
37 if(e.getClass().getName().equals("com.instantbank.collections.util.InstantbankException")) {
38 InstantbankException ie = (InstantbankException)e;
39 this.technicalMessages = (Vector)ie.technicalMessages.clone();
40 this.userMessages = (Vector)ie.userMessages.clone();
41 this.setStackTrace(ie.getStackTrace());
42 }
43 else {
44 technicalMessages = new Vector();
45 userMessages = new Vector();
46 }
47 this.setUserMessage(code, message);
48 this.setTechnicalMessage(e);
49 e.printStackTrace();
50 }
51
52
53 public Enumeration getTechnicalMessages() {
54 return technicalMessages.elements();
55 }
56
57
58 public String getMessage() {
59 int i;
60 String msg = "";
61
62 msg += "User messages:\n";
63 for(i = 0; i < userMessages.size(); i++) {
64 msg += (String)userMessages.get(i) + "\n";
65 }
66 msg += "\n";
67 msg += "Technical messages:\n";
68 for(i = 0; i < technicalMessages.size(); i++) {
69 msg += (String)technicalMessages.get(i) + "\n";
70 }
71 return msg;
72 }
73
74
75 public String getStackTrace() {
76 if(stackTrace.equals("")) {
77 StringWriter sw = new StringWriter();
78 PrintWriter pw = new PrintWriter(sw);
79 this.printStackTrace(pw);
80 return sw.toString();
81 }
82 else {
83 return stackTrace;
84 }
85 }
86
87
88 public Enumeration getUserMessages() {
89 return userMessages.elements();
90 }
91
92
93 public void setStackTrace(String s) {
94 this.stackTrace = s;
95 }
96
97
98 public void setTechnicalMessage(Exception e) {
99 String message;
100
101 if(!e.getClass().getName().equals("com.instantbank.collections.util.InstantbankException")) {
102 message = "Class=" + e.getClass().getName();
103 message += " Message=" + e.getMessage();
104 technicalMessages.addElement(message);
105 }
106 }
107
108
109 public void setTechnicalMessage(String message) {
110 technicalMessages.addElement(message);
111 }
112
113
114 public void setUserMessage(String code, String message) {
115 userMessages.addElement("IB-" + code + ": " + message);
116 }
117 }
118
119