diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-08-06 13:05:26 -0500 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-08-06 13:05:26 -0500 |
commit | 801936459fa8cd5d452f875d14da7f34a9117f08 (patch) | |
tree | b68a8d557f97d432db6933f487ebdff842eee600 /swext/mediawiki/src/com/sun/star/wiki/Settings.java | |
parent | bf202438d88e650b69c9817f003f45aed1f58996 (diff) | |
parent | f8c7607ea291d7e7d976a9485abc1761627eb654 (diff) |
Merge remote branch 'extensions/master'MELD_LIBREOFFICE_REPOS
* extensions/master: (978 commits)
get this building for me
Version 3.4.2.3, tag libreoffice-3.4.2.3 (3.4.2-rc3)
enable l10n of presenter screen
oops Bjoern's .gitattributes link got commited by mistake
enable l10n of presenter screen
Version 3.4.2.2, tag libreoffice-3.4.2.2 (3.4.2-rc2)
poppler 0.17.0 changed its api for no some reason or other
Branch libreoffice-3-4-2
Version 3.4.2.1, tag libreoffice-3.4.2.1 (3.4.2-rc1)
Remove component_getImplementationEnvironment
hotfix to include localizations of Presenter screen extension
hotfix to include localizations of Presenter screen extension
Goodbye to CWS_WORK_STAMP
use OString::equalsL
fixing rebase errors
ause130: #i117218# change .idl handling to gnu make
CWS gnumake4: reimplement basegfx_s hack for new build system [hg:c943ed591aff]
Use DESKTOP and NATIVE where appropriate
Version 3.4.1.1, tag libreoffice-3.4.1.1 (3.4.1-rc1)
createFromAscii -> RTL_CONSTASCII_USTRINGPARAM
...
Diffstat (limited to 'swext/mediawiki/src/com/sun/star/wiki/Settings.java')
-rw-r--r-- | swext/mediawiki/src/com/sun/star/wiki/Settings.java | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/swext/mediawiki/src/com/sun/star/wiki/Settings.java b/swext/mediawiki/src/com/sun/star/wiki/Settings.java new file mode 100644 index 000000000000..d14c4eae4b52 --- /dev/null +++ b/swext/mediawiki/src/com/sun/star/wiki/Settings.java @@ -0,0 +1,347 @@ +/************************************************************************* + * + * 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 com.sun.star.wiki; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNameContainer; +import com.sun.star.container.XNameReplace; +import com.sun.star.lang.XSingleServiceFactory; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.util.XChangesBatch; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +public class Settings +{ + + private XComponentContext m_xContext; + private int lastUsedWikiServer = 0; + + + /* Singelton */ + private static Settings m_instance; + + + private Vector m_WikiConnections = new Vector(); + private Vector m_aWikiDocs = new Vector(); + + private Settings( XComponentContext ctx ) + { + m_xContext=ctx; + loadConfiguration(); + } + + + public static synchronized Settings getSettings( XComponentContext ctx ) + { + if ( m_instance == null ) + m_instance = new Settings( ctx ); + // m_instance.loadSettings(); + return m_instance; + } + + + public void addWikiCon ( Hashtable wikiCon ) + { + m_WikiConnections.add( wikiCon ); + } + + + public Vector getWikiCons() + { + return m_WikiConnections; + } + + public String getWikiConUrlByNumber( int num ) + { + String url = ""; + if ( num >=0 && num < m_WikiConnections.size() ) + { + Hashtable ht = ( Hashtable ) m_WikiConnections.get( num ); + url = ( String ) ht.get( "Url" ); + } + return url; + } + + + public void addWikiDoc ( Hashtable aWikiDoc ) + { + String sURL = ( String ) aWikiDoc.get( "CompleteUrl" ); + Hashtable aEntry = getDocByCompleteUrl( sURL ); + + if ( aEntry != null ) + { + // add doc to the end, even if it has been added before + m_aWikiDocs.remove( aEntry ); + } + else if ( m_aWikiDocs.size() > 10 ) + { + // if the number of elements has reached maximum the oldest element should be removed + m_aWikiDocs.remove( 0 ); + } + + m_aWikiDocs.add( aWikiDoc ); + } + + + public Vector getWikiDocs() + { + return m_aWikiDocs; + } + + public Object[] getWikiDocList( int serverid, int num ) + { + String wikiserverurl = getWikiConUrlByNumber( serverid ); + Vector theDocs = new Vector(); + String [] docs = new String[0]; + for ( int i=0; i<m_aWikiDocs.size(); i++ ) + { + Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i ); + String docurl = ( String ) ht.get( "Url" ); + if ( docurl.equals( wikiserverurl ) ) + { + theDocs.add( (String ) ht.get( "Doc" ) ); + } + } + return theDocs.toArray( docs ); + } + + public int getLastUsedWikiServer() + { + return lastUsedWikiServer; + } + + public void setLastUsedWikiServer( int l ) + { + lastUsedWikiServer = l; + } + + public String[] getWikiURLs() + { + String [] WikiList = new String [m_WikiConnections.size()]; + for ( int i=0; i<m_WikiConnections.size(); i++ ) + { + Hashtable ht = ( Hashtable ) m_WikiConnections.get( i ); + WikiList[i] = ( String ) ht.get( "Url" ); + } + return WikiList; + } + + + public Hashtable getSettingByUrl( String sUrl ) + { + Hashtable ht = null; + for( int i=0;i<m_WikiConnections.size();i++ ) + { + Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i ); + String u1 = ( String ) h1.get( "Url" ); + if ( u1.equals( sUrl ) ) + { + ht = h1; + try + { + String sUserName = (String)ht.get( "Username" ); + String aPassword = (String)ht.get( "Password" ); + if ( sUserName != null && sUserName.length() > 0 && ( aPassword == null || aPassword.length() == 0 ) ) + { + String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, sUrl, sUserName ); + if ( pPasswords != null && pPasswords.length > 0 ) + ht.put( "Password", pPasswords[0] ); + } + } + catch( Exception e ) + { + e.printStackTrace(); + } + + break; + } + } + return ht; + } + + public Hashtable getDocByCompleteUrl( String curl ) + { + Hashtable ht = null; + for( int i=0;i<m_aWikiDocs.size();i++ ) + { + Hashtable h1 = ( Hashtable ) m_aWikiDocs.get( i ); + String u1 = ( String ) h1.get( "CompleteUrl" ); + if ( u1.equals( curl ) ) + { + ht = h1; + } + } + return ht; + } + + + public void removeSettingByUrl( String sUrl ) + { + Hashtable ht = null; + for( int i=0;i<m_WikiConnections.size();i++ ) + { + Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i ); + String u1 = ( String ) h1.get( "Url" ); + if ( u1.equals( sUrl ) ) + { + m_WikiConnections.remove( i ); + } + } + } + + + public void storeConfiguration() + { + try + { + // remove stored connection information + XNameContainer xContainer = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/ConnectionList" ); + String[] pNames = xContainer.getElementNames(); + for( int i=0; i<pNames.length; i++ ) + { + xContainer.removeByName( pNames[i] ); + } + + // store all connections + XSingleServiceFactory xConnectionFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer ); + for ( int i=0; i< m_WikiConnections.size(); i++ ) + { + Object oNewConnection = xConnectionFactory.createInstance(); + Hashtable ht = ( Hashtable ) m_WikiConnections.get( i ); + XNameReplace xNewConn = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewConnection ); + + if ( xNewConn != null ) + xNewConn.replaceByName( "UserName", ht.get( "Username" ) ); + + xContainer.insertByName( (String)ht.get( "Url" ), xNewConn ); + } + // commit changes + XChangesBatch xBatch = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer ); + xBatch.commitChanges(); + + // remove stored connection information + XNameContainer xContainer2 = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/RecentDocs" ); + String[] pNames2 = xContainer2.getElementNames(); + for( int i=0; i<pNames2.length; i++ ) + { + xContainer2.removeByName( pNames2[i] ); + } + // store all Docs + XSingleServiceFactory xDocListFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer2 ); + for ( int i=0; i< m_aWikiDocs.size(); i++ ) + { + Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i ); + + Object oNewDoc = xDocListFactory.createInstance(); + XNameReplace xNewDoc = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewDoc ); + + Enumeration e = ht.keys(); + while ( e.hasMoreElements() ) + { + String key = ( String ) e.nextElement(); + xNewDoc.replaceByName( key, ht.get( key ) ); + } + + xContainer2.insertByName( "d" + i, xNewDoc ); + } + // commit changes + XChangesBatch xBatch2 = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer2 ); + xBatch2.commitChanges(); + + } + catch ( Exception ex ) + { + ex.printStackTrace(); + } + } + + public void loadConfiguration() + { + m_WikiConnections.clear(); + try + { + // get configuration service + // connect to configmanager + XNameAccess xAccess = Helper.GetConfigNameAccess( m_xContext, "org.openoffice.Office.Custom.WikiExtension" ); + + if ( xAccess != null ) + { + Object oList = xAccess.getByName( "ConnectionList" ); + XNameAccess xConnectionList = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oList ); + String [] allCons = xConnectionList.getElementNames(); + for ( int i=0; i<allCons.length; i++ ) + { + Hashtable ht = new Hashtable(); + ht.put( "Url", allCons[i] ); + ht.put( "Username", "" ); + ht.put( "Password", "" ); + + try + { + XPropertySet xProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xConnectionList.getByName( allCons[i] ) ); + if ( xProps != null ) + { + String aUsername = AnyConverter.toString( xProps.getPropertyValue( "UserName" ) ); + if ( aUsername != null && aUsername.length() > 0 ) + ht.put( "Username", aUsername ); + } + } + catch( Exception e ) + { + e.printStackTrace(); + } + + addWikiCon( ht ); + } + + Object oDocs = xAccess.getByName( "RecentDocs" ); + XNameAccess xRecentDocs = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDocs ); + String [] allDocs = xRecentDocs.getElementNames(); + for ( int i=0; i<allDocs.length; i++ ) + { + Object oDoc = xRecentDocs.getByName( allDocs[i] ); + XNameAccess xDoc = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDoc ); + Hashtable ht = new Hashtable(); + ht.put( "Url", xDoc.getByName( "Url" ) ); + ht.put( "CompleteUrl", xDoc.getByName( "CompleteUrl" ) ); + ht.put( "Doc", xDoc.getByName( "Doc" ) ); + addWikiDoc( ht ); + } + } + } + catch ( Exception ex ) + { + ex.printStackTrace(); + } + } +} |