/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2010-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.reporting.core.svclayer.support;
import java.util.ArrayList;
import java.util.Calendar;
import org.opennms.api.reporting.parameter.ReportDateParm;
import org.opennms.api.reporting.parameter.ReportIntParm;
import org.opennms.api.reporting.parameter.ReportParameters;
import org.opennms.api.reporting.parameter.ReportStringParm;
import org.opennms.netmgt.config.reporting.DateParm;
import org.opennms.netmgt.config.reporting.IntParm;
import org.opennms.netmgt.config.reporting.StringParm;
import org.opennms.netmgt.config.reporting.Parameters;
import org.opennms.reporting.core.svclayer.ParameterConversionService;
/**
* <p>DefaultParameterConversionService class.</p>
*/
public class DefaultParameterConversionService implements
ParameterConversionService {
/** {@inheritDoc} */
public ReportParameters convert(Parameters configParameters) {
ReportParameters reportParameters = new ReportParameters();
// add date parms to criteria
ArrayList<ReportDateParm> dateParms = new ArrayList<ReportDateParm>();
DateParm[] dates = configParameters.getDateParm();
if (dates.length > 0) {
for (int i = 0 ; i < dates.length ; i++ ) {
ReportDateParm dateParm = new ReportDateParm();
dateParm.setUseAbsoluteDate(dates[i].getUseAbsoluteDate());
dateParm.setDisplayName(dates[i].getDisplayName());
dateParm.setName(dates[i].getName());
dateParm.setCount(new Integer((int) dates[i].getDefaultCount()));
dateParm.setInterval(dates[i].getDefaultInterval());
Calendar cal = Calendar.getInstance();
if (dates[i].getDefaultTime() != null) {
dateParm.setHours(dates[i].getDefaultTime().getHours());
cal.set(Calendar.HOUR_OF_DAY, dateParm.getHours());
dateParm.setMinutes(dates[i].getDefaultTime().getMinutes());
cal.set(Calendar.MINUTE, dateParm.getMinutes());
} else {
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
}
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND,0);
int amount = 0 - dates[i].getDefaultCount();
if (dates[i].getDefaultInterval().equals("year")) {
cal.add(Calendar.YEAR, amount);
} else {
if (dates[i].getDefaultInterval().equals("month")) {
cal.add(Calendar.MONTH, amount);
} else {
cal.add(Calendar.DATE, amount);
}
}
dateParm.setDate(cal.getTime());
dateParms.add(dateParm);
}
}
reportParameters.setDateParms(dateParms);
// add string parms to criteria
ArrayList<ReportStringParm> stringParms = new ArrayList<ReportStringParm>();
StringParm[] strings = configParameters.getStringParm();
if (strings.length > 0) {
for (int i = 0 ; i < strings.length ; i++ ) {
ReportStringParm stringParm = new ReportStringParm();
stringParm.setDisplayName(strings[i].getDisplayName());
stringParm.setName(strings[i].getName());
stringParm.setInputType(strings[i].getInputType());
stringParm.setValue(strings[i].getDefault());
stringParms.add(stringParm);
}
}
reportParameters.setStringParms(stringParms);
// add int parms to criteria
ArrayList<ReportIntParm> intParms = new ArrayList<ReportIntParm>();
IntParm[] integers = configParameters.getIntParm();
if (integers.length > 0) {
for (int i = 0 ; i < integers.length ; i++ ) {
ReportIntParm intParm = new ReportIntParm();
intParm.setDisplayName(integers[i].getDisplayName());
intParm.setName(integers[i].getName());
intParm.setInputType(integers[i].getInputType());
intParm.setValue(integers[i].getDefault());
intParms.add(intParm);
}
}
reportParameters.setIntParms(intParms);
return reportParameters;
}
}