package com.anjlab.tapestry5; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.services.Request; public class Utils { public static String getFriendlyDate(Request request, Messages messages, Date date) { if (date == null) { return messages.get("date-not-set"); } return DateFormat .getDateInstance(DateFormat.MEDIUM, request.getLocale()) .format(date); } public static String getFriendlyTime(Messages messages, Date value) { if (value == null) { return messages.get("time-not-set"); } Calendar calendar = Calendar.getInstance(); calendar.setTime(value); int hours = calendar.get(Calendar.HOUR_OF_DAY); int minutes = calendar.get(Calendar.MINUTE); return hours + ":" + leadingZeros(String.valueOf(minutes), 2); } public static String leadingZeros(String s, int minLength) { int diff = s.length() - minLength; return diff < 0 ? repeatChar('0', Math.abs(diff)) + s : s ; } public static String repeatChar(char c, int times) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < times; i++) { builder.append(c); } return builder.toString(); } public static String getDayContext(Date day) { if (day == null) { return null; } DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); return df.format(day); } public static Date parseFromDayContext(String dayContext) { if (dayContext == null) { return null; } String[] dateFragments = dayContext.split("-"); if (dateFragments.length != 3) { return null; } Calendar calendar = Calendar.getInstance(); calendar.set( Integer.parseInt(dateFragments[2]), // Месяцы нумеруются с нуля Integer.parseInt(dateFragments[1]) - 1, Integer.parseInt(dateFragments[0])); Date date = calendar.getTime(); return date; } /** * * @param args * @param key * @param keyValueSeparator Регулярное выражение, описывающее разделитель * @param defaultValue * @return */ public static String getValue(Object[] args, String key, String keyValueSeparator, String defaultValue) { for (Object arg : args) { if (arg == null) { continue; } String[] keyValuePair = arg.toString().split(keyValueSeparator); if (keyValuePair == null || keyValuePair.length != 2) { continue; } if (keyValuePair[0].equals(key)) { return (keyValuePair[1] == null || keyValuePair[1].length() == 0) ? null : keyValuePair[1]; } } return defaultValue; } public static String getFriendlyDateLong(Date day) { DateFormat df = new SimpleDateFormat("EEEE, dd MMMM yyyy"); String date = df.format(day); date = capitalizeFirstLetter(date); return date; } public static String capitalizeFirstLetter(String date) { if (isNullOrEmpty(date)) { return null; } char firstLetter = Character.toUpperCase(date.charAt(0)); date = firstLetter + date.substring(1); return date; } public static boolean isNullOrEmpty(String s) { return s == null || s.length() == 0; } }