package uk.ac.ic.wlgitbridge.util; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; /** * Created by Winston on 19/11/14. */ public class Util { private static String SERVICE_NAME; private static String HOSTNAME; private static int PORT; private static String POSTBACK_URL; private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); public static String entries(int entries) { if (entries == 1) { return "entry"; } else { return "entries"; } } public static int booleanToInt(boolean b) { if (b) { return 1; } else { return 0; } } public static boolean intToBoolean(int i) { return i != 0; } private static String removeAllSuffix(String str, String suffix) { int lastIndexOfSuffix; String result = str; while ((lastIndexOfSuffix = result.lastIndexOf(suffix)) > -1) { result = result.substring(0, lastIndexOfSuffix); } return result; } /* removeAllSuffixes("something.git///", "/", ".git") => "something" */ public static String removeAllSuffixes(String str, String... suffixes) { String result = str; for (String suffix : suffixes) { result = removeAllSuffix(result, suffix); } return result; } public static String getContentsOfReader(BufferedReader reader) throws IOException { StringBuilder sb = new StringBuilder(); for (String line; (line = reader.readLine()) != null; ) { sb.append(line); } return sb.toString(); } public static void setServiceName(String serviceName) { SERVICE_NAME = serviceName; } public static String getServiceName() { return SERVICE_NAME; } public static int getPort() { return PORT; } public static void setPort(int port) { PORT = port; } public static void setPostbackURL(String postbackURL) { POSTBACK_URL = postbackURL; } public static String getPostbackURL() { return POSTBACK_URL; } public static void deleteDirectory(File directory) { if (directory != null) { deleteInDirectory(directory); directory.delete(); } } public static void deleteInDirectory(File directory) { if (directory != null) { deleteInDirectoryApartFrom(directory); } } public static void deleteInDirectoryApartFrom(File directory, String... apartFrom) { if (directory != null) { Set<String> excluded = new HashSet<String>(Arrays.asList(apartFrom)); File [] files = directory.listFiles(); if (files != null) { for (File file : files) { if (!excluded.contains(file.getName())) { if (file.isDirectory()) { deleteInDirectory(file); } file.delete(); Log.info("Deleted file: {}", file.getAbsolutePath()); } } } } } public static List<String> linesFromStream(InputStream stream, int skip, String trimSuffix) throws IOException { List<String> lines = new ArrayList<String>(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); String line; for (int i = 0; i < skip; i++) { reader.readLine(); } while ((line = reader.readLine()) != null) { String trim = line.trim(); trim = trim.replaceAll("\\p{C}", ""); int endIndex = trim.lastIndexOf(trimSuffix); if (endIndex >= 0) { trim = trim.substring(0, endIndex); } lines.add(trim); } return lines; } public static String fromStream(InputStream stream, int skip) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); StringBuilder out = new StringBuilder(); String newLine = System.getProperty("line.separator"); String line; for (int i = 0; i < skip; i++) { reader.readLine(); } while ((line = reader.readLine()) != null) { out.append(line); out.append(newLine); } return out.toString(); } public static String fromStream(InputStream stream) throws IOException { return fromStream(stream, 0); } public static String getCodeFromResponse(JsonObject json) { String code = "error"; JsonElement codeElement = json.get("code"); if (codeElement == null) { String error = "Unexpected error"; Log.warn("Unexpected response from API:"); Log.warn(json.toString()); Log.warn("End of response"); JsonElement statusElement = json.get("status"); if (statusElement != null) { String status = statusElement.getAsString(); if (status.equals("422")) { error = "Unprocessable entity"; } else if (status.equals("404")) { error = "Not found"; } else if (status.equals("403")) { error = "Forbidden"; } } throw new RuntimeException(error); } else { code = codeElement.getAsString(); } return code; } }