/* * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package com.xpn.xwiki.criteria.impl; /** * Helper factory class for creating Duration objects in velocity. */ public class DurationFactory { /** * A duration of exactly one day. */ public static final Duration DAY = createDuration(0, 0, 0, 1); /** * A duration of exactly one week. */ public static final Duration WEEK = createDuration(0, 0, 1, 0); /** * A duration of exactly one month */ public static final Duration MONTH = createDuration(0, 1, 0, 0); /** * A duration of exactly one year. */ public static final Duration YEAR = createDuration(1, 0, 0, 0); public DurationFactory() { } /** * @see Duration#Duration(int, int, int, int) */ public static Duration createDuration(int years, int months, int weeks, int days) { return new Duration(years, months, weeks, days); } /** * Creates a new Duration instance having just the specified number of days. All the other fields are 0. * * @param days The number of days * @return A new Duration instance */ public static Duration createDays(int days) { return createDuration(0, 0, 0, days); } /** * Creates a new Duration instance having just the specified number of weeks. All the other fields are 0. * * @param weeks The number of weeks * @return A new Duration instance */ public static Duration createWeeks(int weeks) { return createDuration(0, 0, weeks, 0); } /** * Creates a new Duration instance having just the specified number of months. All the other fields are 0. * * @param months The number of months * @return A new Duration instance */ public static Duration createMonths(int months) { return createDuration(0, months, 0, 0); } /** * Creates a new Duration instance having just the specified number of years. All the other fields are 0. * * @param years The number of years * @return A new Duration instance */ public static Duration createYears(int years) { return createDuration(years, 0, 0, 0); } /** * Helper method for accessing {@link #DAY} static field in velocity. */ public static Duration getDAY() { return DAY; } /** * Helper method for accessing {@link #WEEK} static field in velocity. */ public static Duration getWEEK() { return WEEK; } /** * Helper method for accessing {@link #MONTH} static field in velocity. */ public static Duration getMONTH() { return MONTH; } /** * Helper method for accessing {@link #YEAR} static field in velocity. */ public static Duration getYEAR() { return YEAR; } }