/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2006-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library 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 * Lesser General Public License for more details. * */ package org.geotools.data.sql.view; import java.io.IOException; import java.util.List; import junit.framework.TestCase; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement.select.Join; import net.sf.jsqlparser.statement.select.PlainSelect; import org.geotools.data.sql.SqlParser; public class SqlParserTest extends TestCase { protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testIllegalSelect(){ String wrongStatement = "SELECT table SET val1 = 1"; try{ SqlParser.parse(wrongStatement); fail("No select statement should have been thrown an exception"); }catch(IOException e){ //ok } } public void testNoSelect(){ String unsupportedStatement = "UPDATE table SET val1 = 1"; try{ SqlParser.parse(unsupportedStatement); fail("No select statement should have been thrown an exception"); }catch(IOException e){ //ok } } public void testSimpleSelect()throws IOException{ String statement = "SELECT * FROM table1 INNER JOIN table2 on table1.id = table2.parent"; PlainSelect select = (PlainSelect)SqlParser.parse(statement); assertNotNull(select); //I'll put this null checking only here as to demostrate //the elements of a PlainSelect assertNull(select.getDistinct()); assertNull(select.getGroupByColumnReferences()); assertNull(select.getHaving()); assertNull(select.getInto()); assertNull(select.getLimit()); assertNull(select.getOrderByElements()); assertNull(select.getTop()); assertNull(select.getWhere()); assertNotNull(select.getFromItems()); assertNotNull(select.getSelectItems()); List fromItems = select.getFromItems(); assertEquals(1, fromItems.size()); assertTrue(fromItems.get(0) instanceof Table); assertNotNull(select.getJoins()); Join join = (Join)select.getJoins().get(0); assertFalse(join.isOuter()); assertNull(join.getRightItem().getAlias()); Expression joinExpr = join.getOnExpression(); assertTrue(joinExpr instanceof EqualsTo); } }