diff options
Diffstat (limited to 'scripting/workben/ifc/scripting/ScriptingUtils.java')
-rw-r--r-- | scripting/workben/ifc/scripting/ScriptingUtils.java | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/scripting/workben/ifc/scripting/ScriptingUtils.java b/scripting/workben/ifc/scripting/ScriptingUtils.java new file mode 100644 index 000000000000..3ccdab02e2c9 --- /dev/null +++ b/scripting/workben/ifc/scripting/ScriptingUtils.java @@ -0,0 +1,124 @@ +/************************************************************************* + * + * 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 + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package ifc.script.framework; + +import java.io.File; +import drafts.com.sun.star.script.framework.storage.XScriptStorageManager; + +import com.sun.star.uno.UnoRuntime; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.XInterface; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.beans.XPropertySet; +import com.sun.star.uno.XComponentContext; + +public class ScriptingUtils { + private XScriptStorageManager storageManager; + private static ScriptingUtils utils; + + private ScriptingUtils() { + } + + public static ScriptingUtils getDefault() { + if (utils == null) { + synchronized (ScriptingUtils.class) { + if (utils == null) + utils = new ScriptingUtils(); + } + } + return utils; + } + + public static void cleanUserDir() { + } + + public static void cleanShareDir() { + } + + public Object getScriptStorage(XMultiServiceFactory xMSF, String location) { + int id = getStorageId(xMSF, location); + return storageManager.getScriptStorage(id); + } + + public int getStorageId(XMultiServiceFactory xMSF, String location) { + + if (location.equals("share")) + return 0; + + if (location.equals("user")) + return 1; + + XSimpleFileAccess access = null; + String uri = util.utils.getFullTestURL(location); + + if (storageManager == null) { + try { + XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, xMSF); + + XComponentContext xContext = (XComponentContext) + UnoRuntime.queryInterface(XComponentContext.class, + xProp.getPropertyValue("DefaultContext")); + + XInterface ifc = (XInterface) + xContext.getValueByName("/singletons/drafts.com.sun.star." + + "script.framework.storage.theScriptStorageManager"); + + storageManager = (XScriptStorageManager) + UnoRuntime.queryInterface(XScriptStorageManager.class, ifc); + } + catch( Exception e ) { + return -1; + } + } + + access = getXSimpleFileAccess(xMSF); + if (access == null) + return -1; + + int id = storageManager.createScriptStorageWithURI(access, uri); + + return id; + } + + public XSimpleFileAccess getXSimpleFileAccess(XMultiServiceFactory xMSF) { + XSimpleFileAccess access = null; + + try { + Object fa = + xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess"); + + access = (XSimpleFileAccess) + UnoRuntime.queryInterface(XSimpleFileAccess.class, fa); + } + catch (com.sun.star.uno.Exception e) { + return null; + } + return access; + } +} |