|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object openjava.mop.Toolbox org.eigenbase.util.Util
public class Util
Miscellaneous utility functions.
Nested Class Summary | |
---|---|
private static class |
Util.BacktrackVisitor<R>
|
static class |
Util.FoundOne
Exception used to interrupt a tree walk of any kind. |
static class |
Util.SqlNodeDescriptor
Describes a node, its parent and if and where in the parent a node lives. |
Field Summary | |
---|---|
private static Toolkit |
awtToolkit
|
static String |
awtWorkaroundProperty
Name of the system property that controls whether the AWT work-around is enabled. |
private static boolean |
driversLoaded
|
static Object[] |
emptyObjectArray
|
static SqlMoniker[] |
emptySqlMonikerArray
|
static String[] |
emptyStringArray
|
static String |
fileSeparator
System-dependent file separator, for example, "/" or "\." |
static String |
fileTimestampFormat
Datetime format string for generating a timestamp string to be used as part of a filename. |
private static Pattern |
javaIdPattern
Regular expression for a valid java identifier which contains no underscores and can therefore be returned intact by toJavaId(java.lang.String, int) . |
static String |
lineSeparator
System-dependent newline character. |
private static Map<Class,Map<String,? extends Enum>> |
mapClazzToMapNameToEnum
Maps classes to the map of their enum values. |
Constructor Summary | |
---|---|
Util()
|
Method Summary | ||
---|---|---|
private static void |
appendPosixDaylightTransition(TimeZone tz,
StringBuilder buf,
int mode,
int day,
int month,
int dayOfWeek,
int time,
int timeMode,
boolean verbose,
boolean isEnd)
Writes a daylight savings time transition to a POSIX timezone description. |
|
private static void |
appendPosixTime(StringBuilder buf,
int millis)
Given a time expressed in milliseconds, append the time formatted as "hh[:mm[:ss]]". |
|
static
|
cast(Iterable<? super E> iterable,
Class<E> clazz)
Converts an Iterable whose members are automatically down-cast to
a given type. |
|
static
|
cast(Iterator<?> iter,
Class<E> clazz)
Converts a iterator whose members are automatically down-cast to a given type. |
|
static
|
cast(List<? super E> list,
Class<E> clazz)
Converts a list whose members are automatically down-cast to a given type. |
|
static Expression |
clone(Expression exp)
|
|
static Expression[] |
clone(Expression[] a)
|
|
static int[] |
clone(int[] a)
|
|
static StatementList |
clone(StatementList e)
|
|
static String[] |
clone(String[] a)
|
|
static boolean |
contains(String[] a,
int length,
String s)
Returns whether an array of strings contains a given string among the first length entries. |
|
static
|
deprecated(T argument,
boolean fail)
Deprecated. If a piece of code calls this method, it indicates that the code needs to be cleaned up. |
|
static void |
discard(boolean b)
Does nothing with its argument. |
|
static void |
discard(double d)
Does nothing with its argument. |
|
static void |
discard(int i)
Does nothing with its argument. |
|
static void |
discard(Object o)
Does nothing with its argument. |
|
static
|
enumConstants(Class<T> clazz)
Creates a map of the values of an enumeration by name. |
|
static
|
enumVal(Class<T> clazz,
String name)
Returns the value of an enumeration with a particular name. |
|
static boolean |
equal(Object[] s0,
Object[] s1)
Returns whether two arrays are equal or are both null. |
|
static boolean |
equal(Object s0,
Object s1)
Returns whether two objects are equal or are both null. |
|
static
|
filter(Collection<?> collection,
Class<E> includeFilter)
|
|
static
|
filter(Iterable<? extends Object> iterable,
Class<E> includeFilter)
Makes a collection of untyped elements appear as a list of strictly typed elements, by filtering out those which are not of the correct type. |
|
static
|
filter(List<?> list,
Class<E> includeFilter)
Returns a subset of a list containing only elements of a given type. |
|
static Util.SqlNodeDescriptor |
findIdentifier(SqlNode node)
Searches recursively for a SqlIdentifier . |
|
static String |
flatArrayToString(Object[] a)
Prints a flat array of objects as [e1,e2,...] |
|
static Charset |
getDefaultCharset()
Returns the Charset object representing the value of SaffronProperties.defaultCharset |
|
static String |
getFileTimestamp()
Gets a timestamp string for use in file names. |
|
static String |
getMessages(Throwable t)
Retrieves messages in a exception and writes them to a string. |
|
static String |
getSalesConnectString()
Returns the connect string with which to connect to the 'Sales' test database. |
|
static String |
getStackTrace(Throwable t)
Returns the stack trace of a throwable. |
|
static int |
hash(int i,
int j)
Combines two integers into a hash code. |
|
static int |
hash(int h,
Object o)
Computes a hash code from an existing hash code and an object (which may be null). |
|
static int |
hashArray(int h,
Object[] a)
Computes a hash code from an existing hash code and an array of objects (which may be null). |
|
static boolean |
isNullOrEmpty(String s)
|
|
(package private) static boolean |
isStatic(Member member)
|
|
private static void |
loadDrivers()
|
|
static void |
loadLibrary(String libName)
Uses System.loadLibrary(String) to load a native library
correctly under mingw (Windows/Cygwin) and Linux environments. |
|
static
|
minus(Set<T> set1,
Set<T> set2)
Returns a set of the elements which are in set1 but not in
set2 , without modifying either. |
|
static RuntimeException |
needToImplement(Object o)
Returns a RuntimeException indicating that a particular
feature has not been implemented, but should be. |
|
static ProcessBuilder |
newAppProcess(String[] cmdarray)
Constructs a ProcessBuilder to run an external application. |
|
static Error |
newInternal()
|
|
static Error |
newInternal(String s)
|
|
static Error |
newInternal(Throwable e)
|
|
static Error |
newInternal(Throwable e,
String s)
|
|
static double |
nLogN(double d)
Computes nlogn(n) using the natural logarithm (or
n if n< , so the result is never
negative. |
|
static void |
permAssert(boolean b,
String description)
Checks an invariant. |
|
static void |
post(boolean b,
String description)
Checks a post-condition. |
|
static void |
pre(boolean b,
String description)
Checks a pre-condition. |
|
static void |
print(PrintWriter pw,
Object o)
Prints an object using reflection. |
|
static void |
print(PrintWriter pw,
Object o,
int indent)
|
|
static void |
printJavaString(PrintWriter pw,
String s,
boolean nullMeansNull)
Prints a string, enclosing in double quotes (") and escaping if necessary. |
|
static void |
println(PrintWriter pw,
Object o)
|
|
static String |
readAllAsString(Reader reader)
Reads all remaining contents from a Reader and returns
them as a string. |
|
static String |
replace(String s,
String find,
String replace)
Replaces every occurrence of find in s with
replace . |
|
static void |
restartIterator(Iterator iterator)
|
|
static String |
rpad(String s,
int len)
Pads a string with spaces up to a given length. |
|
static String |
rtrim(String s)
Trims trailing spaces from a string. |
|
static int |
runApplication(String[] cmdarray,
Logger logger,
Reader appInput,
Writer appOutput)
Runs an external application. |
|
static int |
runAppProcess(ProcessBuilder pb,
Logger logger,
Reader appInput,
Writer appOutput)
Runs an external application process. |
|
static void |
squelchConnection(Connection connection)
Closes a Connection, ignoring any SQL exception. |
|
static void |
squelchReader(Reader reader)
Closes a Reader, ignoring any I/O exception. |
|
static void |
squelchStmt(Statement stmt)
Closes a Statement, ignoring any SQL exception. |
|
static void |
squelchStream(InputStream stream)
Closes an InputStream, ignoring any I/O exception. |
|
static void |
squelchStream(OutputStream stream)
Closes an OutputStream, ignoring any I/O exception. |
|
static void |
squelchWriter(Writer writer)
Closes a Writer, ignoring any I/O exception. |
|
static String |
stripDoubleQuotes(String value)
Converts double-quoted Java strings to their contents. |
|
static void |
swallow(Throwable e,
Logger logger)
Records that an exception has been caught but will not be re-thrown. |
|
static Object[] |
toArray(Vector v)
Deprecated. use Vector.toArray() on Java2 |
|
static Object[] |
toArray(Vector v,
Object[] a)
Equivalent to Vector.toArray(Object[]) . |
|
static String |
toJavaId(String s,
int ordinal)
Converts an arbitrary string into a string suitable for use as a Java identifier. |
|
static
|
toList(Iterator<T> iter)
Materializes the results of a Iterator as a List . |
|
static Map<String,String> |
toMap(Properties properties)
Converts a Properties object to a . |
|
static String |
toPosix(TimeZone tz,
boolean verbose)
Converts a Java timezone to POSIX format, so that the boost C++ library can instantiate timezone objects. |
|
static String |
toScientificNotation(BigDecimal bd)
Formats a BigDecimal value to a string in scientific notation For
exampleA value of 0.00001234 would be formated as 1.234E-5
A value of 100000.00 would be formated as 1.00E5
A value of 100 (scale zero) would be formated as
1E2 If bd has a precision higher than 20, this method will
truncate the output string to have a precision of 20 (no rounding will be
done, just a truncate). |
|
static URL |
toURL(File file)
Creates a file-protocol URL for the given file. |
|
static
|
unexpected(E value)
Returns an exception indicating that we didn't expect to find this enumeration here. |
|
static String |
uniqueFieldName(String[] names,
int length,
String s)
Generates a unique name |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String awtWorkaroundProperty
loadLibrary(String)
,
Constant Field Valuespublic static final String lineSeparator
public static final String fileSeparator
public static final String fileTimestampFormat
public static final Object[] emptyObjectArray
public static final String[] emptyStringArray
public static final SqlMoniker[] emptySqlMonikerArray
private static boolean driversLoaded
private static final Pattern javaIdPattern
toJavaId(java.lang.String, int)
.
private static Toolkit awtToolkit
loadLibrary(String)
private static final Map<Class,Map<String,? extends Enum>> mapClazzToMapNameToEnum
Constructor Detail |
---|
public Util()
Method Detail |
---|
public static final void discard(Object o)
public static final void discard(int i)
public static final void discard(boolean b)
public static final void discard(double d)
public static final void swallow(Throwable e, Logger logger)
e
- Exceptionlogger
- If not null, logs exception to this loggerpublic static final boolean equal(Object s0, Object s1)
public static final boolean equal(Object[] s0, Object[] s1)
public static StatementList clone(StatementList e)
public static String[] clone(String[] a)
public static int[] clone(int[] a)
public static int hash(int i, int j)
public static int hash(int h, Object o)
public static int hashArray(int h, Object[] a)
public static <T> Set<T> minus(Set<T> set1, Set<T> set2)
set1
but not in
set2
, without modifying either.
public static double nLogN(double d)
nlogn(n)
using the natural logarithm (or
n
if n<Math.E
, so the result is never
negative.
public static void print(PrintWriter pw, Object o)
null
;
arrays of objects and primitive values; for regular objects, we print all
public fields.
public static void print(PrintWriter pw, Object o, int indent)
public static final void printJavaString(PrintWriter pw, String s, boolean nullMeansNull)
printDoubleQuoted(w,"x\"y",false)
prints "x\"y"
.
public static void println(PrintWriter pw, Object o)
public static String flatArrayToString(Object[] a)
public static String toScientificNotation(BigDecimal bd)
BigDecimal
value to a string in scientific notation For
example1.234E-5
1.00E5
1E2
bd
has a precision higher than 20, this method will
truncate the output string to have a precision of 20 (no rounding will be
done, just a truncate).
public static final String replace(String s, String find, String replace)
find
in s
with
replace
.
public static URL toURL(File file) throws MalformedURLException
MalformedURLException
public static String getFileTimestamp()
public static Expression clone(Expression exp)
public static Expression[] clone(Expression[] a)
public static String stripDoubleQuotes(String value)
"foo\"bar"
becomes foo"bar
.
public static String toJavaId(String s, int ordinal)
The mapping is one-to-one (that is, distinct strings will produce distinct java identifiers). The mapping is also reversible, but the inverse mapping is not implemented.
A valid Java identifier must start with a Unicode letter, underscore, or dollar sign ($). The other characters, if any, can be a Unicode letter, underscore, dollar sign, or digit.
This method uses an algorithm similar to URL encoding. Valid characters are unchanged; invalid characters are converted to an underscore followed by the hex code of the character; and underscores are doubled.
Examples:toJavaId("foo")
returns "foo"
toJavaId("foo bar")
returns "foo_20_bar"
toJavaId("foo_bar")
returns "foo__bar"
toJavaId("0bar")
returns "_40_bar"
(digits
are illegal as a prefix)
toJavaId("foo0bar")
returns "foo0bar"
public static <T> List<T> toList(Iterator<T> iter)
Iterator
as a List
.
iter
- iterator to materialize
public static Object[] toArray(Vector v)
Vector.toArray()
on Java2
public static Object[] toArray(Vector v, Object[] a)
Vector.toArray(Object[])
.
static boolean isStatic(Member member)
public static boolean isNullOrEmpty(String s)
public static String getSalesConnectString()
private static void loadDrivers()
public static Charset getDefaultCharset()
Charset
object representing the value of SaffronProperties.defaultCharset
IllegalCharsetNameException
- If the given charset
name is illegal
UnsupportedCharsetException
- If no support for
the named charset is available in this instance of the Java virtual
machinepublic static Error newInternal()
public static Error newInternal(String s)
public static Error newInternal(Throwable e)
public static Error newInternal(Throwable e, String s)
public static String getMessages(Throwable t)
public static String getStackTrace(Throwable t)
t
- Throwable
public static void pre(boolean b, String description)
For example,
/** * @ pre x != 0 * / void foo(int x) { Util.pre(x != 0, "x != 0"); }
b
- Result of evaluating the pre-condition.description
- Description of the pre-condition.public static void post(boolean b, String description)
For example,
/** * @ post return != 0 * / void foo(int x) { int res = bar(x); Util.post(res != 0, "return != 0"); }
b
- Result of evaluating the pre-condition.description
- Description of the pre-condition.public static void permAssert(boolean b, String description)
This is similar to assert
keyword, except that the
condition is always evaluated even if asserts are disabled.
public static RuntimeException needToImplement(Object o)
RuntimeException
indicating that a particular
feature has not been implemented, but should be.
If every 'hole' in our functionality uses this method, it will be
easier for us to identity the holes. Throwing a UnsupportedOperationException
isn't as good, because sometimes
we actually want to partially implement an API.
Example usage:
class MyVisitor extends BaseVisitor { void accept(Foo foo) { // Exception will identify which subclass forgot to override // this method throw Util.needToImplement(this); } }
o
- The object which was the target of the call, or null. Passing
the object gives crucial information if a method needs to be overridden
and a subclass forgot to do so.
UnsupportedOperationException
.public static <T> T deprecated(T argument, boolean fail)
Introduce a call to this method to indicate that a piece of code, or a javadoc comment, needs work before you check in. If you have an IDE which can easily trace references, this is an easy way to maintain a to-do list.
Checked-in code must never call this method: you must remove all calls/references to this method before you check in.
The argument
has generic type and determines the type of
the result. This allows you to use the method inside an expression, for
example
but the usual usage is to pass in a descriptive string.int x = Util.deprecated(0, false);
deprecated
to fail if a piece of
supposedly dead code is reachedvoid foo(int x) { if (x < 0) { // If this code is executed, an error will be thrown. Util.deprecated("no longer need to handle negative numbers", true); bar(x); } else { baz(x); } }
deprecated
to comment out dead
codeif (Util.deprecated(false, false)) { // This code will not be executed, but an error will not be thrown. baz(); }
argument
- Arbitrary argument to the method.fail
- Whether to throw an exception if this method is called
argument
.public static void loadLibrary(String libName)
System.loadLibrary(String)
to load a native library
correctly under mingw (Windows/Cygwin) and Linux environments.
This method also implements a work-around for applications that wish
to load AWT. AWT conflicts with some native libraries in a way that
requires AWT to be loaded first. This method checks the system property
named awtWorkaroundProperty
and if it is set to "on" (default;
case-insensitive) it pre-loads AWT to avoid the conflict.
libName
- the name of the library to load, as in System.loadLibrary(String)
.public static void restartIterator(Iterator iterator)
public static Util.SqlNodeDescriptor findIdentifier(SqlNode node)
SqlIdentifier
.
node
- in which to look in
public static String uniqueFieldName(String[] names, int length, String s)
names
- Array of existing nameslength
- Number of existing namess
- Suggested name
length
positions of the names
array.public static boolean contains(String[] a, int length, String s)
length
entries.
a
- Array of stringslength
- Number of entries to searchs
- String to seek
public static String readAllAsString(Reader reader) throws IOException
Reader
and returns
them as a string.
reader
- reader to read from
IOException
public static void squelchStream(InputStream stream)
stream
- stream to closepublic static void squelchStream(OutputStream stream)
stream
- stream to closepublic static void squelchReader(Reader reader)
reader
- reader to closepublic static void squelchWriter(Writer writer)
writer
- writer to closepublic static void squelchStmt(Statement stmt)
stmt
- stmt to closepublic static void squelchConnection(Connection connection)
connection
- connection to closepublic static String rtrim(String s)
s
- string to be trimmed
public static String rpad(String s, int len)
s
- string to be paddedlen
- desired length
public static String toPosix(TimeZone tz, boolean verbose)
POSIX IEEE 1003.1 defines a format for timezone specifications.
The boost C++ library can read these specifications and instantiate posix_time_zone objects from them. The purpose of this method, therefore, is to allow the C++ code such as the fennel calculator to use the same notion of timezone as Java code.
The format is as follows:
"std offset dst [offset],start[/time],end[/time]"where:
[+|-]hh[:mm[:ss]] {h=0-23, m/s=0-59}
For example:
(Real format strings do not contain spaces; they are in the above template only for readability.)
Boost apparently diverges from the POSIX standard in how it treats the sign of timezone offsets. The POSIX standard states 'If preceded by a '-', the timezone shall be east of the Prime Meridian; otherwise, it shall be west', yet boost requires the opposite. For instance, PST has offset '-8' above. This method generates timezone strings consistent with boost's expectations.
tz
- Timezoneverbose
- Whether to include fields which can be omitted because
they have their default values
private static void appendPosixDaylightTransition(TimeZone tz, StringBuilder buf, int mode, int day, int month, int dayOfWeek, int time, int timeMode, boolean verbose, boolean isEnd)
tz
- Timezonebuf
- Buffer to append tomode
- Transition modeday
- Day of transitionmonth
- Month of transitiondayOfWeek
- Day of week of transitiontime
- Time of transition in millistimeMode
- Mode of time transitionverbose
- VerboseisEnd
- Whether this transition is leaving DSTprivate static void appendPosixTime(StringBuilder buf, int millis)
buf
- Buffer to append tomillis
- Millisecondspublic static int runApplication(String[] cmdarray, Logger logger, Reader appInput, Writer appOutput) throws IOException, InterruptedException
cmdarray
- command and arguments, see ProcessBuilder
logger
- if not null, command and exit status will be loggedappInput
- if not null, data will be copied to application's stdinappOutput
- if not null, data will be captured from application's
stdout and stderr
IOException
InterruptedException
public static ProcessBuilder newAppProcess(String[] cmdarray)
ProcessBuilder
to run an external application.
cmdarray
- command and arguments.
public static int runAppProcess(ProcessBuilder pb, Logger logger, Reader appInput, Writer appOutput) throws IOException, InterruptedException
pb
- ProcessBuilder
for the application; might be returned by newAppProcess(java.lang.String[])
.logger
- if not null, command and exit status will be logged hereappInput
- if not null, data will be copied to application's stdinappOutput
- if not null, data will be captured from application's
stdout and stderr
IOException
InterruptedException
public static <E> List<E> cast(List<? super E> list, Class<E> clazz)
If a member of the backing list is not an instanceof E
,
the accessing method (such as List.get(int)
) will throw a ClassCastException
.
All modifications are automatically written to the backing list. Not synchronized.
list
- Backing list.clazz
- Class to cast to.
public static <E> Iterator<E> cast(Iterator<?> iter, Class<E> clazz)
If a member of the backing iterator is not an instanceof
E
, Iterator.next()
) will throw a ClassCastException
.
All modifications are automatically written to the backing iterator. Not synchronized.
iter
- Backing iterator.clazz
- Class to cast to.
public static <E> Iterable<E> cast(Iterable<? super E> iterable, Class<E> clazz)
Iterable
whose members are automatically down-cast to
a given type.
All modifications are automatically written to the backing iterator. Not synchronized.
iterable
- Backing iterableclazz
- Class to cast to
public static <E> Iterable<E> filter(Iterable<? extends Object> iterable, Class<E> includeFilter)
The returned object is an Iterable
,
which makes it ideal for use with the 'foreach' construct. For example,
List<Number> numbers = Arrays.asList(1, 2, 3.14,
4, null, 6E23);
for (int myInt : filter(numbers, Integer.class)) {
print(i);
}
will print 1, 2, 4.
iterable
- includeFilter
- public static <E> Collection<E> filter(Collection<?> collection, Class<E> includeFilter)
public static <E> List<E> filter(List<?> list, Class<E> includeFilter)
Modifications to the list are NOT written back to the source list.
list
- List of objectsincludeFilter
- Class to filter for
public static Map<String,String> toMap(Properties properties)
Properties
object to a Map
<String,
String>
.
This is necessary because Properties
is a dinosaur class. It
ought to extend Map<String,String>
, but instead
extends
.
Hashtable
<Object,Object>
Typical usage, to iterate over a Properties
:
Properties properties;
for (Map.Entry<String, String> entry =
Util.toMap(properties).entrySet()) {
println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
public static <E extends Enum<E>> Error unexpected(E value)
value
- Enumeration value which was not expected
public static <T extends Enum<T>> Map<String,T> enumConstants(Class<T> clazz)
clazz
- Enumeration class
public static <T extends Enum<T>> T enumVal(Class<T> clazz, String name)
Similar to Enum.valueOf(Class, String)
, but returns null
rather than throwing IllegalArgumentException
.
T
- Enum class typeclazz
- Enum classname
- Name of enum constant
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |