/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org 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 version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ package ifc.sdb; import com.sun.star.sdb.XSingleSelectQueryComposer; import lib.MultiMethodTest; import com.sun.star.sdb.XSingleSelectQueryAnalyzer; import com.sun.star.uno.AnyConverter; import com.sun.star.uno.UnoRuntime; import lib.StatusException; import lib.Status; import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; import com.sun.star.sdb.SQLFilterOperator; /** * Testing com.sun.star.sdb.XSingleSelectQueryComposer * interface methods : *

* @see com.sun.star.sdb.XSingleSelectQueryComposer */ public class _XSingleSelectQueryComposer extends MultiMethodTest { // oObj filled by MultiMethodTest public XSingleSelectQueryComposer oObj = null ; private String queryString = "SELECT * FROM \"biblio\""; private XSingleSelectQueryAnalyzer xQueryAna = null; private XPropertySet xProp = null; private String colName = null; /** * Retcieves the object relations: *

* @see om.sun.star.sdb.XSingleSelectQueryAnalyzer * @see com.sun.star.beans.XPropertySet */ protected void before() /* throws Exception*/ { xQueryAna = (XSingleSelectQueryAnalyzer) UnoRuntime.queryInterface(XSingleSelectQueryAnalyzer.class, tEnv.getObjRelation("xQueryAna")); if (xQueryAna == null) { throw new StatusException(Status.failed( "Couldn't get object relation 'xQueryAna'. Test must be modified")); } xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, tEnv.getObjRelation("xProp")); if (xProp == null) { throw new StatusException(Status.failed( "Couldn't get object relation 'xProp'. Test must be modified")); } try { colName = AnyConverter.toString(tEnv.getObjRelation("colName")); } catch (com.sun.star.lang.IllegalArgumentException e) { colName = null; } if (colName == null) { throw new StatusException(Status.failed( "Couldn't get object relation 'colName'. Test must be modified")); } } /** * Object relation xQueryAna set a filter. This filter * must returned while calling getFilter */ public void _setFilter() { try{ String filter = "\"Identifier\" = 'BOR02b'"; oObj.setFilter(filter); tRes.tested("setFilter()", (xQueryAna.getFilter().equals(filter))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setFilter()", false); } } /** * Object relation xQueryAna set a complex filter with method . setFilter. Then getStructuredFilter returns a * sequenze of PropertyValue which was set with method * setStructuredFilter from xQueryAna. * Then test has ok status if getFilter returns the complex filter. */ public void _setStructuredFilter() { requiredMethod("setFilter()"); try{ xQueryAna.setQuery("SELECT \"Identifier\", \"Type\", \"Address\" FROM \"biblio\" \"biblio\""); String complexFilter = "( \"Identifier\" = '1' AND \"Type\" = '4' ) OR ( \"Identifier\" = '2' AND \"Type\" = '5' ) OR ( \"Identifier\" = '3' AND \"Type\" = '6' AND \"Address\" = '7' ) OR ( \"Address\" = '8' ) OR ( \"Type\" = '9' )"; oObj.setFilter(complexFilter); PropertyValue[][] aStructuredFilter = xQueryAna.getStructuredFilter(); oObj.setFilter(""); oObj.setStructuredFilter(aStructuredFilter); tRes.tested("setStructuredFilter()", (xQueryAna.getFilter().equals(complexFilter))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setStructuredFilter()", false); } catch (com.sun.star.lang.IllegalArgumentException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setStructuredFilter()", false); } } /** * At first the object relation xProp was set as parameter. * Relation xQueryAna was used to chek if realtion * colName was found. * Second an empty XPropertySet was used as parameter. A * com.sun.star.sdbc.SQLException must be thrown. */ public void _appendFilterByColumn() { boolean ok = true; try{ oObj.appendFilterByColumn(xProp, true,SQLFilterOperator.EQUAL); log.println("appendFilterByColumn: " + xQueryAna.getFilter()); ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("appendFilterByColumn()", false); } try{ oObj.appendFilterByColumn(xProp, false,SQLFilterOperator.EQUAL); log.println("appendFilterByColumn: " + xQueryAna.getFilter()); ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("appendFilterByColumn()", false); } try{ XPropertySet dummy = null; oObj.appendFilterByColumn(dummy, true,SQLFilterOperator.EQUAL); log.println("expected Exception was not thrown"); tRes.tested("appendFilterByColumn()", false); } catch (com.sun.star.sdbc.SQLException e){ log.println("expected Exception"); ok = ok && true; } tRes.tested("appendFilterByColumn()", ok); } /** * At first the object relation xProp was used as parameter. * Relation xQueryAna was used to chek if realtion * colName was found. * Second an empty XPropertySet was used as parameter. An * com.sun.star.sdbc.SQLException must be thrown. */ public void _appendGroupByColumn() { boolean ok = true; try{ oObj.appendGroupByColumn(xProp); log.println("appendGroupByColumn: " + xQueryAna.getFilter()); ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("appendGroupByColumn()", false); } try{ XPropertySet dummy = null; oObj.appendGroupByColumn(dummy); log.println("expected Exception was not thrown"); tRes.tested("appendGroupByColumn()", false); } catch (com.sun.star.sdbc.SQLException e){ log.println("expected Exception"); ok = ok && true; } tRes.tested("appendGroupByColumn()", ok); } /** * The group which was setted by setGroup must be returned * while calling from object relation XQueryAna * method getGroup */ public void _setGroup() { try{ String group = "\"Identifier\""; oObj.setGroup(group); tRes.tested("setGroup()", (xQueryAna.getGroup().equals(group))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setGroup()", false); } } /** * The cluase which was setted by setHavingClause must be returned * while calling from object relation XQueryAna * method getHavingClause */ public void _setHavingClause() { try{ String clause = "\"Identifier\" = 'BOR02b'"; oObj.setHavingClause(clause); tRes.tested("setHavingClause()", ( xQueryAna.getHavingClause().equals(clause))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setHavingClause()", false); } } /** * At first setHavingClause sets a complex clause. * Then method getStructuredHavingClause from object relation * xQueryAna returns a valid PropertyValue[][] * Method setHavingClause was called with an empty sting to * reset filter. Now setStructuredHavingClause with the valid * PropertyValue[][] as parameter was called. * Test is ok if getHavingClause from xQueryAna * returns the complex clause from beginning. *

* required methods: *

*/ public void _setStructuredHavingClause() { requiredMethod("setHavingClause()"); executeMethod("setStructuredFilter()"); String complexFilter = "( \"Identifier\" = '1' AND \"Type\" = '4' ) OR ( \"Identifier\" = '2' AND \"Type\" = '5' ) OR ( \"Identifier\" = '3' AND \"Type\" = '6' AND \"Address\" = '7' ) OR ( \"Address\" = '8' ) OR ( \"Type\" = '9' )"; try{ oObj.setHavingClause(complexFilter); PropertyValue[][] aStructuredHaving = xQueryAna.getStructuredHavingClause(); oObj.setHavingClause(""); oObj.setStructuredHavingClause(aStructuredHaving); tRes.tested("setStructuredHavingClause()", (xQueryAna.getHavingClause().equals(complexFilter))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setStructuredHavingClause()", false); } } /** * First object relation xProp was used as parameter. Relation * xQueryAna was used to chek if realtion colName * was found. * Second an empty XPropertySet was given as parameter. An * com.sun.star.sdbc.SQLException must be thrown. */ public void _appendHavingClauseByColumn() { boolean ok = true; try{ oObj.appendHavingClauseByColumn(xProp, true,SQLFilterOperator.EQUAL); log.println("appendHavingClauseByColumn: " + xQueryAna.getFilter()); ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("appendHavingClauseByColumn()", false); } try{ XPropertySet dummy = null; oObj.appendHavingClauseByColumn(dummy, true,SQLFilterOperator.EQUAL); log.println("expected Exception was not thrown"); tRes.tested("appendHavingClauseByColumn()", false); } catch (com.sun.star.sdbc.SQLException e){ log.println("expected Exception"); ok = ok && true; } tRes.tested("appendHavingClauseByColumn()", ok); } /** * First object relation xProp was set as parameter. Relation * xQueryAna was used to chek if realtion colName * was found. * Second an empty XPropertySet was given as parameter. An * com.sun.star.sdbc.SQLException must be thrown. */ public void _appendOrderByColumn() { boolean ok = true; try{ oObj.appendOrderByColumn(xProp, true); log.println("appendOrderByColumn: " + xQueryAna.getFilter()); ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("appendOrderByColumn()", false); } try{ XPropertySet dummy = null; oObj.appendOrderByColumn(dummy, true); log.println("expected Exception was not thrown"); tRes.tested("appendOrderByColumn()", false); } catch (com.sun.star.sdbc.SQLException e){ log.println("expected Exception"); ok = ok && true; } tRes.tested("appendOrderByColumn()", ok); } /** * Method getOrder from object relation xQueryAna * checks the order which was setted while calling setOrder */ public void _setOrder() { try{ String order = "\"Identifier\""; oObj.setOrder(order); tRes.tested("setOrder()", (xQueryAna.getOrder().equals(order))); } catch (com.sun.star.sdbc.SQLException e){ log.println("unexpected Exception: " + e.toString()); tRes.tested("setOrder()", false); } } } // finish class _XSingleSelectQueryComposer