001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2005 Danet GmbH (www.danet.de), BU BTS.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: Misc.java,v 1.4 2007/05/27 10:03:05 mlipp Exp $
021: *
022: * $Log: Misc.java,v $
023: * Revision 1.4 2007/05/27 10:03:05 mlipp
024: * Improved locale detection/setting.
025: *
026: * Revision 1.3 2007/05/26 21:52:58 mlipp
027: * Added more utility methods.
028: *
029: * Revision 1.2 2006/09/29 12:32:08 drmlipp
030: * Consistently using WfMOpen as projct name now.
031: *
032: * Revision 1.1 2006/09/01 11:14:01 drmlipp
033: * Added.
034: *
035: */
036: package de.danet.an.util;
037:
038: import java.util.Enumeration;
039: import java.util.Locale;
040:
041: /**
042: * This class provides general utility functions.
043: *
044: * @author Michael Lipp
045: *
046: */
047: public class Misc {
048:
049: /**
050: * Compare two objects, handling <code>null</code> values properly.
051: * The method returns <code>true</code> if both parameters are <code>
052: * null</code> or if they are both not <code>null</code>
053: * and <code>o1.equals(o2)</code>.
054: *
055: * @param o1 one object
056: * @param o2 another object
057: * @return <code>true</code> if objects are equal
058: */
059: public static boolean equals(Object o1, Object o2) {
060: if (o1 == null && o2 == null) {
061: return true;
062: }
063: if (o1 != null && o2 != null) {
064: return o1.equals(o2);
065: }
066: return false;
067: }
068:
069: /**
070: * Join the given strings with the given separator.
071: *
072: * @param values the values
073: * @param sep the separator
074: */
075: public static String join(String[] values, String sep) {
076: StringBuffer res = new StringBuffer();
077: for (int i = 0; i < values.length; i++) {
078: if (i > 0) {
079: res.append(sep);
080: }
081: res.append(values[i]);
082: }
083: return res.toString();
084: }
085:
086: /**
087: * Join the given enumeration of strings with the given separator.
088: *
089: * @param values the values
090: * @param sep the separator
091: */
092: public static String join(Enumeration values, String sep) {
093: StringBuffer res = new StringBuffer();
094: boolean first = true;
095: for (; values.hasMoreElements();) {
096: if (first) {
097: first = false;
098: } else {
099: res.append(sep);
100: }
101: res.append((String) values.nextElement());
102: }
103: return res.toString();
104: }
105:
106: /**
107: * Find the locale for the given result from
108: * <code>Locale.toString ()</code>.
109: *
110: * @param localeName the locale
111: * @return the result
112: */
113: public static Locale localeFromString(String localeName) {
114: String[] parts = localeName.split("_");
115: if (parts.length == 1) {
116: return new Locale(parts[0]);
117: }
118: if (parts.length == 2) {
119: return new Locale(parts[0], parts[1]);
120: }
121: if (parts.length == 3) {
122: return new Locale(parts[0], parts[1], parts[2]);
123: }
124: throw new IllegalArgumentException("Not a locale name: "
125: + localeName);
126: }
127: }
|