001 /* 002 * Copyright © 2008, 2009 Pedro Agulló Soliveres. 003 * 004 * This file is part of DirectJNgine. 005 * 006 * DirectJNgine 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 3 of the License. 009 * 010 * DirectJNgine is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU General Public License for more details. 014 * 015 * You should have received a copy of the GNU General Public License 016 * along with DirectJNgine. If not, see <http://www.gnu.org/licenses/>. 017 * 018 * This software uses the ExtJs library (http://extjs.com), which is 019 * distributed under the GPL v3 license (see http://extjs.com/license). 020 */ 021 022 package com.softwarementors.extjs.djn; 023 024 public final class ClassUtils { 025 private ClassUtils() { 026 // Disable class instantiation 027 } 028 029 public static boolean isNumericType( Class<?> cls ) { 030 assert cls != null; 031 032 if( cls== float.class || cls == double.class || cls == byte.class || cls == short.class || cls == int.class || cls == long.class) { 033 return true; 034 } 035 036 Class<?> currentClass = cls; 037 while( currentClass != null ) { 038 if( currentClass == Number.class ) 039 return true; 040 currentClass = currentClass.getSuperclass(); 041 } 042 return false; 043 } 044 045 // JDK 1.4 does not implement Class.getSimpleName() 046 public static String getSimpleName( Class<?> cls ) { 047 assert cls != null; 048 049 String result = cls.getName(); 050 051 // Special case: inner classes! 052 int simpleNameStart = result.lastIndexOf("$"); 053 if( simpleNameStart >= 0 ) { 054 simpleNameStart++; // Skip the "$" 055 // Need to skip the digits immediately after the "$" 056 for( ; simpleNameStart < result.length(); simpleNameStart++ ) { 057 if( !Character.isDigit(result.charAt(simpleNameStart)) ) { 058 return result.substring(simpleNameStart); 059 } 060 } 061 } 062 else { 063 simpleNameStart = result.lastIndexOf( "."); 064 if( simpleNameStart >= 0) { 065 return result.substring(simpleNameStart+1); 066 } 067 } 068 return result; 069 } 070 }