summaryrefslogtreecommitdiff
path: root/framework/inc/services
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-01-09 19:36:11 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-01-30 10:48:25 +0100
commit6c15ca4d9d4a7b3116330dd0a17f7fadaed2eff4 (patch)
treed5bad1cda04d2b9737fe0b9ae22859783b07ff24 /framework/inc/services
parent2257efcddebe9dc966f8fce8ab28eb2d8f0169cc (diff)
fwk: Constructor feature for single-instance SubstitutePathVariables.
Change-Id: Ibd626f00bb844ae8ec1cab773093b8c94bf8d936
Diffstat (limited to 'framework/inc/services')
-rw-r--r--framework/inc/services/substitutepathvars.hxx285
1 files changed, 0 insertions, 285 deletions
diff --git a/framework/inc/services/substitutepathvars.hxx b/framework/inc/services/substitutepathvars.hxx
deleted file mode 100644
index 7b5b352f2452..000000000000
--- a/framework/inc/services/substitutepathvars.hxx
+++ /dev/null
@@ -1,285 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * 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 .
- */
-
-#ifndef INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-#define INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-
-/** Attention: stl headers must(!) be included at first. Otherwise it can make trouble
- with solaris headers ...
-*/
-#include <vector>
-#include <list>
-#include <boost/unordered_map.hpp>
-
-#include <threadhelp/threadhelpbase.hxx>
-#include <macros/generic.hxx>
-#include <macros/xinterface.hxx>
-#include <macros/xtypeprovider.hxx>
-#include <macros/xserviceinfo.hxx>
-#include <stdtypes.h>
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XTypeProvider.hpp>
-#include <com/sun/star/container/NoSuchElementException.hpp>
-#include <com/sun/star/util/XStringSubstitution.hpp>
-
-#include <cppuhelper/implbase2.hxx>
-#include <rtl/ustring.hxx>
-#include <unotools/configitem.hxx>
-#include <tools/link.hxx>
-#include <i18nlangtag/lang.h>
-
-namespace framework
-{
-
-// Must be zero value based
-enum EnvironmentType
-{
- ET_HOST = 0 ,
- ET_YPDOMAIN ,
- ET_DNSDOMAIN ,
- ET_NTDOMAIN ,
- ET_OS ,
- ET_UNKNOWN ,
- ET_COUNT
-};
-
-// Must be zero value based
-enum OperatingSystem
-{
- OS_WINDOWS = 0,
- OS_UNIX ,
- OS_SOLARIS ,
- OS_LINUX ,
- OS_UNKNOWN ,
- OS_COUNT
-};
-
-struct SubstituteRule
-{
- SubstituteRule() {}
- SubstituteRule( const OUString& aVarName,
- const OUString& aValue,
- const com::sun::star::uno::Any& aVal,
- EnvironmentType aType ) :
- aSubstVariable( aVarName ), aSubstValue( aValue ), aEnvValue( aVal ), aEnvType( aType ) {}
-
- OUString aSubstVariable;
- OUString aSubstValue;
- com::sun::star::uno::Any aEnvValue;
- EnvironmentType aEnvType;
-};
-
-struct SubstitutePathNotify
-{
- SubstitutePathNotify() {};
-
- const com::sun::star::uno::Sequence<OUString> aPropertyNames;
-};
-
-class SubstituteVariables : public ::boost::unordered_map< OUString,
- SubstituteRule,
- OUStringHash,
- ::std::equal_to< OUString > >
-{
- public:
- inline void free()
- {
- SubstituteVariables().swap( *this );
- }
-};
-
-typedef std::vector< SubstituteRule > SubstituteRuleVector;
-class SubstitutePathVariables_Impl : public utl::ConfigItem
-{
- public:
- SubstitutePathVariables_Impl( const Link& aNotifyLink );
- virtual ~SubstitutePathVariables_Impl();
-
- static OperatingSystem GetOperatingSystemFromString( const OUString& );
- static EnvironmentType GetEnvTypeFromString( const OUString& );
-
- void GetSharePointsRules( SubstituteVariables& aSubstVarMap );
-
- /** is called from the ConfigManager before application ends or from the
- PropertyChangeListener if the sub tree broadcasts changes. */
- virtual void Notify( const com::sun::star::uno::Sequence< OUString >& aPropertyNames );
- virtual void Commit();
-
- private:
- // Wrapper methods for low-level functions
- OperatingSystem GetOperatingSystem();
- const OUString& GetYPDomainName();
- const OUString& GetDNSDomainName();
- const OUString& GetNTDomainName();
- const OUString& GetHostName();
-
- bool FilterRuleSet( const SubstituteRuleVector& aRuleSet, SubstituteRule& aActiveRule );
-
- void ReadSharePointsFromConfiguration( com::sun::star::uno::Sequence< OUString >& aSharePointsSeq );
- void ReadSharePointRuleSetFromConfiguration( const OUString& aSharePointName,
- const OUString& aSharePointNodeName,
- SubstituteRuleVector& aRuleSet );
-
- // Stored values for domains and host
- bool m_bYPDomainRetrieved;
- OUString m_aYPDomain;
- bool m_bDNSDomainRetrieved;
- OUString m_aDNSDomain;
- bool m_bNTDomainRetrieved;
- OUString m_aNTDomain;
- bool m_bHostRetrieved;
- OUString m_aHost;
-
- Link m_aListenerNotify;
- const OUString m_aSharePointsNodeName;
- const OUString m_aDirPropertyName;
- const OUString m_aEnvPropertyName;
- const OUString m_aLevelSep;
-};
-
-enum PreDefVariable
-{
- PREDEFVAR_INST,
- PREDEFVAR_PROG,
- PREDEFVAR_USER,
- PREDEFVAR_WORK,
- PREDEFVAR_HOME,
- PREDEFVAR_TEMP,
- PREDEFVAR_PATH,
- PREDEFVAR_LANG,
- PREDEFVAR_LANGID,
- PREDEFVAR_VLANG,
- PREDEFVAR_INSTPATH,
- PREDEFVAR_PROGPATH,
- PREDEFVAR_USERPATH,
- PREDEFVAR_INSTURL,
- PREDEFVAR_PROGURL,
- PREDEFVAR_USERURL,
- PREDEFVAR_WORKDIRURL,
- // New variable of hierachy service (#i32656#)
- PREDEFVAR_BASEINSTURL,
- PREDEFVAR_USERDATAURL,
- PREDEFVAR_BRANDBASEURL,
- PREDEFVAR_COUNT
-};
-
-struct PredefinedPathVariables
-{
- // Predefined variables supported by substitute variables
- LanguageType m_eLanguageType; // Lanuage type of Office
- OUString m_FixedVar[ PREDEFVAR_COUNT ]; // Variable value access by PreDefVariable
- OUString m_FixedVarNames[ PREDEFVAR_COUNT ]; // Variable name access by PreDefVariable
-};
-
-struct ReSubstFixedVarOrder
-{
- sal_Int32 nVarValueLength;
- PreDefVariable eVariable;
-
- bool operator< ( const ReSubstFixedVarOrder& aFixedVarOrder ) const
- {
- // Reverse operator< to have high to low ordering
- return ( nVarValueLength > aFixedVarOrder.nVarValueLength );
- }
-};
-
-struct ReSubstUserVarOrder
-{
- sal_Int32 nVarValueLength;
- OUString aVarName;
-
- bool operator< ( const ReSubstUserVarOrder& aUserVarOrder ) const
- {
- // Reverse operator< to have high to low ordering
- return ( nVarValueLength > aUserVarOrder.nVarValueLength );
- }
-};
-
-typedef std::list< ReSubstFixedVarOrder > ReSubstFixedVarOrderVector;
-typedef std::list< ReSubstUserVarOrder > ReSubstUserVarOrderVector;
-
-class SubstitutePathVariables : private ThreadHelpBase, // Struct for right initalization of mutex member! Must be first of baseclasses.
- public ::cppu::WeakImplHelper2< ::com::sun::star::util::XStringSubstitution, css::lang::XServiceInfo >
-{
- friend class SubstitutePathVariables_Impl;
-
- public:
- SubstitutePathVariables( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext );
- virtual ~SubstitutePathVariables();
-
- // XInterface, XTypeProvider, XServiceInfo
- DECLARE_XSERVICEINFO
-
- // XStringSubstitution
- virtual OUString SAL_CALL substituteVariables( const OUString& aText, sal_Bool bSubstRequired )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual OUString SAL_CALL reSubstituteVariables( const OUString& aText )
- throw (::com::sun::star::uno::RuntimeException);
- virtual OUString SAL_CALL getSubstituteVariableValue( const OUString& variable )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-
- protected:
- DECL_LINK(implts_ConfigurationNotify, void *);
-
- void SetPredefinedPathVariables( PredefinedPathVariables& );
- OUString ConvertOSLtoUCBURL( const OUString& aOSLCompliantURL ) const;
-
- // Special case (transient) values can change during runtime!
- // Don't store them in the pre defined struct
- OUString GetWorkPath() const;
- OUString GetWorkVariableValue() const;
- OUString GetPathVariableValue() const;
-
- OUString GetHomeVariableValue() const;
-
- // XStringSubstitution implementation methods
- OUString impl_substituteVariable( const OUString& aText, bool bSustRequired )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- OUString impl_reSubstituteVariables( const OUString& aText )
- throw (::com::sun::star::uno::RuntimeException);
- OUString impl_getSubstituteVariableValue( const OUString& variable )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-
- private:
- class VarNameToIndexMap : public boost::unordered_map< OUString,
- PreDefVariable,
- OUStringHash,
- ::std::equal_to< OUString > >
- {
- inline void free()
- {
- VarNameToIndexMap().swap( *this );
- }
- };
-
- VarNameToIndexMap m_aPreDefVarMap; // Mapping from pre-def variable names to enum for array access
- SubstituteVariables m_aSubstVarMap; // Active rule set map indexed by variable name!
- PredefinedPathVariables m_aPreDefVars; // All predefined variables
- SubstitutePathVariables_Impl m_aImpl; // Implementation class that access the configuration
- ReSubstFixedVarOrderVector m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup)
- ReSubstUserVarOrderVector m_aReSubstUserVarOrder; // To speed up resubstitution user variables
- com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > m_xContext;
-};
-
-}
-
-#endif // INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */