1 /*
2  * JasperReports - Free Java Reporting Library.
3  * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4  * http://www.jaspersoft.com
5  *
6  * Unless you have purchased a commercial license agreement from Jaspersoft,
7  * the following license terms apply:
8  *
9  * This program is part of JasperReports.
10  *
11  * JasperReports is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * JasperReports is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23  */

24 package net.sf.jasperreports.types.date;
25
26 import java.util.Date;
27
28 import net.sf.jasperreports.engine.query.JRQueryClauseContext;
29
30 /**
31  * @author Lucian Chirita (lucianc@users.sourceforge.net)
32  */

33 public class DateRangeSQLEqualClause extends DateRangeBaseSQLEqualityClause
34 {
35
36     private static final DateRangeSQLEqualClause INSTANCE = new DateRangeSQLEqualClause();
37     
38     public static DateRangeSQLEqualClause instance()
39     {
40         return INSTANCE;
41     }
42     
43     protected DateRangeSQLEqualClause()
44     {
45     }
46
47     @Override
48     protected void applyDateRange(JRQueryClauseContext queryContext,
49             String column, DateRange dateRange)
50     {
51         StringBuffer queryBuffer = queryContext.queryBuffer();
52         if (dateRange == null || dateRange.getStart() == null || dateRange.getEnd() == null)
53         {
54             queryBuffer.append(column).append(" IS NULL");
55         }
56         else
57         {
58             Date start = dateRange.getStart();
59             Date end = dateRange.getEnd();
60             if (start.equals(end))
61             {
62                 queryBuffer.append(column).append(" = ?");
63                 queryContext.addQueryParameter(null, start);
64             }
65             else
66             {
67                 queryBuffer.append(column).append(" >= ? AND ").append(column).append(" <= ?");
68                 queryContext.addQueryParameter(null, start);
69                 queryContext.addQueryParameter(null, end);
70             }
71         }
72     }
73
74 }
75