package be.mentoringsystems.merke.helper; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.annotation.Nullable; import org.apache.commons.lang3.math.NumberUtils; /** * * @author anthonyarents */ public final class ConversionHelper { private static final DateTimeFormatter LOCALDATEFORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter LOCALDATETIMEFORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private ConversionHelper() { } @SuppressWarnings("unchecked") public static List toObjectList(final Object obj) { List result = new ArrayList(); if (obj == null) { return result; } if (obj instanceof List) { return (List) obj; } // assume it's always a list of string, this is done by spring automatically ... result.add(obj); return result; } @SuppressWarnings("unchecked") public static List toStringList(final Object obj) { List result = new ArrayList(); if (obj == null) { return result; } if (obj instanceof List) { return (List) obj; } // assume it's always a list of string, this is done by spring automatically ... if (obj instanceof String) { result.add((String) obj); } return result; } @SuppressWarnings("unchecked") public static List toIntegerList(final Object obj) { List result = new ArrayList(); if (obj == null) { return result; } if (obj instanceof List) { return (List) obj; } // assume it's always a list of integer, this is done by spring automatically ... if (obj instanceof Integer) { result.add((Integer) obj); } return result; } public static List toUUIDList(final Object obj) { List result = new ArrayList(); if (obj == null) { return result; } List start = toObjectList(obj); for (Object o : start) { UUID u = toUUID(o); if (u != null) { result.add(u); } } return result; } public static UUID toUUID(final Object obj) { if (obj == null) { return null; } if (obj instanceof UUID) { return (UUID) obj; } return UUID.fromString(toString(obj)); } public static String toString(final Object obj) { if (obj == null) { return null; } if (obj instanceof String) { return (String) obj; } return obj.toString(); } public static LocalDate toLocalDate(final Object obj) { if (obj == null) { return null; } if (obj instanceof LocalDate) { return (LocalDate) obj; } String dateString = toString(obj); if (dateString == null) { return null; } else { return (LocalDate) LOCALDATEFORMATTER.parse(dateString); } } public static LocalDateTime toLocalDateTime(final Object obj) { if (obj == null) { return null; } if (obj instanceof LocalDateTime) { return (LocalDateTime) obj; } String dateString = toString(obj); if (dateString == null) { return null; } else { return (LocalDateTime) LOCALDATETIMEFORMATTER.parse(dateString); } } public static Integer toInteger(final Object obj) { if (obj == null) { return null; } if (obj instanceof Integer) { return (Integer) obj; } return NumberUtils.toInt(toString(obj)); } @Nullable public static Boolean toBoolean(final Object obj) { if (obj == null) { return null; } if (obj instanceof Boolean) { return (Boolean) obj; } String objString = toString(obj); if ("1".equals(objString) || "true".equals(objString)) { return Boolean.TRUE; } return Boolean.FALSE; } }