/** * Copyright (c) 2015 Pawel Nowak. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.recommenders.internal.news.rcp; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; public class MessageUtils { public enum MessageAge { TODAY(0), YESTERDAY(1), THIS_WEEK(2), LAST_WEEK(3), THIS_MONTH(4), LAST_MONTH(5), THIS_YEAR(6), OLDER(7), UNDETERMINED(8); private final int index; MessageAge(int index) { this.index = index; } public int getIndex() { return index; } } public static Date getPeriodStartDate(MessageAge messageAge, Date today, Locale locale) { Calendar calendar = GregorianCalendar.getInstance(locale); calendar.setTime(today); if (messageAge == MessageAge.TODAY) { return calendar.getTime(); } else if (messageAge == MessageAge.YESTERDAY) { calendar.add(Calendar.DATE, -1); } else if (messageAge == MessageAge.THIS_WEEK) { int firstDayOfWeek = calendar.getFirstDayOfWeek(); calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek); } else if (messageAge == MessageAge.LAST_WEEK) { int firstDayOfWeek = calendar.getFirstDayOfWeek(); calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek); } else if (messageAge == MessageAge.THIS_MONTH) { calendar.set(Calendar.DAY_OF_MONTH, 1); } else if (messageAge == MessageAge.LAST_MONTH) { calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.DAY_OF_MONTH, 1); } else if (messageAge == MessageAge.THIS_YEAR) { calendar.set(Calendar.MONTH, 0); calendar.set(Calendar.DAY_OF_MONTH, 1); } else if (messageAge == MessageAge.OLDER) { calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1); calendar.set(Calendar.MONTH, 0); calendar.set(Calendar.DAY_OF_MONTH, 1); } return calendar.getTime(); } }