package com.rafali.flickruploader; import java.io.PrintWriter; import java.io.StringWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.common.base.Joiner; public class ToolString { public static final String REGEX_EMAIL_INSIDE = "[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]"; public static final String REGEX_EMAIL = "^" + REGEX_EMAIL_INSIDE + "$"; // public static final String REGEX_PWD = "^[a-zA-Z0-9]([a-zA-Z0-9@#$%^&+=]{5,20})"; public static final String REGEX_PWD = "^\\S{6,}"; public static final String REGEX_URL = "(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)*\\/?"; public static boolean isNotBlank(CharSequence str) { return !isBlank(str); } public static String replaceAccents(String source) { String chaine = source.replaceAll("è|é|ê|ë", "e"); chaine = chaine.replaceAll("û|ü|ù", "u"); chaine = chaine.replaceAll("î|ï", "i"); chaine = chaine.replaceAll("à|ä|â", "a"); chaine = chaine.replaceAll("ô|ö", "o"); chaine = chaine.replaceAll("ç", "c"); return chaine; } public static boolean isBlank(CharSequence str) { if (str == null) return true; return str.length() == 0; } public static String nullToEmpty(String str) { if (str == null) return ""; return str; } public static String trim(String str) { if (str == null) return null; return str.trim(); } public static String[] parseFullAppId(String fullAppId) { String tmp = fullAppId.substring(fullAppId.indexOf("-") + 1); String app = tmp.substring(0, tmp.indexOf("-")); String appId = tmp.substring(tmp.indexOf("-") + 1); return new String[] { app, appId }; } public static String toUrl(Object... objects) { // Log.debug("objects:"+Arrays.toString(objects)); return "/" + Joiner.on("/").skipNulls().join(objects); } public static String toUrl(List<?> objects) { return "/" + Joiner.on("/").skipNulls().join(objects); } public static String sanitizeFileName(String filename) { return filename.replaceAll("[^\\w]", "_"); } public static String substringTo(String str, char character) { if (str != null) { int indexOf = str.indexOf(character); return str.substring(0, Math.max(0, indexOf < 0 ? str.length() : indexOf)); } else return null; } public static String[] parseUrlPath(String path) { if (isBlank(path)) return new String[0]; int length = path.length(); if (length <= 1) { return new String[0]; } else { return path.substring(1).split("/"); } } public static String toSimpleName(Class<?> javaClass) { String name = javaClass.getName(); return name.substring(name.lastIndexOf(".") + 1, name.length()); } public static String emailToUsername(String email) { if (isNotBlank(email) && email.matches(REGEX_EMAIL)) { return email.substring(0, email.indexOf("@")).replaceAll("[^A-Za-z0-9]", " "); } return email; } public static boolean isValidEmail(String email) { if (email != null) { return email.matches(REGEX_EMAIL); } return false; } public static String toUrl(String url, Map<String, String> params) { if (params != null && !params.isEmpty()) return url + (url.contains("?") ? "&" : "?") + Joiner.on("&").withKeyValueSeparator("=").join(params); else return url; } public static String formatDuration(long duration) { StringBuffer strb = new StringBuffer("+"); long diffInSeconds = duration / 1000L; long sec, min, hours, days = 0; sec = (diffInSeconds >= 60 ? diffInSeconds % 60 : diffInSeconds); min = (diffInSeconds = (diffInSeconds / 60)) >= 60 ? diffInSeconds % 60 : diffInSeconds; hours = (diffInSeconds = (diffInSeconds / 60)) >= 24 ? diffInSeconds % 24 : diffInSeconds; days = (diffInSeconds = (diffInSeconds / 24)); if (days > 0) { strb.append(days + "d"); if (hours > 0) { strb.append(" " + hours + "h"); } } else if (hours > 0) { strb.append(hours + "h"); if (min > 0) { strb.append(" " + min + "m"); } } else if (min > 0) { strb.append(min + "m"); if (sec > 0) { strb.append(" " + sec + "s"); } } else { strb.append(sec + "s"); } return strb.toString(); } public static Map<String, String> getQueryMap(String query) { String[] params = query.split("&"); Map<String, String> map = new HashMap<String, String>(); for (String param : params) { if (param.contains("=")) { String[] split = param.split("="); map.put(split[0], split[1]); } } return map; } final protected static char[] hexArray = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; int v; for (int j = 0; j < bytes.length; j++) { v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } public static String cleanPhoneNumber(String phoneNumber) { if (phoneNumber != null) { String cleanPhoneNumber = phoneNumber.replaceAll("[^0-9.]", ""); if (cleanPhoneNumber.length() == 10) { return cleanPhoneNumber; } else if (cleanPhoneNumber.length() == 11 && cleanPhoneNumber.startsWith("1")) { return cleanPhoneNumber.substring(1); } } return null; } public static String stack2string(Throwable e) { try { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); return "------\r\n" + sw.toString() + "------\r\n"; } catch (Exception e2) { return "bad stack2string"; } } }