package au.com.vaadinutils.jasper.parameter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.joda.time.DateTime;
import com.vaadin.data.Property.ReadOnlyException;
import com.vaadin.data.util.converter.Converter.ConversionException;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.ui.Component;
import com.vaadin.ui.VerticalLayout;
public class ReportParameterDateTimeOneDay extends ReportParameterDateTimeRange
{
Logger logger = LogManager.getLogger();
public ReportParameterDateTimeOneDay(String caption, String startParameterName, String endParameterName)
{
super(caption, startParameterName, endParameterName);
}
public ReportParameterDateTimeOneDay(String caption, String startParameterName, String endParameterName,
Resolution resolution, String displayFormat, String parameterFormat)
{
super(caption, startParameterName, endParameterName, resolution, displayFormat, parameterFormat);
}
public Date getDate(String parameterName)
{
Date value;
if (parameterName.equalsIgnoreCase(startParameterName))
{
value = startfield.getValue();
}
else
{
value = new DateTime(startfield.getValue()).plusDays(1).toDate();
}
return value;
}
@Override
public Component getComponent()
{
VerticalLayout layout = new VerticalLayout();
layout.addComponent(startfield);
return layout;
}
@Override
public void setValueAsString(String value, String parameterName) throws ReadOnlyException, ConversionException,
ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat(parameterFormat);
if (parameterName.equalsIgnoreCase(startParameterName))
{
startfield.setValue(sdf.parse(value));
}
logger.warn("Trying to set end date for a one day date range, ignoring");
}
public Date getEndDate()
{
return getDate(endParameterName);
}
public void setEndDate(Date date)
{
}
}