001 package hep.aida.ref.sql;
002
003 // SQL
004 import java.sql.SQLException;
005
006 // Log4J
007 import org.apache.log4j.Logger;
008
009 /** <code>Util</code> contains various special utilities usefull
010 * in SQLTuple. Often, they represent functionality proposed to
011 * AIDA, bu not yet standartised.
012 * <p><font color="#880088">
013 * <pre>
014 * $Log: Util.java,v $
015 * Revision 1.31 2007/05/23 16:38:44 hrivnac
016 * logical connections for Plotter; better UML
017 *
018 * Revision 1.30 2006/12/13 15:39:29 hrivnac
019 * derby url modified
020 *
021 * Revision 1.29 2006/12/12 15:21:43 hrivnac
022 * McKoi replaced with Derby; uppercase-only dbs handled better; moving to JAS 0.8.3
023 *
024 * Revision 1.28 2006/11/10 17:40:03 hrivnac
025 * WebService updated, long-format Oracle URL allowed, complete db not parsed if only table requested (speed)
026 *
027 * Revision 1.27 2005/09/28 16:21:06 hrivnac
028 * code cleaning
029 *
030 * Revision 1.26 2004/10/29 22:27:25 hrivnac
031 * imports corrected
032 *
033 * Revision 1.25 2004/10/22 15:33:00 hrivnac
034 * cleaned
035 *
036 * Revision 1.24 2004/10/12 13:25:40 hrivnac
037 * small improvements
038 *
039 * Revision 1.23 2004/07/06 14:24:50 hrivnac
040 * support for Oracle
041 *
042 * Revision 1.22 2004/05/22 15:05:59 hrivnac
043 * test
044 *
045 * Revision 1.21 2004/04/14 13:39:47 hrivnac
046 * 1.5 warnings fixed
047 *
048 * Revision 1.20 2004/04/13 15:45:54 hrivnac
049 * AIDA URL introduced
050 *
051 * Revision 1.19 2004/02/26 15:07:33 hrivnac
052 * new AidaUtils, Ant 1.6.1
053 *
054 * Revision 1.18 2004/02/10 14:50:58 hrivnac
055 * JavaDoc tags completed
056 *
057 * Revision 1.17 2004/02/04 13:30:40 hrivnac
058 * - improvement of Enums internal mapping
059 * - general cleaning
060 *
061 * Revision 1.16 2004/01/28 15:54:48 hrivnac
062 * better help
063 *
064 * Revision 1.15 2003/11/26 16:09:46 hrivnac
065 * Functional EventSelector WebService
066 *
067 * Revision 1.14 2003/11/24 15:13:22 hrivnac
068 * Logging improved.
069 *
070 * Revision 1.13 2003/11/21 18:14:04 hrivnac
071 * Prototype of C++ interface based on JACE introduced.
072 *
073 * Revision 1.12 2003/11/20 17:21:58 hrivnac
074 * Java 1.5 natively supported, Log4J reporting improved.
075 *
076 * Revision 1.11 2003/11/18 22:03:45 hrivnac
077 * Root benchmarks.
078 *
079 * Revision 1.10 2003/11/05 19:46:22 hrivnac
080 * - FreeHEP 1.2.1
081 * - JAIDA 3.2.1
082 *
083 * Revision 1.2 2003/10/20 21:03:49 hrivnac
084 * Write/read tests work on both SQL and XML.
085 *
086 * </pre>
087 * </font></p>
088 * @opt attributes
089 * @opt operations
090 * @opt types
091 * @opt visibility
092 * @version $Id: Util.java,v 1.31 2007/05/23 16:38:44 hrivnac Exp $
093 * @author <a href="mailto:Julius.Hrivnac@cern.ch">J.Hrivnac</a> */
094 public class Util {
095
096 /** Report about standard SQL Exception.
097 * @param msg Message to be displayed.
098 * @param e Exception to be displayed.
099 * @return Formated message. */
100 public static String report(String msg, Throwable e) {
101 String s = msg + "\n\n" + e.getMessage() + "\n";
102 if (e instanceof SQLException) {
103 s += "SQLException: " + ((SQLException)e).getMessage() + "\n";
104 s += "SQLState: " + ((SQLException)e).getSQLState() + "\n";
105 s += "VendorError: " + ((SQLException)e).getErrorCode() + "\n";
106 }
107 if (e.getCause() != null) {
108 s += report("Caused by:", e.getCause());
109 }
110 return s;
111 }
112
113 /** Form standard command "usage" message.
114 * @param msg Message to be displayed.
115 * @return Formated message. */
116 public static String urlHelp(String msg) {
117 String s = "\n" + msg + "\n";
118 s += "url = jdbc:[mysql|postgresql|cjdbc]://<host>/<db>/<table>\n";
119 s += " jdbc:derby:<dbname>()/<table>\n";
120 s += " jdbc:oracle:thin:@<host>:<port>:<sid>/<table>\n";
121 s += " jdbc:oracle:thin:@(DESCRIPTION=...)\n";
122 s += " <file>.aida/<table>\n";
123 s += " <file>.root/<table>\n";
124 return s;
125 }
126
127 /** Logging . */
128 private static Logger log = Logger.getLogger(Util.class);
129
130 }