2010-10-27 13:11:31 +01:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2008-03-25 14:24:29 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* 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.
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* 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).
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
2008-04-11 13:00:38 +00:00
|
|
|
* 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.
|
2008-03-25 14:24:29 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _URLPARAMETER_HXX_
|
|
|
|
#define _URLPARAMETER_HXX_
|
|
|
|
|
|
|
|
#include <rtl/ustring.hxx>
|
|
|
|
#include <rtl/string.hxx>
|
|
|
|
#include <com/sun/star/ucb/IllegalIdentifierException.hpp>
|
|
|
|
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
|
|
|
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
|
|
|
|
#include <com/sun/star/io/XActiveDataSink.hpp>
|
|
|
|
#include <com/sun/star/io/XOutputStream.hpp>
|
|
|
|
#include <com/sun/star/ucb/Command.hpp>
|
|
|
|
|
|
|
|
namespace chelp {
|
|
|
|
|
|
|
|
|
|
|
|
class Databases;
|
|
|
|
|
|
|
|
|
|
|
|
class DbtToStringConverter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
DbtToStringConverter( const sal_Char* ptr,sal_Int32 len )
|
|
|
|
: m_len( len ),
|
|
|
|
m_ptr( ptr )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
rtl::OUString getHash()
|
|
|
|
{
|
|
|
|
if( m_ptr )
|
|
|
|
{
|
|
|
|
sal_Int32 sizeOfFile = ( sal_Int32 ) m_ptr[0];
|
|
|
|
rtl::OUString Hash( m_ptr+1,sizeOfFile,RTL_TEXTENCODING_UTF8 );
|
|
|
|
sal_Int32 idx;
|
|
|
|
if( ( idx = Hash.indexOf( sal_Unicode( '#' ) ) ) != -1 )
|
|
|
|
return Hash.copy( 1+idx );
|
|
|
|
}
|
|
|
|
return rtl::OUString();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
rtl::OUString getFile()
|
|
|
|
{
|
|
|
|
if( ! m_ptr )
|
|
|
|
return rtl::OUString();
|
|
|
|
|
|
|
|
sal_Int32 sizeOfFile = ( sal_Int32 ) m_ptr[0];
|
|
|
|
rtl::OUString File( m_ptr+1,sizeOfFile,RTL_TEXTENCODING_UTF8 );
|
|
|
|
sal_Int32 idx;
|
|
|
|
if( ( idx = File.indexOf( sal_Unicode( '#' ) ) ) != -1 )
|
|
|
|
return File.copy( 0,idx );
|
|
|
|
else
|
|
|
|
return File;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
rtl::OUString getDatabase()
|
|
|
|
{
|
|
|
|
if( ! m_ptr )
|
|
|
|
return rtl::OUString();
|
|
|
|
|
|
|
|
sal_Int32 sizeOfDatabase = ( int ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ];
|
|
|
|
return rtl::OUString( m_ptr + 2 + ( sal_Int32 ) m_ptr[0],sizeOfDatabase,RTL_TEXTENCODING_UTF8 );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
rtl::OUString getTitle()
|
|
|
|
{
|
|
|
|
if( ! m_ptr ) // || getHash().getLength() )
|
|
|
|
return rtl::OUString();
|
|
|
|
|
|
|
|
sal_Int32 sizeOfTitle =
|
|
|
|
( sal_Int32 ) m_ptr[ 2 + m_ptr[0] + ( sal_Int32 ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ] ];
|
|
|
|
return rtl::OUString( m_ptr + 3 + m_ptr[0] + ( sal_Int32 ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ],
|
|
|
|
sizeOfTitle,
|
|
|
|
RTL_TEXTENCODING_UTF8 );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
sal_Int32 m_len;
|
|
|
|
|
|
|
|
const sal_Char* m_ptr;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class URLParameter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
URLParameter( const rtl::OUString& aURL,
|
|
|
|
Databases* pDatabases )
|
|
|
|
throw( com::sun::star::ucb::IllegalIdentifierException );
|
|
|
|
|
|
|
|
bool isPicture() { return m_aModule.compareToAscii("picture") == 0; }
|
|
|
|
bool isActive() { return m_aActive.getLength() > 0 && m_aActive.compareToAscii( "true" ) == 0; }
|
|
|
|
bool isQuery() { return m_aId.compareToAscii("") == 0 && m_aQuery.compareToAscii("") != 0; }
|
|
|
|
bool isEntryForModule() { return m_aId.compareToAscii("start") == 0 || m_bStart; }
|
|
|
|
bool isFile() { return m_aId.compareToAscii( "" ) != 0; }
|
|
|
|
bool isModule() { return m_aId.compareToAscii("") == 0 && m_aModule.compareToAscii("") != 0; }
|
|
|
|
bool isRoot() { return m_aModule.compareToAscii("") == 0; }
|
|
|
|
bool isErrorDocument();
|
|
|
|
|
|
|
|
rtl::OUString get_url() { return m_aURL; }
|
|
|
|
|
|
|
|
rtl::OUString get_id();
|
|
|
|
|
|
|
|
rtl::OUString get_tag();
|
|
|
|
|
|
|
|
// Not called for an directory
|
|
|
|
|
|
|
|
rtl::OUString get_path() { return get_the_path(); }
|
|
|
|
|
|
|
|
rtl::OUString get_eid() { return m_aEid; }
|
|
|
|
|
|
|
|
rtl::OUString get_title();
|
|
|
|
|
|
|
|
rtl::OUString get_jar() { return get_the_jar(); } // BerkeleyDb
|
|
|
|
|
2010-04-06 17:15:01 +02:00
|
|
|
rtl::OUString get_ExtensionRegistryPath() { return m_aExtensionRegistryPath; }
|
|
|
|
|
2008-03-25 14:24:29 +00:00
|
|
|
rtl::OUString get_module() { return m_aModule; }
|
|
|
|
|
|
|
|
rtl::OUString get_dbpar() {
|
|
|
|
if( m_aDbPar.getLength() ) return m_aDbPar;
|
|
|
|
else return m_aModule;
|
|
|
|
}
|
|
|
|
|
|
|
|
rtl::OUString get_prefix() { return m_aPrefix; }
|
|
|
|
|
|
|
|
rtl::OUString get_language();
|
|
|
|
|
|
|
|
rtl::OUString get_device() { return m_aDevice; }
|
|
|
|
|
|
|
|
rtl::OUString get_program();
|
|
|
|
|
|
|
|
rtl::OUString get_query() { return m_aQuery; }
|
|
|
|
|
|
|
|
rtl::OUString get_scope() { return m_aScope; }
|
|
|
|
|
|
|
|
rtl::OUString get_system() { return m_aSystem; }
|
|
|
|
|
|
|
|
sal_Int32 get_hitCount() { return m_nHitCount; }
|
|
|
|
|
|
|
|
rtl::OString getByName( const char* par );
|
|
|
|
|
|
|
|
void open( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
|
|
|
|
const com::sun::star::ucb::Command& aCommand,
|
|
|
|
sal_Int32 CommandId,
|
|
|
|
const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment,
|
|
|
|
const com::sun::star::uno::Reference< com::sun::star::io::XActiveDataSink >& xDataSink );
|
|
|
|
|
|
|
|
void open( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
|
|
|
|
const com::sun::star::ucb::Command& aCommand,
|
|
|
|
sal_Int32 CommandId,
|
|
|
|
const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment,
|
|
|
|
const com::sun::star::uno::Reference< com::sun::star::io::XOutputStream >& xDataSink );
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
Databases* m_pDatabases;
|
|
|
|
|
|
|
|
bool m_bBerkeleyRead;
|
|
|
|
bool m_bStart;
|
|
|
|
bool m_bUseDB;
|
|
|
|
|
|
|
|
rtl::OUString m_aURL;
|
|
|
|
|
|
|
|
rtl::OUString m_aTag;
|
|
|
|
rtl::OUString m_aId;
|
|
|
|
rtl::OUString m_aPath;
|
|
|
|
rtl::OUString m_aModule;
|
|
|
|
rtl::OUString m_aTitle;
|
|
|
|
rtl::OUString m_aJar;
|
2010-04-06 17:15:01 +02:00
|
|
|
rtl::OUString m_aExtensionRegistryPath;
|
2008-03-25 14:24:29 +00:00
|
|
|
rtl::OUString m_aEid;
|
|
|
|
rtl::OUString m_aDbPar;
|
|
|
|
|
|
|
|
rtl::OUString m_aDefaultLanguage;
|
|
|
|
rtl::OUString m_aLanguage;
|
|
|
|
|
|
|
|
rtl::OUString m_aPrefix;
|
|
|
|
rtl::OUString m_aDevice;
|
|
|
|
rtl::OUString m_aProgram;
|
|
|
|
rtl::OUString m_aSystem;
|
|
|
|
rtl::OUString m_aActive;
|
|
|
|
|
|
|
|
rtl::OUString m_aQuery;
|
|
|
|
rtl::OUString m_aScope;
|
|
|
|
|
|
|
|
rtl::OUString m_aExpr;
|
|
|
|
|
|
|
|
sal_Int32 m_nHitCount; // The default maximum hitcount
|
|
|
|
|
|
|
|
|
|
|
|
// private methods
|
|
|
|
|
|
|
|
void init( bool bDefaultLanguageIsInitialized );
|
|
|
|
|
|
|
|
rtl::OUString get_the_tag();
|
|
|
|
|
|
|
|
rtl::OUString get_the_path();
|
|
|
|
|
|
|
|
rtl::OUString get_the_title();
|
|
|
|
|
|
|
|
rtl::OUString get_the_jar();
|
|
|
|
|
|
|
|
void readBerkeley();
|
|
|
|
|
|
|
|
void parse() throw( com::sun::star::ucb::IllegalIdentifierException );
|
|
|
|
|
|
|
|
bool scheme();
|
|
|
|
|
|
|
|
bool module();
|
|
|
|
|
|
|
|
bool name( bool modulePresent );
|
|
|
|
|
|
|
|
bool query();
|
|
|
|
|
|
|
|
}; // end class URLParameter
|
|
|
|
|
|
|
|
|
|
|
|
} // end namespace chelp
|
|
|
|
|
|
|
|
#endif
|
2010-10-27 13:11:31 +01:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|