/************************************************************************* * * 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.frame; import lib.MultiMethodTest; import util.utils; import com.sun.star.beans.Property; import com.sun.star.frame.XDocumentTemplates; import com.sun.star.frame.XStorable; import com.sun.star.sdbc.XResultSet; import com.sun.star.sdbc.XRow; import com.sun.star.ucb.Command; import com.sun.star.ucb.OpenCommandArgument2; import com.sun.star.ucb.XCommandProcessor; import com.sun.star.ucb.XContent; import com.sun.star.ucb.XContentAccess; import com.sun.star.ucb.XDynamicResultSet; import com.sun.star.uno.AnyConverter; import com.sun.star.uno.Type; import com.sun.star.uno.UnoRuntime; /** * Testing com.sun.star.frame.XDesktop * interface methods: *

*/ public class _XDocumentTemplates extends MultiMethodTest { public XDocumentTemplates oObj = null; // oObj filled by MultiMethodTest protected XContent content = null; /** * Test calls the method and prints contents list to log.

* Has OK status if the XContent isn't empty. */ public void _getContent() { content = oObj.getContent(); log.println("Content list:" + getContentList(content)); tRes.tested("getContent()", content != null); } /** * Test calls the method and checks that new group was added.

* Has OK status if method returns true and new group was added. */ public void _addGroup() { requiredMethod("getContent()"); if (getSubContent(content, "XDocumentTemplatesTemp") != null ) { oObj.removeGroup("XDocumentTemplatesTemp"); } if (getSubContent(content, "XDocumentTemplates") != null ) { oObj.removeGroup("XDocumentTemplates"); } boolean res = oObj.addGroup("XDocumentTemplatesTemp"); log.println("Method returned: " + res); res &= getSubContent(content, "XDocumentTemplatesTemp") != null; tRes.tested("addGroup()", res); } XContent groupContent = null; /** * Test calls the method and checks that content has no group with old name * and that content has group with new name.

* Has OK status if method returns true, content has no group with * old name and content has group with new name.

*/ public void _renameGroup() { requiredMethod("addGroup()"); boolean res = oObj.renameGroup("XDocumentTemplatesTemp", "XDocumentTemplates"); log.println("Method returned: " + res); groupContent = getSubContent(content, "XDocumentTemplates"); res &= getSubContent(content, "XDocumentTemplatesTemp") == null; res &= groupContent != null; tRes.tested("renameGroup()", res); } /** * Test calls the method and checks that group content has new template.

* Has OK status if method returns true and group content has new * template.

*/ public void _addTemplate() { requiredMethod("renameGroup()"); String testDoc = utils.getFullTestURL("report.stw"); log.println("Adding template from " + testDoc); boolean res = oObj.addTemplate("XDocumentTemplates", "ANewTemplateTemp",testDoc); log.println("Method returned: " + res); res &= getSubContent(groupContent, "ANewTemplateTemp") != null; tRes.tested("addTemplate()", res); } /** * Test calls the method and checks that group content has no template with * old name and that group content has template with new name.

* Has OK status if method returns true, group content has no * template with old name and group content has template with new name.

*/ public void _renameTemplate() { requiredMethod("addTemplate()"); boolean res = oObj.renameTemplate("XDocumentTemplates", "ANewTemplateTemp", "ANewTemplate"); log.println("Method returned: " + res); res &= getSubContent(groupContent, "ANewTemplateTemp") == null; res &= getSubContent(groupContent, "ANewTemplate") != null; tRes.tested("renameTemplate()", res); } /** * Test calls the method and checks that group content has new template.

* Has OK status if method returns true and new template was created.

*/ public void _storeTemplate() { requiredMethod("renameGroup()"); XStorable store = (XStorable) tEnv.getObjRelation("Store"); boolean res = oObj.storeTemplate("XDocumentTemplates", "NewStoreTemplate", store); log.println("Method returned: " + res); res &= getSubContent(groupContent, "NewStoreTemplate") != null; tRes.tested("storeTemplate()", res); } /** * Test calls the method and checks that group content has no deleted template.

* Has OK status if method returns true and group content has no * deleted template.

*/ public void _removeTemplate() { requiredMethod("renameTemplate()"); boolean res = oObj.removeTemplate("XDocumentTemplates", "ANewTemplate"); log.println("Method returned: " + res); res &= getSubContent(groupContent, "ANewTemplate") == null; tRes.tested("removeTemplate()", res); } /** * Test calls the method and checks that content has no deleted group.

* Has OK status if method returns true and content has no deleted * group.

*/ public void _removeGroup() { requiredMethod("renameGroup()"); executeMethod("renameTemplate()"); boolean res = oObj.removeGroup("XDocumentTemplates"); log.println("Method returned: " + res); res &= getSubContent(content, "XDocumentTemplates") == null; tRes.tested("removeGroup()", res); } /** * Test calls the method.

* Has OK status if no exception occurs.

*/ public void _update() { oObj.update(); tRes.tested("update()",true); } /** * Returns the string representation of content passed as parameter. */ protected String getContentList(XContent content) { XResultSet statRes = getStatResultSet(content); String ret = ""; try { statRes.first(); XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, statRes); while(! statRes.isAfterLast()) { ret += "\n " + row.getString(1); statRes.next(); } } catch (com.sun.star.sdbc.SQLException e) { log.println("Exception occured:" + e); } return ret; } protected XResultSet getStatResultSet(XContent content) { XResultSet statResSet = null; try { statResSet = getDynaResultSet(content).getStaticResultSet(); } catch(com.sun.star.ucb.ListenerAlreadySetException e) { log.println("Exception occured:" + e); } return statResSet; } protected XDynamicResultSet getDynaResultSet(XContent content) { Command command = new Command(); OpenCommandArgument2 comArg = new OpenCommandArgument2(); Property[] comProps = new Property[1]; comArg.Mode = com.sun.star.ucb.OpenMode.ALL; comProps[0] = new Property(); comProps[0].Name = "Title"; comArg.Properties = comProps; command.Name = "open"; command.Handle = -1; command.Argument = comArg; XCommandProcessor comProc = (XCommandProcessor) UnoRuntime.queryInterface(XCommandProcessor.class, content); XDynamicResultSet DynResSet = null; try { DynResSet = (XDynamicResultSet) AnyConverter.toObject( new Type(XDynamicResultSet.class),comProc.execute(command, 0, null)); } catch(com.sun.star.ucb.CommandAbortedException e) { log.println("Couldn't execute command:" + e); } catch(com.sun.star.uno.Exception e) { log.println("Couldn't execute command:" + e); } return DynResSet; } protected XContent getSubContent(XContent content, String subName) { XResultSet statRes = getStatResultSet(content); XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, statRes); XContentAccess contAcc = (XContentAccess) UnoRuntime.queryInterface(XContentAccess.class, statRes); XContent subContent = null; try { statRes.first(); while(!statRes.isAfterLast()) { if ( subName.equals(row.getString(1)) ) { subContent = contAcc.queryContent(); } statRes.next(); } } catch(com.sun.star.sdbc.SQLException e) { log.println("Exception occured:" + e); } return subContent; } }