2001-05-04 08:14:58 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 11:37:01 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2008-04-11 11:37:01 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2008-04-11 11:37:01 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2008-04-11 11:37:01 +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.
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2008-04-11 11:37:01 +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).
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
2008-04-11 11:37:01 +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.
|
2001-05-04 08:14:58 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-17 10:39:39 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_xmlscript.hxx"
|
|
|
|
|
2001-05-04 08:14:58 +00:00
|
|
|
#include <xmlscript/xmllib_imexp.hxx>
|
|
|
|
#include <xmlscript/xml_helper.hxx>
|
|
|
|
|
|
|
|
using namespace com::sun::star::uno;
|
|
|
|
using namespace com::sun::star;
|
|
|
|
using namespace rtl;
|
|
|
|
|
|
|
|
namespace xmlscript
|
|
|
|
{
|
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
static OUString aTrueStr ( RTL_CONSTASCII_USTRINGPARAM("true") );
|
|
|
|
static OUString aFalseStr( RTL_CONSTASCII_USTRINGPARAM("false") );
|
|
|
|
|
2001-05-04 08:14:58 +00:00
|
|
|
//##################################################################################################
|
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
|
2001-05-04 08:14:58 +00:00
|
|
|
//==================================================================================================
|
|
|
|
|
2004-08-23 08:14:35 +00:00
|
|
|
void
|
2001-05-04 08:14:58 +00:00
|
|
|
SAL_CALL exportLibraryContainer(
|
|
|
|
Reference< xml::sax::XExtendedDocumentHandler > const & xOut,
|
2001-07-02 11:02:12 +00:00
|
|
|
const LibDescriptorArray* pLibArray )
|
2001-05-04 08:14:58 +00:00
|
|
|
SAL_THROW( (Exception) )
|
|
|
|
{
|
|
|
|
xOut->startDocument();
|
|
|
|
|
2001-05-22 13:05:53 +00:00
|
|
|
OUString aDocTypeStr( RTL_CONSTASCII_USTRINGPARAM(
|
|
|
|
"<!DOCTYPE library:libraries PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\""
|
|
|
|
" \"libraries.dtd\">" ) );
|
|
|
|
xOut->unknown( aDocTypeStr );
|
|
|
|
xOut->ignorableWhitespace( OUString() );
|
|
|
|
|
|
|
|
|
2001-05-04 08:14:58 +00:00
|
|
|
OUString aLibrariesName( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":libraries") );
|
|
|
|
XMLElement* pLibsElement = new XMLElement( aLibrariesName );
|
|
|
|
Reference< xml::sax::XAttributeList > xAttributes( pLibsElement );
|
|
|
|
|
|
|
|
pLibsElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM("xmlns:" XMLNS_LIBRARY_PREFIX) ),
|
|
|
|
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_URI) ) );
|
|
|
|
pLibsElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM("xmlns:" XMLNS_XLINK_PREFIX) ),
|
|
|
|
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_XLINK_URI) ) );
|
|
|
|
|
|
|
|
|
|
|
|
xOut->ignorableWhitespace( OUString() );
|
|
|
|
xOut->startElement( aLibrariesName, xAttributes );
|
|
|
|
|
2001-07-02 11:02:12 +00:00
|
|
|
int nLibCount = pLibArray->mnLibCount;
|
2001-05-04 08:14:58 +00:00
|
|
|
for( sal_Int32 i = 0 ; i < nLibCount ; i++ )
|
|
|
|
{
|
2001-07-02 11:02:12 +00:00
|
|
|
LibDescriptor& rLib = pLibArray->mpLibs[i];
|
2001-05-04 08:14:58 +00:00
|
|
|
|
|
|
|
OUString aLibraryName( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":library") );
|
|
|
|
XMLElement* pLibElement = new XMLElement( aLibraryName );
|
|
|
|
Reference< xml::sax::XAttributeList > xLibElementAttribs;
|
|
|
|
xLibElementAttribs = static_cast< xml::sax::XAttributeList* >( pLibElement );
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":name") ),
|
|
|
|
rLib.aName );
|
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
|
|
|
|
if( rLib.aStorageURL.getLength() )
|
2001-05-04 08:14:58 +00:00
|
|
|
{
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_XLINK_PREFIX ":href") ),
|
|
|
|
rLib.aStorageURL );
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_XLINK_PREFIX ":type") ),
|
|
|
|
OUString( RTL_CONSTASCII_USTRINGPARAM("simple") ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":link") ),
|
|
|
|
rLib.bLink ? aTrueStr : aFalseStr );
|
|
|
|
|
2001-12-14 11:12:53 +00:00
|
|
|
if( rLib.bLink )
|
|
|
|
{
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":readonly") ),
|
|
|
|
rLib.bReadOnly ? aTrueStr : aFalseStr );
|
|
|
|
}
|
|
|
|
|
2004-11-09 11:36:32 +00:00
|
|
|
pLibElement->dump( xOut.get() );
|
2001-11-07 17:21:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
xOut->ignorableWhitespace( OUString() );
|
|
|
|
xOut->endElement( aLibrariesName );
|
|
|
|
|
|
|
|
xOut->endDocument();
|
|
|
|
}
|
2001-05-04 08:14:58 +00:00
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
//==================================================================================================
|
2001-10-23 14:30:18 +00:00
|
|
|
|
2004-08-23 08:14:35 +00:00
|
|
|
void
|
2001-11-07 17:21:04 +00:00
|
|
|
SAL_CALL exportLibrary(
|
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > const & xOut,
|
|
|
|
const LibDescriptor& rLib )
|
|
|
|
SAL_THROW( (::com::sun::star::uno::Exception) )
|
|
|
|
{
|
|
|
|
xOut->startDocument();
|
|
|
|
|
|
|
|
OUString aDocTypeStr( RTL_CONSTASCII_USTRINGPARAM(
|
|
|
|
"<!DOCTYPE library:library PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\""
|
|
|
|
" \"library.dtd\">" ) );
|
|
|
|
xOut->unknown( aDocTypeStr );
|
|
|
|
xOut->ignorableWhitespace( OUString() );
|
|
|
|
|
|
|
|
|
|
|
|
OUString aLibraryName( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":library") );
|
|
|
|
XMLElement* pLibElement = new XMLElement( aLibraryName );
|
|
|
|
Reference< xml::sax::XAttributeList > xAttributes( pLibElement );
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM("xmlns:" XMLNS_LIBRARY_PREFIX) ),
|
|
|
|
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_URI) ) );
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":name") ),
|
|
|
|
rLib.aName );
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":readonly") ),
|
|
|
|
rLib.bReadOnly ? aTrueStr : aFalseStr );
|
|
|
|
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":passwordprotected") ),
|
|
|
|
rLib.bPasswordProtected ? aTrueStr : aFalseStr );
|
|
|
|
|
2004-03-17 12:42:39 +00:00
|
|
|
if( rLib.bPreload )
|
|
|
|
pLibElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":preload") ), aTrueStr );
|
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
sal_Int32 nElementCount = rLib.aElementNames.getLength();
|
|
|
|
if( nElementCount )
|
|
|
|
{
|
|
|
|
const OUString* pElementNames = rLib.aElementNames.getConstArray();
|
|
|
|
for( sal_Int32 i = 0 ; i < nElementCount ; i++ )
|
2001-05-04 08:14:58 +00:00
|
|
|
{
|
2001-11-07 17:21:04 +00:00
|
|
|
XMLElement* pElement = new XMLElement( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":element" ) ) );
|
|
|
|
Reference< xml::sax::XAttributeList > xElementAttribs;
|
|
|
|
xElementAttribs = static_cast< xml::sax::XAttributeList* >( pElement );
|
2001-05-04 08:14:58 +00:00
|
|
|
|
2001-11-07 17:21:04 +00:00
|
|
|
pElement->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_LIBRARY_PREFIX ":name") ),
|
|
|
|
pElementNames[i] );
|
|
|
|
|
|
|
|
pLibElement->addSubElement( pElement );
|
|
|
|
}
|
2001-05-04 08:14:58 +00:00
|
|
|
}
|
|
|
|
|
2004-11-09 11:36:32 +00:00
|
|
|
pLibElement->dump( xOut.get() );
|
2001-05-04 08:14:58 +00:00
|
|
|
|
|
|
|
xOut->endDocument();
|
|
|
|
}
|
|
|
|
|
2006-06-20 04:13:21 +00:00
|
|
|
}
|
2001-11-07 17:21:04 +00:00
|
|
|
|