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.sdbcx; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski import com.sun.star.sdbc.SQLException; 29*b1cdbd2cSJim Jagielski import com.sun.star.sdbcx.XRowLocate; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski /** 32*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.sdbcx.XRowLocate</code> 33*b1cdbd2cSJim Jagielski * interface methods : 34*b1cdbd2cSJim Jagielski * <ul> 35*b1cdbd2cSJim Jagielski * <li><code> getBookmark()</code></li> 36*b1cdbd2cSJim Jagielski * <li><code> moveToBookmark()</code></li> 37*b1cdbd2cSJim Jagielski * <li><code> moveRelativeToBookmark()</code></li> 38*b1cdbd2cSJim Jagielski * <li><code> compareBookmarks()</code></li> 39*b1cdbd2cSJim Jagielski * <li><code> hasOrderedBookmarks()</code></li> 40*b1cdbd2cSJim Jagielski * <li><code> hashBookmark()</code></li> 41*b1cdbd2cSJim Jagielski * </ul> <p> 42*b1cdbd2cSJim Jagielski * Object relations needed : 43*b1cdbd2cSJim Jagielski * <ul> 44*b1cdbd2cSJim Jagielski * <li> <code>XRowLocate.HasOrderedBookmarks</code> <b>(optional)</b>: 45*b1cdbd2cSJim Jagielski * <code>Boolean</code> type. If information about bookmark ordering 46*b1cdbd2cSJim Jagielski * of object tested exists it placed in this relation.</li> 47*b1cdbd2cSJim Jagielski * </ul> <p> 48*b1cdbd2cSJim Jagielski * @see com.sun.star.sdbcx.XRowLocate 49*b1cdbd2cSJim Jagielski */ 50*b1cdbd2cSJim Jagielski public class _XRowLocate extends MultiMethodTest { 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski // oObj filled by MultiMethodTest 53*b1cdbd2cSJim Jagielski public XRowLocate oObj = null ; 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski private Object bookmark1 = null, bookmark2 = null ; 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski /** 58*b1cdbd2cSJim Jagielski * Gets the bookmark of the current cursor position and 59*b1cdbd2cSJim Jagielski * stores it for other methods use. 60*b1cdbd2cSJim Jagielski * Has OK status if method returns not null 61*b1cdbd2cSJim Jagielski * <code>XNameAccess</code> object, FAILED otherwise. 62*b1cdbd2cSJim Jagielski */ _getBookmark()63*b1cdbd2cSJim Jagielski public void _getBookmark() { 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski try { 66*b1cdbd2cSJim Jagielski bookmark1 = oObj.getBookmark() ; 67*b1cdbd2cSJim Jagielski } catch (SQLException e) { 68*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski tRes.tested("getBookmark()", bookmark1 != null) ; 72*b1cdbd2cSJim Jagielski } 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski /** 75*b1cdbd2cSJim Jagielski * Moves to bookmark previously created by method <code>_getBookmark</code> 76*b1cdbd2cSJim Jagielski * then creates new bookmark and compare it to the first one. The 77*b1cdbd2cSJim Jagielski * row difference must be equal to 0. <p> 78*b1cdbd2cSJim Jagielski * Method tests to be completed successfully before : 79*b1cdbd2cSJim Jagielski * <ul> 80*b1cdbd2cSJim Jagielski * <li> <code>getBookmark()</code> : to have a bookmark to move to.</li> 81*b1cdbd2cSJim Jagielski * </ul> 82*b1cdbd2cSJim Jagielski * Method tests to be executed before : 83*b1cdbd2cSJim Jagielski * <ul> 84*b1cdbd2cSJim Jagielski * <li> <code>moveRelativeToBookmark()</code> : to move the cursor from 85*b1cdbd2cSJim Jagielski * the initial position, to check if it returns back.</li> 86*b1cdbd2cSJim Jagielski * </ul> <p> 87*b1cdbd2cSJim Jagielski * Has OK status difference between positions of bookmarks (where 88*b1cdbd2cSJim Jagielski * cursor was moved to and created new one) equals to 0 and no 89*b1cdbd2cSJim Jagielski * exceptions occured, FAILED otherwise. 90*b1cdbd2cSJim Jagielski */ _moveToBookmark()91*b1cdbd2cSJim Jagielski public void _moveToBookmark() { 92*b1cdbd2cSJim Jagielski requiredMethod("getBookmark()") ; 93*b1cdbd2cSJim Jagielski executeMethod("moveRelativeToBookmark()") ; 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski int comparison = -1 ; 96*b1cdbd2cSJim Jagielski Object tmpBookmark = null ; 97*b1cdbd2cSJim Jagielski try { 98*b1cdbd2cSJim Jagielski synchronized(oObj) { 99*b1cdbd2cSJim Jagielski oObj.moveToBookmark(bookmark1) ; 100*b1cdbd2cSJim Jagielski tmpBookmark = oObj.getBookmark() ; 101*b1cdbd2cSJim Jagielski } 102*b1cdbd2cSJim Jagielski comparison = oObj.compareBookmarks(bookmark1, tmpBookmark) ; 103*b1cdbd2cSJim Jagielski } catch (SQLException e) { 104*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 105*b1cdbd2cSJim Jagielski } 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski tRes.tested("moveToBookmark()", comparison == 0) ; 108*b1cdbd2cSJim Jagielski } 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski /** 111*b1cdbd2cSJim Jagielski * Moves the cursor to the position with offset 2 from the 112*b1cdbd2cSJim Jagielski * bookmark created by <code>_getBookmark()</code> method and 113*b1cdbd2cSJim Jagielski * then creates a bookmark of new position. <p> 114*b1cdbd2cSJim Jagielski * Method tests to be completed successfully before : 115*b1cdbd2cSJim Jagielski * <ul> 116*b1cdbd2cSJim Jagielski * <li> <code>getBookmark()</code> : to have a bookmark to move to.</li> 117*b1cdbd2cSJim Jagielski * </ul> <p> 118*b1cdbd2cSJim Jagielski * Has OK status if no exceptions occured while method call. 119*b1cdbd2cSJim Jagielski */ _moveRelativeToBookmark()120*b1cdbd2cSJim Jagielski public void _moveRelativeToBookmark() { 121*b1cdbd2cSJim Jagielski requiredMethod("getBookmark()") ; 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski boolean result = true ; 124*b1cdbd2cSJim Jagielski try { 125*b1cdbd2cSJim Jagielski synchronized (oObj) { 126*b1cdbd2cSJim Jagielski oObj.moveRelativeToBookmark(bookmark1, 1) ; 127*b1cdbd2cSJim Jagielski bookmark2 = oObj.getBookmark() ; 128*b1cdbd2cSJim Jagielski } 129*b1cdbd2cSJim Jagielski } catch (SQLException e) { 130*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 131*b1cdbd2cSJim Jagielski result = false ; 132*b1cdbd2cSJim Jagielski } 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski tRes.tested("moveRelativeToBookmark()", result) ; 135*b1cdbd2cSJim Jagielski } 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski /** 138*b1cdbd2cSJim Jagielski * Compares bookmarks created in <code>getBookmark()</code> and 139*b1cdbd2cSJim Jagielski * <code>moveRelativeToBokkmark()</code> methods. 140*b1cdbd2cSJim Jagielski * Method tests to be completed successfully before : 141*b1cdbd2cSJim Jagielski * <ul> 142*b1cdbd2cSJim Jagielski * <li> <code>getBookmark()</code> : to have first bookmark to compare.</li> 143*b1cdbd2cSJim Jagielski * <li> <code>moveRelativeToBookmark()</code> : to have second 144*b1cdbd2cSJim Jagielski * bookmark to compare.</li> 145*b1cdbd2cSJim Jagielski * </ul> <p> 146*b1cdbd2cSJim Jagielski * Has OK status if difference in bookmark positions equals to 2. 147*b1cdbd2cSJim Jagielski */ _compareBookmarks()148*b1cdbd2cSJim Jagielski public void _compareBookmarks() { 149*b1cdbd2cSJim Jagielski requiredMethod("getBookmark()") ; 150*b1cdbd2cSJim Jagielski requiredMethod("moveRelativeToBookmark()") ; 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski int comparison = 0 ; 153*b1cdbd2cSJim Jagielski int comparison1 = 0 ; 154*b1cdbd2cSJim Jagielski try { 155*b1cdbd2cSJim Jagielski comparison = oObj.compareBookmarks(bookmark1, bookmark2) ; 156*b1cdbd2cSJim Jagielski comparison1 = oObj.compareBookmarks(bookmark1, bookmark1) ; 157*b1cdbd2cSJim Jagielski } catch (SQLException e) { 158*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski if (comparison != -1) { 162*b1cdbd2cSJim Jagielski log.println("! Wrong compare number :" + comparison) ; 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski tRes.tested("compareBookmarks()", comparison == -1 && comparison1 == 0) ; 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski /** 169*b1cdbd2cSJim Jagielski * Calls method. If relation is not found, returned result is not 170*b1cdbd2cSJim Jagielski * checked. <p> 171*b1cdbd2cSJim Jagielski * Has OK status if method returned right value (in case if relation 172*b1cdbd2cSJim Jagielski * and value to compare to exist), or just successfully returned 173*b1cdbd2cSJim Jagielski * (in case of no relation). 174*b1cdbd2cSJim Jagielski */ _hasOrderedBookmarks()175*b1cdbd2cSJim Jagielski public void _hasOrderedBookmarks() { 176*b1cdbd2cSJim Jagielski boolean result = true ; 177*b1cdbd2cSJim Jagielski boolean res = true ; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski // Optional relation 180*b1cdbd2cSJim Jagielski Boolean has = (Boolean) tEnv.getObjRelation 181*b1cdbd2cSJim Jagielski ("XRowLocate.HasOrderedBookmarks") ; 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski try { 184*b1cdbd2cSJim Jagielski res = oObj.hasOrderedBookmarks() ; 185*b1cdbd2cSJim Jagielski } catch (SQLException e) { 186*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 187*b1cdbd2cSJim Jagielski result = false ; 188*b1cdbd2cSJim Jagielski } 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski if (has == null) { 191*b1cdbd2cSJim Jagielski log.println("Optional relation not found - result not checked") ; 192*b1cdbd2cSJim Jagielski } else { 193*b1cdbd2cSJim Jagielski result &= res == has.booleanValue() ; 194*b1cdbd2cSJim Jagielski } 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski tRes.tested("hasOrderedBookmarks()", result) ; 197*b1cdbd2cSJim Jagielski } 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski /** 200*b1cdbd2cSJim Jagielski * Gets hash values of two previously created bookmarks of different 201*b1cdbd2cSJim Jagielski * cursor positions and compares them. <p> 202*b1cdbd2cSJim Jagielski * Method tests to be completed successfully before : 203*b1cdbd2cSJim Jagielski * <ul> 204*b1cdbd2cSJim Jagielski * <li> <code>getBookmark()</code> : to have first bookmark.</li> 205*b1cdbd2cSJim Jagielski * <li> <code>moveRelativeToBookmark()</code> : to have second 206*b1cdbd2cSJim Jagielski * bookmark.</li> 207*b1cdbd2cSJim Jagielski * </ul> <p> 208*b1cdbd2cSJim Jagielski * Has OK status if hash values of two bookmarks are different. 209*b1cdbd2cSJim Jagielski */ _hashBookmark()210*b1cdbd2cSJim Jagielski public void _hashBookmark() { 211*b1cdbd2cSJim Jagielski requiredMethod("getBookmark()") ; 212*b1cdbd2cSJim Jagielski requiredMethod("moveRelativeToBookmark()") ; 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski boolean result = true ; 215*b1cdbd2cSJim Jagielski try { 216*b1cdbd2cSJim Jagielski int hash1 = oObj.hashBookmark(bookmark1) ; 217*b1cdbd2cSJim Jagielski int hash2 = oObj.hashBookmark(bookmark2) ; 218*b1cdbd2cSJim Jagielski log.println("1st hash = " + hash1 + ", 2nd = " + hash2) ; 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski result = hash1 != hash2 ; 221*b1cdbd2cSJim Jagielski } catch (SQLException e) { 222*b1cdbd2cSJim Jagielski log.println("Exception occured :" + e) ; 223*b1cdbd2cSJim Jagielski result = false ; 224*b1cdbd2cSJim Jagielski } 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski tRes.tested("hashBookmark()", result) ; 227*b1cdbd2cSJim Jagielski } 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski } // finish class _XRowLocate 230*b1cdbd2cSJim Jagielski 231