package org.openstack.atlas.api.helpers; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public final class CalendarHelper { public static Calendar generateCalendar(String dateAsString) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); return generateCalendar(dateAsString, sdf); } public static Calendar generateCalendar(String dateAsString, SimpleDateFormat simpleDateFormat) throws ParseException { Date date = simpleDateFormat.parse(dateAsString); Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal; } public static Calendar zeroOutTime(Calendar cal) { Calendar newCal = Calendar.getInstance(); newCal.setTime(cal.getTime()); newCal.set(Calendar.HOUR_OF_DAY, 0); newCal.set(Calendar.MINUTE, 0); newCal.set(Calendar.SECOND, 0); newCal.set(Calendar.MILLISECOND, 0); return newCal; } public static Calendar maxOutTime(Calendar cal) { Calendar newCal = Calendar.getInstance(); newCal.setTime(cal.getTime()); newCal.set(Calendar.HOUR_OF_DAY, 23); newCal.set(Calendar.MINUTE, 59); newCal.set(Calendar.SECOND, 59); newCal.set(Calendar.MILLISECOND, 999); return newCal; } public static Calendar getProperUsageStartDate(String startDateParam, Calendar today) throws ParseException { Calendar startDate; if (startDateParam == null || startDateParam.isEmpty()) { startDate = new GregorianCalendar(); startDate.setTime(today.getTime()); startDate.add(Calendar.DATE, -90); } else { startDate = CalendarHelper.generateCalendar(startDateParam); } // startDate = CalendarHelper.zeroOutTime(startDate); return startDate; } public static Calendar getProperUsageEndDate(String endDateParam, Calendar today) throws ParseException { Calendar endDate; if (endDateParam == null || endDateParam.isEmpty()) { endDate = new GregorianCalendar(); endDate.setTime(today.getTime()); } else { endDate = CalendarHelper.generateCalendar(endDateParam); } // endDate = CalendarHelper.maxOutTime(endDate); return endDate; } }