diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2011-11-09 11:50:43 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2011-11-09 13:37:00 +0100 |
commit | bf912d1a184bf50e326f428b7d0c083526f2783b (patch) | |
tree | 89460bd5694e029e4a7481f64ff48812b3e33ad2 | |
parent | 57091022781ac3d0509e417bf427d2edc723eed2 (diff) |
dp_dependencies clean up
-rw-r--r-- | desktop/inc/deployment.hrc | 6 | ||||
-rw-r--r-- | desktop/source/deployment/inc/dp_dependencies.hxx | 25 | ||||
-rw-r--r-- | desktop/source/deployment/misc/dp_dependencies.cxx | 145 | ||||
-rw-r--r-- | desktop/source/deployment/misc/dp_misc.src | 6 |
4 files changed, 93 insertions, 89 deletions
diff --git a/desktop/inc/deployment.hrc b/desktop/inc/deployment.hrc index 22492cd8ae88..1777f69f1896 100644 --- a/desktop/inc/deployment.hrc +++ b/desktop/inc/deployment.hrc @@ -67,9 +67,9 @@ #define RID_STR_CONCURRENTINSTANCE (RID_DEPLOYMENT_UNOPKG_START+10) #define RID_DEPLOYMENT_DEPENDENCIES_START (RID_DEPLOYMENT_START + 4400) -#define RID_DEPLYOMENT_DEPENDENCIES_UNKNOWN RID_DEPLOYMENT_DEPENDENCIES_START -#define RID_DEPLYOMENT_DEPENDENCIES_MIN (RID_DEPLOYMENT_DEPENDENCIES_START+1) -#define RID_DEPLYOMENT_DEPENDENCIES_MAX (RID_DEPLOYMENT_DEPENDENCIES_START+2) +#define RID_DEPLOYMENT_DEPENDENCIES_UNKNOWN RID_DEPLOYMENT_DEPENDENCIES_START +#define RID_DEPLOYMENT_DEPENDENCIES_MIN (RID_DEPLOYMENT_DEPENDENCIES_START+1) +#define RID_DEPLOYMENT_DEPENDENCIES_MAX (RID_DEPLOYMENT_DEPENDENCIES_START+2) #define RID_DEPLOYMENT_LICENSE_START (RID_DEPLOYMENT_START+4500) diff --git a/desktop/source/deployment/inc/dp_dependencies.hxx b/desktop/source/deployment/inc/dp_dependencies.hxx index 246d176bc4ec..5cd310858431 100644 --- a/desktop/source/deployment/inc/dp_dependencies.hxx +++ b/desktop/source/deployment/inc/dp_dependencies.hxx @@ -29,8 +29,8 @@ #ifndef INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_INC_DP_DEPENDENCIES_HXX #define INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_INC_DP_DEPENDENCIES_HXX -#include "unotools/configmgr.hxx" #include "sal/config.h" + #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" #include "dp_misc_api.hxx" @@ -45,14 +45,6 @@ namespace rtl { class OUString; } namespace dp_misc { -struct BrandName : public ::rtl::StaticWithInit< ::rtl::OUString, BrandName > { - const ::rtl::OUString operator () () { - return ::utl::ConfigManager::GetDirectConfigProperty( - ::utl::ConfigManager::PRODUCTNAME ).get< ::rtl::OUString >(); - } -}; - - /** Dependency handling. */ @@ -67,10 +59,9 @@ namespace Dependencies { a list of the unsatisfied dependencies from <code>infoset</code> (in no specific order) */ - DESKTOP_DEPLOYMENTMISC_DLLPUBLIC - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< - ::com::sun::star::xml::dom::XElement > > - check(::dp_misc::DescriptionInfoset const & infoset); + DESKTOP_DEPLOYMENTMISC_DLLPUBLIC com::sun::star::uno::Sequence< + com::sun::star::uno::Reference< com::sun::star::xml::dom::XElement > > + check(dp_misc::DescriptionInfoset const & infoset); /** Obtain the (human-readable) error message of a failed dependency. @@ -81,10 +72,10 @@ namespace Dependencies { @return the name of the dependency; will never be empty, as a localized “unknown” is substituted for an empty/missing name - */ - DESKTOP_DEPLOYMENTMISC_DLLPUBLIC ::rtl::OUString getErrorText( - ::com::sun::star::uno::Reference< - ::com::sun::star::xml::dom::XElement > const & dependency); + */ + DESKTOP_DEPLOYMENTMISC_DLLPUBLIC rtl::OUString getErrorText( + com::sun::star::uno::Reference< com::sun::star::xml::dom::XElement > + const & dependency); } } diff --git a/desktop/source/deployment/misc/dp_dependencies.cxx b/desktop/source/deployment/misc/dp_dependencies.cxx index 9bbaa1f4c5b7..d0cd2319d606 100644 --- a/desktop/source/deployment/misc/dp_dependencies.cxx +++ b/desktop/source/deployment/misc/dp_dependencies.cxx @@ -26,22 +26,21 @@ * ************************************************************************/ -// MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_desktop.hxx" - #include "sal/config.h" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" #include "com/sun/star/xml/dom/XElement.hpp" -#include "com/sun/star/xml/dom/XNode.hpp" #include "com/sun/star/xml/dom/XNodeList.hpp" +#include "comphelper/string.hxx" #include "rtl/bootstrap.hxx" #include "rtl/string.h" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" -#include "tools/string.hxx" +#include "tools/resid.hxx" +#include "unotools/configmgr.hxx" #include "deployment.hrc" #include "dp_resource.h" @@ -52,30 +51,48 @@ namespace { -namespace css = ::com::sun::star; +namespace css = com::sun::star; static char const xmlNamespace[] = "http://openoffice.org/extensions/description/2006"; -bool -lcl_versionIsNot(dp_misc::Order i_eOrder, ::rtl::OUString const& i_rVersion) -{ - ::rtl::OUString aVersion( +static char const minimalVersion[] = "OpenOffice.org-minimal-version"; + +static char const maximalVersion[] = "OpenOffice.org-maximal-version"; + +bool versionIsNot(dp_misc::Order order, rtl::OUString const & version) { + rtl::OUString oooVersion( RTL_CONSTASCII_USTRINGPARAM( "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE("version") ":Version:OOOPackageVersion}")); - ::rtl::Bootstrap::expandMacros(aVersion); - return ::dp_misc::compareVersions(aVersion, i_rVersion) != i_eOrder; + rtl::Bootstrap::expandMacros(oooVersion); //TODO: check for failure + return dp_misc::compareVersions(oooVersion, version) != order; } -bool satisfiesMinimalVersion(::rtl::OUString const& i_rVersion) -{ - return lcl_versionIsNot(dp_misc::LESS, i_rVersion); +bool satisfiesMinimalVersion(rtl::OUString const & version) { + return versionIsNot(dp_misc::LESS, version); } -bool satisfiesMaximalVersion(::rtl::OUString const& i_rVersion) +bool satisfiesMaximalVersion(rtl::OUString const & version) { + return versionIsNot(dp_misc::GREATER, version); +} + +rtl::OUString produceErrorText( + rtl::OUString const & reason, rtl::OUString const & version) { - return lcl_versionIsNot(dp_misc::GREATER, i_rVersion); + rtl::OUString buf( + comphelper::string::searchAndReplaceAsciiL( + reason, RTL_CONSTASCII_STRINGPARAM("%VERSION"), + (version.isEmpty() + ? ResId::toString( + dp_misc::getResId(RID_DEPLOYMENT_DEPENDENCIES_UNKNOWN)) + : version))); + return comphelper::string::searchAndReplaceAsciiL( + buf, RTL_CONSTASCII_STRINGPARAM("%PRODUCTNAME"), + utl::ConfigManager::GetDirectConfigProperty( + utl::ConfigManager::PRODUCTNAME).get< rtl::OUString >()); + //TODO: can fail if the replacement of "%VERSION" introduces an + // instance of "%PRODUCTNAME" into the string } } @@ -85,44 +102,44 @@ namespace dp_misc { namespace Dependencies { css::uno::Sequence< css::uno::Reference< css::xml::dom::XElement > > -check(::dp_misc::DescriptionInfoset const & infoset) { +check(dp_misc::DescriptionInfoset const & infoset) { css::uno::Reference< css::xml::dom::XNodeList > deps( infoset.getDependencies()); - ::sal_Int32 n = deps->getLength(); + sal_Int32 n = deps->getLength(); css::uno::Sequence< css::uno::Reference< css::xml::dom::XElement > > unsatisfied(n); - ::sal_Int32 unsat = 0; - for (::sal_Int32 i = 0; i < n; ++i) { - static rtl::OUString const minimalVersion( - RTL_CONSTASCII_USTRINGPARAM("OpenOffice.org-minimal-version")); + sal_Int32 unsat = 0; + for (sal_Int32 i = 0; i < n; ++i) { css::uno::Reference< css::xml::dom::XElement > e( deps->item(i), css::uno::UNO_QUERY_THROW); bool sat = false; if (e->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) - && (e->getTagName() == minimalVersion)) + && e->getTagName().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(minimalVersion))) { sat = satisfiesMinimalVersion( e->getAttribute( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); } else if (e->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) && e->getTagName().equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM( - "OpenOffice.org-maximal-version"))) + RTL_CONSTASCII_STRINGPARAM(maximalVersion))) { sat = satisfiesMaximalVersion( e->getAttribute( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); } else if (e->hasAttributeNS( - ::rtl::OUString( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), - minimalVersion)) + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(minimalVersion)))) { sat = satisfiesMinimalVersion( e->getAttributeNS( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), - minimalVersion)); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(minimalVersion)))); } if (!sat) { unsatisfied[unsat++] = e; @@ -132,45 +149,41 @@ check(::dp_misc::DescriptionInfoset const & infoset) { return unsatisfied; } -::rtl::OUString getErrorText( css::uno::Reference< css::xml::dom::XElement > const & dependency ) +rtl::OUString getErrorText( + css::uno::Reference< css::xml::dom::XElement > const & dependency) { - ::rtl::OUString sReason; - ::rtl::OUString sValue; - ::rtl::OUString sVersion(RTL_CONSTASCII_USTRINGPARAM("%VERSION")); - ::rtl::OUString sProductName(RTL_CONSTASCII_USTRINGPARAM("%PRODUCTNAME")); - - if ( dependency->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( xmlNamespace ) ) - && dependency->getTagName().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "OpenOffice.org-minimal-version" ) ) ) + OSL_ASSERT(dependency.is()); + if (dependency->getNamespaceURI().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) + && dependency->getTagName().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(minimalVersion))) { - sValue = dependency->getAttribute( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "value" ) ) ); - sReason = ::rtl::OUString( ::String(::dp_misc::getResId(RID_DEPLYOMENT_DEPENDENCIES_MIN)) ); - } - else if ( dependency->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( xmlNamespace ) ) - && dependency->getTagName().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "OpenOffice.org-maximal-version" ) ) ) + return produceErrorText( + ResId::toString(dp_misc::getResId(RID_DEPLOYMENT_DEPENDENCIES_MIN)), + dependency->getAttribute( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); + } else if (dependency->getNamespaceURI().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) + && dependency->getTagName().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(maximalVersion))) { - sValue = dependency->getAttribute( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value") ) ); - sReason = ::rtl::OUString( ::String(::dp_misc::getResId(RID_DEPLYOMENT_DEPENDENCIES_MAX)) ); - } - else if ( dependency->hasAttributeNS( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( xmlNamespace ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenOffice.org-minimal-version" )))) + return produceErrorText( + ResId::toString(dp_misc::getResId(RID_DEPLOYMENT_DEPENDENCIES_MAX)), + dependency->getAttribute( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); + } else if (dependency->hasAttributeNS( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(minimalVersion)))) { - sValue = dependency->getAttributeNS( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( xmlNamespace ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenOffice.org-minimal-version" ) ) ); - sReason = ::rtl::OUString( ::String(::dp_misc::getResId(RID_DEPLYOMENT_DEPENDENCIES_MIN)) ); - } - else - return ::rtl::OUString( ::String(::dp_misc::getResId(RID_DEPLYOMENT_DEPENDENCIES_UNKNOWN)) ); - - if ( sValue.getLength() == 0 ) - sValue = ::rtl::OUString( ::String(::dp_misc::getResId(RID_DEPLYOMENT_DEPENDENCIES_UNKNOWN)) ); - - sal_Int32 nPos = sReason.indexOf( sVersion ); - if ( nPos >= 0 ) - sReason = sReason.replaceAt( nPos, sVersion.getLength(), sValue ); - nPos = sReason.indexOf( sProductName ); - if ( nPos >= 0 ) - sReason = sReason.replaceAt( nPos, sProductName.getLength(), BrandName::get() ); - return sReason; + return produceErrorText( + ResId::toString(dp_misc::getResId(RID_DEPLOYMENT_DEPENDENCIES_MIN)), + dependency->getAttributeNS( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(minimalVersion)))); + } else + return ResId::toString( + dp_misc::getResId(RID_DEPLOYMENT_DEPENDENCIES_UNKNOWN)); } } diff --git a/desktop/source/deployment/misc/dp_misc.src b/desktop/source/deployment/misc/dp_misc.src index d18fc4c45f16..1dcc77d2eb60 100644 --- a/desktop/source/deployment/misc/dp_misc.src +++ b/desktop/source/deployment/misc/dp_misc.src @@ -27,14 +27,14 @@ #include "dp_misc.hrc" -String RID_DEPLYOMENT_DEPENDENCIES_UNKNOWN { +String RID_DEPLOYMENT_DEPENDENCIES_UNKNOWN { Text[en-US] = "Unknown"; }; -String RID_DEPLYOMENT_DEPENDENCIES_MIN { +String RID_DEPLOYMENT_DEPENDENCIES_MIN { Text[en-US] = "Extension requires at least %PRODUCTNAME %VERSION"; }; -String RID_DEPLYOMENT_DEPENDENCIES_MAX { +String RID_DEPLOYMENT_DEPENDENCIES_MAX { Text[en-US] = "Extension doesn't support versions greater than: %PRODUCTNAME %VERSION"; }; |