package com.idega.util; import java.io.*; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.security.SecureRandom; import java.util.*; import com.idega.repository.data.RefactorClassRegistry; /** * Title: * Description: * Copyright: Copyright (c) 2001 * Company: * @author <br><a href="mailto:aron@idega.is">Aron Birkir</a><br> * @version 1.0 */ public class MiscUtil { public MiscUtil() { } public static Object[] shuffle(Object aobj[]) { Object aobj1[] = aobj; SecureRandom securerandom = new SecureRandom(); for(int i = 0; i < aobj1.length; i++) { int j = securerandom.nextInt(); if(j < 0) { j = -j; } j %= aobj1.length; Object obj = aobj1[i]; aobj1[i] = aobj1[j]; aobj1[j] = obj; } return aobj1; } public static String[] split(String s, String s1) { StringTokenizer stringtokenizer = new StringTokenizer(s1, s); String as[] = new String[stringtokenizer.countTokens()]; int i = 0; while(stringtokenizer.hasMoreTokens()) { as[i++] = stringtokenizer.nextToken(); } return as; } /** * @deprecated Method getFileData is deprecated */ public static String getFileData(String s) throws IOException { return getFileData(new File(s)); } public static String getFileData(File file) throws IOException { byte abyte0[] = new byte[8192]; FileInputStream fileinputstream = new FileInputStream(file); StringBuffer stringbuffer = new StringBuffer(); int i; while((i = fileinputstream.read(abyte0)) >= 0) { String s = new String(abyte0); stringbuffer.append(s.substring(0, i)); } fileinputstream.close(); return stringbuffer.toString(); } public static String join(Enumeration enumeration, String s) { StringBuffer stringbuffer = new StringBuffer(); while(enumeration.hasMoreElements()) { String s1 = (String)enumeration.nextElement(); stringbuffer.append(s1); if(enumeration.hasMoreElements()) { stringbuffer.append(s); } } return stringbuffer.toString(); } public static Enumeration getStackEnum(Exception exception, int i) { Vector vector = new Vector(); ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); PrintWriter printwriter = new PrintWriter(bytearrayoutputstream, true); exception.printStackTrace(printwriter); StringTokenizer stringtokenizer = new StringTokenizer(bytearrayoutputstream.toString(), "\n"); for(int j = 0; j < i; j++) { stringtokenizer.nextToken(); } for(; stringtokenizer.hasMoreTokens(); vector.addElement(stringtokenizer.nextToken().substring(4))) { ; } return vector.elements(); } public static String getStack(Exception exception, int i) { return join(getStackEnum(exception, i), ", "); } public static void dumpThreads() { ThreadGroup threadgroup1 = null; for(ThreadGroup threadgroup = Thread.currentThread().getThreadGroup(); threadgroup != null; threadgroup = threadgroup.getParent()) { threadgroup1 = threadgroup; } threadgroup1.list(); } public static void runClass(String s, String as[]) throws Exception { Class class1 = RefactorClassRegistry.forName(s); Class aclass[] = new Class[1]; String as1[] = new String[0]; aclass[0] = as1.getClass(); Method method = class1.getMethod("main", aclass); Object aobj[] = new Object[1]; aobj[0] = as; try { method.invoke(class1, aobj); } catch(InvocationTargetException invocationtargetexception) { invocationtargetexception.printStackTrace(); Throwable throwable = invocationtargetexception.getTargetException(); if(throwable instanceof Exception) { throw (Exception)throwable; } throwable.printStackTrace(); } } public static String array2str(String[] array,String delim){ StringBuffer s = new StringBuffer(); for (int i = 0; i < array.length; i++) { if(i != 0) { s.append(delim); } s.append(array[i]); } return s.toString(); } public static String[] str2array(String s,String delim){ StringTokenizer st = new StringTokenizer(s,delim); String[] array = new String[st.countTokens()]; int i = 0; while(st.hasMoreTokens()){ array[i++] = st.nextToken(); } return array; } }