package io.trygvis.esper.testing; import fj.*; import fj.data.*; import static fj.data.Option.*; import io.trygvis.esper.testing.util.sql.*; import org.jdom2.*; import org.joda.time.*; import java.net.*; import java.sql.*; import java.sql.Array; import java.util.*; import java.util.List; public class Util { public static final F timestampToDate = new F() { public java.util.Date f(Timestamp timestamp) { return new java.util.Date(timestamp.getTime()); } }; public static final F timestampToLocalDateTime = new F() { public LocalDateTime f(Timestamp timestamp) { return new LocalDateTime(timestamp.getTime()); } }; public static final F dateToTimestamp = new F() { public Timestamp f(java.util.Date date) { return new Timestamp(date.getTime()); } }; public static F> parseInt = new F>() { public Option f(String s) { try { return some(Integer.parseInt(s)); } catch (NumberFormatException e) { return none(); } } }; public static F> parseLong = new F>() { public Option f(String s) { try { return some(Long.parseLong(s)); } catch (NumberFormatException e) { return none(); } } }; public static F> parseUri = new F>() { public Option f(String s) { try { return some(URI.create(s)); } catch (Throwable e) { return none(); } } }; public static F> parseBoolean = new F>() { public Option f(String s) { try { return some(Boolean.parseBoolean(s)); } catch (Throwable e) { return none(); } } }; // ----------------------------------------------------------------------- // SQL // ----------------------------------------------------------------------- public static String orderBy(Iterable inputs, String... allowed) { StringBuilder buffer = new StringBuilder(); for (String input : inputs) { boolean desc = false; if (input.endsWith("-")) { desc = true; input = input.substring(0, input.length() - 1); } for (String s : allowed) { if (s.equals(input)) { if (buffer.length() == 0) { buffer.append(" ORDER BY "); } else { buffer.append(", "); } buffer.append(s); if (desc) { buffer.append(" DESC"); } } } } return buffer.toString(); } public static UUID[] toUuidArray(ResultSet rs, int index) throws SQLException { Array array = rs.getArray(index); if(array == null) { return new UUID[0]; } String[] strings = (String[]) array.getArray(); UUID[] uuids = new UUID[strings.length]; for (int i = 0; i < strings.length; i++) { uuids[i] = UUID.fromString(strings[i]); } return uuids; } public static List toList(PreparedStatement s, SqlF f) throws SQLException { List list = new ArrayList<>(); ResultSet rs = s.executeQuery(); while(rs.next()) { list.add(f.apply(rs)); } return list; } // ----------------------------------------------------------------------- // XML // ----------------------------------------------------------------------- public static Option childText(Element e, String childName) { return fromNull(e.getChildText(childName)); } public static Option child(Element e, String childName) { return fromNull(e.getChild(childName)); } }