From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- .../tests/java/mod/_sc/ScDataPilotItemObj.java | 328 +++++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java (limited to 'qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java') diff --git a/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java b/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java new file mode 100644 index 000000000..47f43fd1d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java @@ -0,0 +1,328 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package mod._sc; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNamed; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.DataPilotFieldOrientation; +import com.sun.star.sheet.XDataPilotDescriptor; +import com.sun.star.sheet.XDataPilotField; +import com.sun.star.sheet.XDataPilotTables; +import com.sun.star.sheet.XDataPilotTablesSupplier; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.CellAddress; +import com.sun.star.table.CellRangeAddress; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; + + +/** +* Test for object which is represented by service +* com.sun.star.sheet.DataPilotField.

+* Object implements the following interfaces : +*

+* @see com.sun.star.sheet.DataPilotField +* @see com.sun.star.container.XNamed +* @see com.sun.star.sheet.DataPilotField +* @see com.sun.star.beans.XPropertySet +* @see ifc.container._XNamed +* @see ifc.sheet._DataPilotField +* @see ifc.beans._XPropertySet +*/ +public class ScDataPilotItemObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * A field is filled some values. This integer determines the size of the + * field in x and y direction. + */ + private static final int mMaxFieldIndex = 6; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document + * and takes one of them. Fills some table in the spreadsheet. + * Obtains the collection of data pilot tables using the interface + * XDataPilotTablesSupplier. Creates a data pilot descriptor + * for the filled table and inserts new data pilot table with this descriptor + * to the collection. Obtains the collection of all the data pilot fields + * using the interface XDataPilotDescriptor. Retrieves from + * the collection the data pilot field with index 0. This data pilot field + * is the instance of the service com.sun.star.sheet.DataPilotField. + * @see com.sun.star.sheet.DataPilotField + * @see com.sun.star.sheet.XDataPilotTablesSupplier + * @see com.sun.star.sheet.XDataPilotDescriptor + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + // the cell range + CellRangeAddress sCellRangeAddress = new CellRangeAddress(); + sCellRangeAddress.Sheet = 0; + sCellRangeAddress.StartColumn = 1; + sCellRangeAddress.StartRow = 0; + sCellRangeAddress.EndColumn = mMaxFieldIndex - 1; + sCellRangeAddress.EndRow = mMaxFieldIndex - 1; + + // position of the data pilot table + CellAddress sCellAddress = new CellAddress(); + sCellAddress.Sheet = 0; + sCellAddress.Column = 7; + sCellAddress.Row = 8; + + log.println("Getting a sheet"); + + XSpreadsheets xSpreadsheets = xSheetDoc.getSheets(); + XSpreadsheet oSheet = null; + XSpreadsheet oSheet2 = null; + XIndexAccess oIndexAccess = UnoRuntime.queryInterface( + XIndexAccess.class, xSpreadsheets); + // Make sure there are at least two sheets + xSpreadsheets.insertNewByName("Some Sheet", (short)0); + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexAccess.getByIndex(0)); + oSheet2 = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexAccess.getByIndex(1)); + + log.println("Filling a table"); + + for (int i = 1; i < mMaxFieldIndex; i++) { + oSheet.getCellByPosition(i, 0).setFormula("Col" + i); + oSheet.getCellByPosition(0, i).setFormula("Row" + i); + oSheet2.getCellByPosition(i, 0).setFormula("Col" + i); + oSheet2.getCellByPosition(0, i).setFormula("Row" + i); + } + + for (int i = 1; i < mMaxFieldIndex; i++) + for (int j = 1; j < mMaxFieldIndex; j++) { + oSheet.getCellByPosition(i, j).setValue(i * (j + 1)); + oSheet2.getCellByPosition(i, j).setValue(i * (j + 2)); + } + + oSheet.getCellByPosition(1, 5); + + int x = sCellAddress.Column; + int y = sCellAddress.Row + 3; + + + oSheet.getCellByPosition(x, y); + + + // create the test objects + log.println("Getting test objects"); + + XDataPilotTablesSupplier DPTS = UnoRuntime.queryInterface( + XDataPilotTablesSupplier.class, + oSheet); + XDataPilotTables DPT = DPTS.getDataPilotTables(); + XDataPilotDescriptor DPDsc = DPT.createDataPilotDescriptor(); + DPDsc.setSourceRange(sCellRangeAddress); + + XPropertySet fieldPropSet = null; + + Object oDataPilotField = DPDsc.getDataPilotFields().getByIndex(0); + fieldPropSet = UnoRuntime.queryInterface( + XPropertySet.class, oDataPilotField); + + fieldPropSet.setPropertyValue("Function", + com.sun.star.sheet.GeneralFunction.SUM); + fieldPropSet.setPropertyValue("Orientation", + com.sun.star.sheet.DataPilotFieldOrientation.DATA); + + log.println("Insert the DataPilotTable"); + + if (DPT.hasByName("DataPilotTable")) { + DPT.removeByName("DataPilotTable"); + } + + XIndexAccess IA = DPDsc.getDataPilotFields(); + getSRange(IA); + + DPT.insertNewByName("DataPilotTable", sCellAddress, DPDsc); + + oObj = (XInterface) AnyConverter.toObject( + new Type(XInterface.class), IA.getByIndex(0)); + + log.println("Creating object - " + + ((oObj == null) ? "FAILED" : "OK")); + + XDataPilotField xDataPilotField = UnoRuntime.queryInterface( + XDataPilotField.class, oObj); + + XIndexAccess xIA = xDataPilotField.getItems(); + + oObj = UnoRuntime.queryInterface(XInterface.class, + xIA.getByIndex(0)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + log.println("Implementationname: " + util.utils.getImplName(oObj)); + + // Other parameters required for interface tests + tEnv.addObjRelation("NoSetName", "ScDataPilotItemObj"); + return tEnv; + } + + private void getSRange(XIndexAccess IA) { + int fieldsAmount = IA.getCount() + 1; + + int i = -1; + int cnt = 0; + + while ((++i) < fieldsAmount) { + Object field; + + try { + field = IA.getByIndex(i); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + + return; + } + + XNamed named = UnoRuntime.queryInterface(XNamed.class, + field); + String name = named.getName(); + + log.println("**Field : '" + name + "' ... "); + + if (!name.equals("Data")) { + + XPropertySet props = UnoRuntime.queryInterface( + XPropertySet.class, field); + + try { + switch (cnt % 5) { + case 0: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.COLUMN); + log.println(" Column"); + + break; + + case 1: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.ROW); + log.println(" Row"); + + break; + + case 2: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.DATA); + log.println(" Data"); + + break; + + case 3: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.HIDDEN); + log.println(" Hidden"); + + break; + + case 4: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.PAGE); + log.println(" Page"); + + break; + } + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + + return; + } + + if ((++cnt) > 4) { + break; + } + } else { + return; + } + } + } +} -- cgit v1.2.3