/**
 * Utilities for getting the calling class's name and package name.
 * 
 * @author SBrunning
 *  
 */
public class ClassName {

    /**
     * Get the calling class's fully qualified class name.
     * 
     * @return The calling class's fully qualified class name.
     */
    public static String getQualifiedClassName() {
        return new Exception().getStackTrace()[1].getClassName();
    }

    /**
     * Get the calling class's class name.
     * 
     * @return The calling class's class name.
     */
    public static Object getClassName() {
        String qualifiedClassName = new Exception().getStackTrace()[1].getClassName();
        return qualifiedClassName.substring(qualifiedClassName.lastIndexOf('.') + 1, qualifiedClassName.length());
    }

    /**
     * Get the calling class's package name.
     * 
     * @return The calling class's package name.
     */
    public static Object getPackageName() {
        String qualifiedClassName = new Exception().getStackTrace()[1].getClassName();
        return qualifiedClassName.substring(0, qualifiedClassName.lastIndexOf('.'));
    }
}