package org.openstack.atlas.util.ca; import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import org.openstack.atlas.util.ca.primitives.RsaConst; public class StringUtils { private static final String USASCII = "US-ASCII"; private static final int PAGESIZE = 4096; public static String displayParsedInt(String strIn) { try { int i = Integer.parseInt(strIn); return String.format("%d", i); } catch (NumberFormatException ex) { return "INVALID"; } } // Coulden't find a default library function to do this. :( // It iterates the string character per caracher and builds a new one so // Its like really slow. :( public static String escape_html(String html) { StringBuilder sb = new StringBuilder(RsaConst.PAGESIZE); char ch; int len = html.length(); int i; for (i = 0; i < len; i++) { ch = html.charAt(i); switch (ch) { case ' ': sb.append(" "); break; case '<': sb.append("<"); break; case '>': sb.append(">"); break; case '"': sb.append("""); break; case '&': sb.append("&"); break; case '\n': sb.append("<br/>"); break; default: sb.append(ch); break; } } return sb.toString(); } // Got tired of spelling ExtendedStackTrace public static String getEST(Throwable th) { return getExtendedStackTrace(th); } public static String getExtendedStackTrace(Throwable th) { Throwable t; StringBuilder sb = new StringBuilder(RsaConst.PAGESIZE); Exception currEx; String msg; t = th; while (t != null) { if (t instanceof Exception) { currEx = (Exception) t; sb.append(String.format("\"%s\":\"%s\"\n", currEx.getClass().getName(), currEx.getMessage())); for (StackTraceElement se : currEx.getStackTrace()) { sb.append(String.format("%s\n", se.toString())); } sb.append("\n"); t = t.getCause(); } } return sb.toString(); } public static <T> String joinString(Collection<T> objects, String delim) { StringBuilder sb = new StringBuilder(); Object[] oarray = objects.toArray(); int nobjects = oarray.length; if (nobjects == 0) { return ""; } for (int i = 0; i < nobjects - 1; i++) { sb.append(String.format("%s%s", oarray[i].toString(), delim)); } sb.append(String.format("%s", oarray[nobjects - 1])); return sb.toString(); } public static String asciiString(byte[] asciiBytes) { if(asciiBytes == null){ return ""; } try { return new String(asciiBytes, USASCII); } catch (UnsupportedEncodingException ex) { return null; // Impossable exception } } public static byte[] asciiBytes(String asciiStr) { byte[] out = null; if(asciiStr==null){ return new byte[0]; } try { out = asciiStr.getBytes(USASCII); return out; } catch (UnsupportedEncodingException ex) { // Impossable Exception as Java Spec says all Implementations will // support US-ASCII. But incase the impossible does happen // return null return out; } } // checks if the strings are equal but will conclude the strings // are not equal if either is null. public static boolean strEquals(String a, String b) { if (a == null || b == null) { return false; } else { return a.equals(b); } } // LineWrapper for jython encodeing of Strings public static String lineWrap(String strIn,int cols){ StringBuilder sb = new StringBuilder(PAGESIZE); char[] strArray = strIn.toCharArray(); int chrsLeftToWrite = strArray.length; int offset = 0; while(chrsLeftToWrite > 0){ int nChrs = (chrsLeftToWrite<cols)?chrsLeftToWrite:cols; sb.append(strArray, offset, nChrs); offset += nChrs; chrsLeftToWrite -= nChrs; if(chrsLeftToWrite>0){ sb.append('\n'); } } return sb.toString(); } }