/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.netmgt.jasper.helper;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* JasperReports scriptlet to retrieve start and end dates from predefined
* ranges.
*
* @author ronny
*/
public class TimeRange {
/**
* Implement last year, last month, this year, this month
*/
private enum TIME_RANGE {
LAST_SEVEN_DAYS {
@Override
public Date getStartDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), new GregorianCalendar().get(Calendar.MONTH), new GregorianCalendar().get(Calendar.DATE) - 7).getTimeInMillis());
}
}, LAST_MONTH {
@Override
public Date getStartDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), new GregorianCalendar().get(Calendar.MONTH) -1, 1).getTimeInMillis());
}
@Override
public Date getEndDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), new GregorianCalendar().get(Calendar.MONTH), 0, 23, 59, 59).getTimeInMillis());
}
}, LAST_YEAR {
@Override
public Date getStartDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR) - 1, 0, 1).getTimeInMillis());
}
@Override
public Date getEndDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR) - 1, 12, 0, 23, 59, 59).getTimeInMillis());
}
},THIS_MONTH {
@Override
public Date getStartDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), new GregorianCalendar().get(Calendar.MONTH), 1).getTimeInMillis());
}
}, THIS_YEAR {
@Override
public Date getStartDate() {
return new Date(new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), 0, 1).getTimeInMillis());
}
};
abstract public Date getStartDate();
public Date getEndDate() {
return new Date( new GregorianCalendar(new GregorianCalendar().get(Calendar.YEAR), new GregorianCalendar().get(Calendar.MONTH), new GregorianCalendar().get(Calendar.DATE) ).getTimeInMillis() );
};
}
/**
* Constructor init now
*/
public TimeRange() {}
/**
* <p>
* getStartDate
* </p>
*
* @param range
* a {@link java.lang.String} object
* @return a {@link java.sql.Timestamp} object
*/
public Date getStartDate(String range) {
Date date = null;
if (TIME_RANGE.LAST_YEAR.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_YEAR.getStartDate();
} else if (TIME_RANGE.LAST_MONTH.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_MONTH.getStartDate();
} else if (TIME_RANGE.THIS_YEAR.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.THIS_YEAR.getStartDate();
} else if (TIME_RANGE.THIS_MONTH.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.THIS_MONTH.getStartDate();
} else if (TIME_RANGE.LAST_SEVEN_DAYS.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_SEVEN_DAYS.getStartDate();
}
return date;
}
/**
* <p>
* getEndDate
* </p>
*
* @param range
* a {@link java.lang.String} object
* @return a {@link java.sql.Timestamp} object
*/
public Date getEndDate(String range) {
Date date = null;
if (TIME_RANGE.LAST_YEAR.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_YEAR.getEndDate();
} else if (TIME_RANGE.LAST_MONTH.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_MONTH.getEndDate();
} else if (TIME_RANGE.THIS_YEAR.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.THIS_YEAR.getEndDate();
} else if (TIME_RANGE.THIS_MONTH.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.THIS_MONTH.getEndDate();
} else if (TIME_RANGE.LAST_SEVEN_DAYS.name().equalsIgnoreCase(range)) {
date = TIME_RANGE.LAST_SEVEN_DAYS.getEndDate();
}
return date;
}
}