1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package ifc.container; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 27*b1cdbd2cSJim Jagielski import lib.Status; 28*b1cdbd2cSJim Jagielski import lib.StatusException; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import com.sun.star.beans.NamedValue; 31*b1cdbd2cSJim Jagielski import com.sun.star.container.XContainerQuery; 32*b1cdbd2cSJim Jagielski import com.sun.star.container.XEnumeration; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski /** 36*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.container.XContainerQuery</code> 37*b1cdbd2cSJim Jagielski * interface methods : 38*b1cdbd2cSJim Jagielski * <ul> 39*b1cdbd2cSJim Jagielski * <li><code> createSubSetEnumerationByProperties()</code></li> 40*b1cdbd2cSJim Jagielski * <li><code> createSubSetEnumerationByQuery()</code></li> 41*b1cdbd2cSJim Jagielski * </ul> 42*b1cdbd2cSJim Jagielski * This test needs the following object relations : 43*b1cdbd2cSJim Jagielski * <ul> 44*b1cdbd2cSJim Jagielski * <li> <code>'XContainerQuery.createSubSetEnumerationByProperties'</code> : 45*b1cdbd2cSJim Jagielski * <code>NameValue[]</code> which is a valid argument for 46*b1cdbd2cSJim Jagielski * <code>createSubSetEnumerationByProperties()</code>.</li> 47*b1cdbd2cSJim Jagielski * <li> <code>'XContainerQuery.createSubSetEnumerationByQuery'</code> : <b>(optional)</b> 48*b1cdbd2cSJim Jagielski * Normaly <code>createSubSetEnumerationByProperties()</code> covers all 49*b1cdbd2cSJim Jagielski * possible queries. But for special cases, i.e. sorted output, the function 50*b1cdbd2cSJim Jagielski * <code>createSubSetEnumerationByQuery()</code> was made. The special cases was not 51*b1cdbd2cSJim Jagielski * implemented by default in the implemetation object. So this function could be 52*b1cdbd2cSJim Jagielski * marked as <code>optional</code></li> 53*b1cdbd2cSJim Jagielski * <ul> <p> 54*b1cdbd2cSJim Jagielski * <p> 55*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 56*b1cdbd2cSJim Jagielski * @see com.sun.star.container.XContainerQuery 57*b1cdbd2cSJim Jagielski */ 58*b1cdbd2cSJim Jagielski public class _XContainerQuery extends MultiMethodTest { 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski public XContainerQuery oObj = null; 61*b1cdbd2cSJim Jagielski private NamedValue[] m_querySequenze = null; 62*b1cdbd2cSJim Jagielski private String[] m_queryStrings = null; 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski /** 66*b1cdbd2cSJim Jagielski * Retrieves object relations 67*b1cdbd2cSJim Jagielski * @throws StatusException If one of relations not found. 68*b1cdbd2cSJim Jagielski */ before()69*b1cdbd2cSJim Jagielski public void before() throws StatusException { 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski m_querySequenze = (NamedValue[]) tEnv.getObjRelation( 72*b1cdbd2cSJim Jagielski "XContainerQuery.createSubSetEnumerationByProperties"); 73*b1cdbd2cSJim Jagielski if (m_querySequenze == null) { 74*b1cdbd2cSJim Jagielski throw new StatusException( 75*b1cdbd2cSJim Jagielski Status.failed("Could not get object relation " + 76*b1cdbd2cSJim Jagielski "'XContainerQuery.createSubSetEnumerationByProperties'")) ; 77*b1cdbd2cSJim Jagielski } 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski m_queryStrings = (String[]) tEnv.getObjRelation( 80*b1cdbd2cSJim Jagielski "XContainerQuery.createSubSetEnumerationByQuery"); 81*b1cdbd2cSJim Jagielski if (m_queryStrings == null) { 82*b1cdbd2cSJim Jagielski log.println("Could not get object relation " + 83*b1cdbd2cSJim Jagielski "'XContainerQuery.createSubSetEnumerationByQuery'"); 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski } 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski /** 89*b1cdbd2cSJim Jagielski * If object relation is available, the function was called with relation 90*b1cdbd2cSJim Jagielski * as parameter. The returned <code>XEnumeration</code> must not be null and 91*b1cdbd2cSJim Jagielski * elements of it must be valid. 92*b1cdbd2cSJim Jagielski * If object relation is not available, the result is always <code>true</coed> 93*b1cdbd2cSJim Jagielski */ _createSubSetEnumerationByQuery()94*b1cdbd2cSJim Jagielski public void _createSubSetEnumerationByQuery() { 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski boolean bResult = true; 97*b1cdbd2cSJim Jagielski if ( m_queryStrings == null ) { 98*b1cdbd2cSJim Jagielski log.println("This object does not have an implemetation for this function"); 99*b1cdbd2cSJim Jagielski // This is not a bug, because it's a feature for future purposes 100*b1cdbd2cSJim Jagielski } else { 101*b1cdbd2cSJim Jagielski for (int i = 0; i < m_queryStrings.length; i++){ 102*b1cdbd2cSJim Jagielski String queryString = m_queryStrings[i]; 103*b1cdbd2cSJim Jagielski XEnumeration subSet = oObj.createSubSetEnumerationByQuery( queryString ); 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski bResult &= subSet.hasMoreElements(); 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski while (subSet.hasMoreElements()) { 108*b1cdbd2cSJim Jagielski try{ 109*b1cdbd2cSJim Jagielski Object element = subSet.nextElement(); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e){ 112*b1cdbd2cSJim Jagielski log.println("Exception occured "); 113*b1cdbd2cSJim Jagielski e.printStackTrace(log); 114*b1cdbd2cSJim Jagielski bResult = false; 115*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e){ 116*b1cdbd2cSJim Jagielski log.println("Exception occured "); 117*b1cdbd2cSJim Jagielski e.printStackTrace(log); 118*b1cdbd2cSJim Jagielski bResult = false; 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski } 121*b1cdbd2cSJim Jagielski } 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski tRes.tested("createSubSetEnumerationByQuery()", bResult); 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski /** 128*b1cdbd2cSJim Jagielski * The function was called with object relation 129*b1cdbd2cSJim Jagielski * as parameter. The returned <code>XEnumeration</code> must not be null and 130*b1cdbd2cSJim Jagielski * elements of it must be valid. 131*b1cdbd2cSJim Jagielski * 132*b1cdbd2cSJim Jagielski */ _createSubSetEnumerationByProperties()133*b1cdbd2cSJim Jagielski public void _createSubSetEnumerationByProperties() { 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski boolean bResult = true; 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski XEnumeration subSet = oObj.createSubSetEnumerationByProperties( m_querySequenze ); 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski bResult = subSet.hasMoreElements(); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski while (subSet.hasMoreElements()) { 142*b1cdbd2cSJim Jagielski try{ 143*b1cdbd2cSJim Jagielski Object element = subSet.nextElement(); 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e){ 146*b1cdbd2cSJim Jagielski log.println("Exception occured "); 147*b1cdbd2cSJim Jagielski e.printStackTrace(log); 148*b1cdbd2cSJim Jagielski bResult = false; 149*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e){ 150*b1cdbd2cSJim Jagielski log.println("Exception occured "); 151*b1cdbd2cSJim Jagielski e.printStackTrace(log); 152*b1cdbd2cSJim Jagielski bResult = false; 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski } 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski tRes.tested("createSubSetEnumerationByProperties()", bResult); 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski } 159