1
24 package net.sf.jasperreports.types.date;
25
26 import net.sf.jasperreports.engine.JRRuntimeException;
27 import net.sf.jasperreports.engine.query.ClauseFunctionParameterHandler;
28 import net.sf.jasperreports.engine.query.JRJdbcQueryExecuter;
29 import net.sf.jasperreports.engine.query.JRQueryClauseContext;
30 import net.sf.jasperreports.engine.query.SQLLessOrGreaterBaseClause;
31
32
33
36 public class DateRangeSQLLessOrGreaterClause extends SQLLessOrGreaterBaseClause
37 {
38 public static final String EXCEPTION_MESSAGE_KEY_UNEXPECTED_PARAMETER_TYPE = "date.range.unexpected.parameter.type";
39 public static final String EXCEPTION_MESSAGE_KEY_UNKNOWN_CLAUSE_ID = "date.range.unknown.clause.id";
40
41 protected static final DateRangeSQLLessOrGreaterClause singleton = new DateRangeSQLLessOrGreaterClause();
42
43
48 public static DateRangeSQLLessOrGreaterClause instance()
49 {
50 return singleton;
51 }
52
53 @Override
54 protected ClauseFunctionParameterHandler createParameterHandler(JRQueryClauseContext queryContext,
55 String clauseId, String parameterName)
56 {
57 Object paramValue = queryContext.getValueParameter(parameterName).getValue();
58 if (paramValue != null && !(paramValue instanceof DateRange))
59 {
60 throw
61 new JRRuntimeException(
62 EXCEPTION_MESSAGE_KEY_UNEXPECTED_PARAMETER_TYPE,
63 new Object[]{parameterName, clauseId});
64 }
65
66 boolean useRangeStart;
67 if (JRJdbcQueryExecuter.CLAUSE_ID_LESS.equals(clauseId)
68 || JRJdbcQueryExecuter.CLAUSE_ID_GREATER_OR_EQUAL.equals(clauseId))
69 {
70 useRangeStart = true;
71 }
72 else if (JRJdbcQueryExecuter.CLAUSE_ID_GREATER.equals(clauseId)
73 || JRJdbcQueryExecuter.CLAUSE_ID_LESS_OR_EQUAL.equals(clauseId))
74 {
75 useRangeStart = false;
76 }
77 else
78 {
79 throw
80 new JRRuntimeException(
81 EXCEPTION_MESSAGE_KEY_UNKNOWN_CLAUSE_ID,
82 new Object[]{clauseId});
83 }
84
85 return new DateRangeParameterHandler(queryContext, parameterName,
86 (DateRange) paramValue, useRangeStart);
87 }
88 }
89