/*
* 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 java.io.PrintWriter;
import lib.TestCase;
import lib.TestEnvironment;
import lib.TestParameters;
import util.SOfficeFactory;
import util.XMLTools;
import com.sun.star.container.XNameAccess;
import com.sun.star.container.XNameContainer;
import com.sun.star.document.XExporter;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.style.XStyle;
import com.sun.star.style.XStyleFamiliesSupplier;
import com.sun.star.uno.Any;
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 com.sun.star.xml.sax.XDocumentHandler;
/**
* Test for object which is represented by service
* < code > com . sun . star . comp . Calc . XMLStylesExporter < / code > . < p >
* Object implements the following interfaces :
* < ul >
* < li > < code > com : : sun : : star : : lang : : XInitialization < / code > < / li >
* < li > < code > com : : sun : : star : : document : : ExportFilter < / code > < / li >
* < li > < code > com : : sun : : star : : document : : XFilter < / code > < / li >
* < li > < code > com : : sun : : star : : document : : XExporter < / code > < / li >
* < li > < code > com : : sun : : star : : beans : : XPropertySet < / code > < / li >
* < / ul >
* @ see com . sun . star . lang . XInitialization
* @ see com . sun . star . document . ExportFilter
* @ see com . sun . star . document . XFilter
* @ see com . sun . star . document . XExporter
* @ see com . sun . star . beans . XPropertySet
* @ see ifc . lang . _ XInitialization
* @ see ifc . document . _ ExportFilter
* @ see ifc . document . _ XFilter
* @ see ifc . document . _ XExporter
* @ see ifc . beans . _ XPropertySet
*/
public class XMLStylesExporter extends TestCase {
static XComponent xSheetDoc;
protected int counter = 0 ;
/**
* New spreadsheet document created .
*/
@Override
protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception {
SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() );
log.println( "creating a calc document" );
xSheetDoc = SOF.openDoc("scalc" ,"_blank" );
}
/**
* Spreadsheet document disposed
*/
@Override
protected void cleanup( TestParameters tParam, PrintWriter log ) {
log.println( " disposing xCalcDoc " );
util.DesktopTools.closeDoc(xSheetDoc);
}
/**
* Creating a TestEnvironment for the interfaces to be tested .
* Creates an instance of the service
* < code > com . sun . star . comp . Calc . XMLStylesExporter < / code > with
* argument which is an implementation of < code > XDocumentHandler < / code >
* and which can check if required tags and character data is
* exported . < p >
* The calc document is set as a source document for exporter
* created . New style ' NewStyle ' added to style family " Cell Styles " .
* This made for checking if this style is successfully exported within
* the document styles information .
* Object relations created :
* < ul >
* < li > < code > ' MediaDescriptor ' < / code > for
* { @ link ifc . document . _ XFilter } interface < / li >
* < li > < code > ' XFilter . Checker ' < / code > for
* { @ link ifc . document . _ XFilter } interface < / li >
* < li > < code > ' SourceDocument ' < / code > for
* { @ link ifc . document . _ XExporter } interface < / li >
* < / ul >
*/
@Override
protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception {
SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() );
XMultiServiceFactory xMSF = tParam.getMSF() ;
XInterface oObj = null ;
FilterChecker filter = new FilterChecker(log);
Any arg = new Any(new Type(XDocumentHandler.class ),filter);
String newName = "NewStyle" + counter++;
// Adding tags for checking existence of head tag and property value
filter.addTag(new XMLTools.Tag("office:document-styles" ));
filter.addTag(new XMLTools.Tag("style:style" ,"style:name" , newName));
oObj = (XInterface) xMSF.createInstanceWithArguments(
"com.sun.star.comp.Calc.XMLStylesExporter" , new Object[] {arg});
XExporter xEx = UnoRuntime.queryInterface(XExporter.class ,oObj);
xEx.setSourceDocument(xSheetDoc);
// Obtaining and changing property values
XStyleFamiliesSupplier styleSup = UnoRuntime.queryInterface(
XStyleFamiliesSupplier.class , xSheetDoc);
XNameAccess StyleFamilies = styleSup.getStyleFamilies();
String[] styleFamiliesNames = StyleFamilies.getElementNames();
XNameContainer StyleFamilyName = (XNameContainer)
AnyConverter.toObject(new Type(XNameContainer.class ),
StyleFamilies.getByName(styleFamiliesNames[0 ]));
Object SC = SOF.createInstance(
xSheetDoc, "com.sun.star.style.CellStyle" );
XStyle StyleCell = UnoRuntime.queryInterface(XStyle.class ,SC);
StyleFamilyName.insertByName(newName, StyleCell);
log.println("fill sheet 1 with content..." );
util.CalcTools.fillCalcSheetWithContent(xSheetDoc, 0 , 3 , 3 , 50 , 100 );
// create testobject here
log.println( "creating a new environment" );
TestEnvironment tEnv = new TestEnvironment( oObj );
tEnv.addObjRelation("MediaDescriptor" , XMLTools.createMediaDescriptor(
new String[] {"FilterName" },
new Object[] {"scalc: StarOffice XML (Calc)" }));
tEnv.addObjRelation("SourceDocument" ,xSheetDoc);
tEnv.addObjRelation("XFilter.Checker" , filter) ;
return tEnv;
}
/**
* This class checks the XML for tags and data required and returns
* checking result to < code > XFilter < / code > interface test . All
* the information about errors occurred in XML data is written
* to log specified .
* @ see ifc . document . _ XFilter
*/
private class FilterChecker extends XMLTools.XMLChecker
implements ifc.document._XFilter.FilterChecker {
/**
* Creates a class which will write information
* into log specified .
*/
private FilterChecker(PrintWriter log) {
super (log,false ) ;
}
/**
* < code > _ XFilter . FilterChecker < / code > interface method
* which returns the result of XML checking .
* @ return < code > true < / code > if the XML data exported was
* valid ( i . e . all necessary tags and character data exists ) ,
* < code > false < / code > if some errors occurred .
*/
public boolean checkFilter() {
return check();
}
}
}
Messung V0.5 in Prozent C=94 H=92 G=92
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-12)
¤
*© Formatika GbR, Deutschland