/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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 this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.services.jcr.usecases.query; import org.exoplatform.services.jcr.JcrAPIBaseTest; import java.util.ArrayList; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.PropertyType; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; /** * Created by The eXo Platform SAS Author : Alex Reshetnyak * alex.reshetnyak@exoplatform.org.ua reshetnyak.alex@gmail.com 20.07.2007 * 14:05:20 * * @version $Id: TestDateBetween.java 20.07.2007 14:05:20 rainfox */ public class TestDateBetween extends JcrAPIBaseTest { String date; public void setUp() throws Exception { super.setUp(); ArrayList<String> dateList = new ArrayList<String>(); dateList.add("2006-01-19T15:34:15.917+02:00"); dateList.add("2005-01-19T15:34:15.917+02:00"); dateList.add("2007-01-19T15:34:15.917+02:00"); Node rootNode = session.getRootNode(); for (int i = 0; i < dateList.size(); i++) { Node cool = rootNode.addNode("nnn" + i, "nt:file"); Node contentNode = cool.addNode("jcr:content", "nt:resource"); contentNode.setProperty("jcr:encoding", "UTF-8"); contentNode.setProperty("jcr:data", "data _________________________________"); contentNode.setProperty("jcr:mimeType", "text/plain"); contentNode.setProperty("jcr:lastModified", valueFactory.createValue(dateList.get(i), PropertyType.DATE)); } session.save(); date = rootNode.getNode("nnn1").getNode("jcr:content").getProperty("jcr:lastModified").getString(); } public void testDateXPath() throws Exception { String xParhQuery = "//element(*,nt:resource)[@jcr:lastModified >= xs:dateTime('2006-08-19T10:11:38.281+02:00')]"; QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(xParhQuery, Query.XPATH); QueryResult queryResult = query.execute(); NodeIterator iter = queryResult.getNodes(); assertEquals(1, iter.getSize()); } public void testDateSQL() throws Exception { StringBuffer sb = new StringBuffer(); sb.append("select * from nt:resource where "); sb.append("( jcr:lastModified >= TIMESTAMP '"); sb.append("2006-06-04T15:34:15.917+02:00"); sb.append("' )"); sb.append(" and "); sb.append("( jcr:lastModified <= TIMESTAMP '"); sb.append("2008-06-04T15:34:15.917+02:00"); sb.append("' )"); String sqlQuery = sb.toString(); QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(sqlQuery, Query.SQL); QueryResult queryResult = query.execute(); NodeIterator iter = queryResult.getNodes(); assertEquals(1, iter.getSize()); } public void testDateBETWEEN_SQL() throws Exception { StringBuffer sb = new StringBuffer(); sb.append("select * from nt:resource where jcr:lastModified between "); sb.append(" TIMESTAMP '"); sb.append("2006-06-04T15:34:15.917+02:00"); sb.append("'"); sb.append(" and "); sb.append("TIMESTAMP '"); sb.append("2008-06-04T15:34:15.917+02:00"); sb.append("'"); String sqlQuery = sb.toString(); QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(sqlQuery, Query.SQL); QueryResult queryResult = query.execute(); NodeIterator iter = queryResult.getNodes(); assertEquals(1, iter.getSize()); } public void testDate_equals() throws Exception { StringBuffer sb = new StringBuffer(); sb.append("select * from nt:resource where jcr:lastModified = "); sb.append("TIMESTAMP '"); // sb.append("2005-01-19T15:34:15.917+02:00"); sb.append(date); sb.append("'"); String sqlQuery = sb.toString(); QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(sqlQuery, Query.SQL); QueryResult queryResult = query.execute(); NodeIterator iter = queryResult.getNodes(); assertEquals(1, iter.getSize()); } }