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    /**
9     * A Class class.
10    * <P>
11    *
12    * @author Guillermo Posse
13    */
14   public class InstantbankException extends Exception {
15     private String stackTrace = "";
16     private Vector technicalMessages;
17     private Vector userMessages;
18   
19   
20     /**
21      * Constructor
22      */
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