001package org.andromda.cartridges.java;
002
003import java.util.Date;
004import org.apache.commons.lang.StringUtils;
005import org.apache.commons.lang.time.FastDateFormat;
006
007/**
008 * Contains utilities used within the WebService cartridge.
009 *
010 * @author Chad Brandon
011 */
012public class JavaUtils
013{
014    /**
015     * The namespace delimiter (separates namespaces).
016     */
017    public static final char NAMESPACE_DELIMITER = '.';
018
019    /**
020     * Reverses the <code>packageName</code>.
021     *
022     * @param packageName the package name to reverse.
023     * @return the reversed package name.
024     */
025    public static String reversePackage(String packageName)
026    {
027        return StringUtils.reverseDelimited(packageName, NAMESPACE_DELIMITER);
028    }
029
030    private static FastDateFormat df = FastDateFormat.getInstance("MM/dd/yyyy HH:mm:ssZ");
031
032    /**
033     * Returns the current Date in the specified format.
034     *
035     * @param format The format for the output date
036     * @return the current date in the specified format.
037     */
038    public static String getDate(String format)
039    {
040        if (df == null || !format.equals(df.getPattern()))
041        {
042            df = FastDateFormat.getInstance(format);
043        }
044        return df.format(new Date());
045    }
046
047    /**
048     * Returns the current Date in the specified format.
049     *
050     * @return the current date with the default format .
051     */
052    public static String getDate()
053    {
054        return df.format(new Date());
055    }
056
057    /**
058     * Returns the current JDK version.
059     *
060     * @return the current JDK version (1.4, 1.5, 1.6, 1.7 etc).
061     */
062    public static String getJDKVersion()
063    {
064        // Default JDK version = 1.6
065        String version = "1.6";
066        final String classVersion = System.getProperty("java.class.version","44.0");
067        if ("50.0".compareTo(classVersion) > 0 && "49.0".compareTo(classVersion) <= 0)
068        {
069            version = "1.5";
070        }
071        else if ("52.0".compareTo(classVersion) > 0 && "51.0".compareTo(classVersion) <= 0)
072        {
073            version = "1.7";
074        }
075        else if ("49.0".compareTo(classVersion) > 0 && "48.0".compareTo(classVersion) <= 0)
076        {
077            version = "1.4";
078        }
079        else if ("48.0".compareTo(classVersion) > 0 && "47.0".compareTo(classVersion) <= 0)
080        {
081            version = "1.3";
082        }
083        else if ("47.0".compareTo(classVersion) > 0 && "46.0".compareTo(classVersion) <= 0)
084        {
085            version = "1.2";
086        }
087        else if ("46.0".compareTo(classVersion) > 0 && "45.0".compareTo(classVersion) <= 0)
088        {
089            version = "1.2";
090        }
091        return version;
092    }
093}