summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/odma/odma_provider.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/source/ucp/odma/odma_provider.cxx')
-rw-r--r--ucb/source/ucp/odma/odma_provider.cxx593
1 files changed, 0 insertions, 593 deletions
diff --git a/ucb/source/ucp/odma/odma_provider.cxx b/ucb/source/ucp/odma/odma_provider.cxx
deleted file mode 100644
index 61aaf76f2914..000000000000
--- a/ucb/source/ucp/odma/odma_provider.cxx
+++ /dev/null
@@ -1,593 +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 .
- */
-
-
-#ifdef WNT
-#include <windows.h>
-#endif
-#include <ucbhelper/contentidentifier.hxx>
-#include "odma_provider.hxx"
-#include "odma_content.hxx"
-#include "odma_contentprops.hxx"
-#include <com/sun/star/util/Date.hpp>
-#include <com/sun/star/util/Time.hpp>
-#include <rtl/uri.hxx>
-#include <algorithm>
-#include <osl/file.hxx>
-
-#include <o3tl/compat_functional.hxx>
-
-using namespace com::sun::star;
-using namespace odma;
-
-//=========================================================================
-//=========================================================================
-//
-// ContentProvider Implementation.
-//
-//=========================================================================
-//=========================================================================
-ODMHANDLE ContentProvider::m_aOdmHandle = NULL;
-
-ContentProvider::ContentProvider(
- const uno::Reference< uno::XComponentContext >& rContext )
-: ::ucbhelper::ContentProviderImplHelper( rContext )
-{
-
-}
-
-//=========================================================================
-// virtual
-ContentProvider::~ContentProvider()
-{
- ContentsMap::iterator aIter = m_aContents.begin();
- for (;aIter != m_aContents.end() ;++aIter )
- {
- if(aIter->second->m_bIsOpen)
- closeDocument(aIter->first);
- }
- if(m_aOdmHandle)
- {
- NODMUnRegisterApp(m_aOdmHandle);
- m_aOdmHandle = NULL;
- }
-}
-// -----------------------------------------------------------------------------
-inline bool is_current_process_window(HWND hwnd)
-{
- DWORD pid;
- GetWindowThreadProcessId(hwnd, &pid);
- return (pid == GetCurrentProcessId());
-}
-
-HWND choose_parent_window()
-{
- HWND hwnd_parent = GetForegroundWindow();
- if (!is_current_process_window(hwnd_parent))
- hwnd_parent = GetDesktopWindow();
- return hwnd_parent;
-}
-
-ODMHANDLE ContentProvider::getHandle()
-{
- if(!m_aOdmHandle)
- {
- ODMSTATUS odm = NODMRegisterApp(&m_aOdmHandle,ODM_API_VERSION,const_cast<char*>(ODMA_ODMA_REGNAME),(DWORD) choose_parent_window( ),NULL);
- switch(odm)
- {
- case ODM_SUCCESS:
- break;
- case ODM_E_NODMS:
- break;
- case ODM_E_CANTINIT:
- break;
- case ODM_E_VERSION:
- break;
- default:
- break;
- }
- }
- return m_aOdmHandle;
-}
-// -----------------------------------------------------------------------------
-
-//=========================================================================
-//
-// XInterface methods.
-//
-//=========================================================================
-
-// @@@ Add own interfaces.
-XINTERFACE_IMPL_3( ContentProvider,
- lang::XTypeProvider,
- lang::XServiceInfo,
- ucb::XContentProvider );
-
-//=========================================================================
-//
-// XTypeProvider methods.
-//
-//=========================================================================
-
-// @@@ Add own interfaces.
-XTYPEPROVIDER_IMPL_3( ContentProvider,
- lang::XTypeProvider,
- lang::XServiceInfo,
- ucb::XContentProvider );
-
-//=========================================================================
-//
-// XServiceInfo methods.
-//
-//=========================================================================
-
-// @@@ Adjust implementation name. Keep the prefix "com.sun.star.comp."!
-// @@@ Adjust service name.
-XSERVICEINFO_IMPL_1_CTX( ContentProvider,
- rtl::OUString( "com.sun.star.comp.odma.ContentProvider" ),
- rtl::OUString(ODMA_CONTENT_PROVIDER_SERVICE_NAME ) );
-
-//=========================================================================
-//
-// Service factory implementation.
-//
-//=========================================================================
-
-ONE_INSTANCE_SERVICE_FACTORY_IMPL( ContentProvider );
-
-//=========================================================================
-//
-// XContentProvider methods.
-//
-//=========================================================================
-
-// virtual
-uno::Reference< ucb::XContent > SAL_CALL ContentProvider::queryContent(
- const uno::Reference< ucb::XContentIdentifier >& Identifier )
- throw( ucb::IllegalIdentifierException, uno::RuntimeException )
-{
- // Check URL scheme...
- if(!getHandle())
- throw ucb::IllegalIdentifierException();
-
- rtl::OUString aScheme( rtl::OUString( ODMA_URL_SCHEME ) );
- sal_Int32 nIndex = 0;
- rtl::OUString sOdma = aScheme.getToken(3,'.',nIndex);
- rtl::OUString sCanonicURL = Identifier->getContentIdentifier();
- // check if url starts with odma
- if ( !(Identifier->getContentProviderScheme().equalsIgnoreAsciiCase( aScheme ) ||
- Identifier->getContentProviderScheme().equalsIgnoreAsciiCase( sOdma )) )
- throw ucb::IllegalIdentifierException();
-
- if(!( sCanonicURL.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(ODMA_URL_SCHEME_SHORT ODMA_URL_SHORT)) ||
- sCanonicURL.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(ODMA_URL_SCHEME ODMA_URL_SHORT))))
- throw ucb::IllegalIdentifierException();
-
-
- // @@@ Id normalization may go here...
-
- uno::Reference< ucb::XContentIdentifier > xCanonicId = Identifier;
-
- osl::MutexGuard aGuard( m_aMutex );
-
- // Check, if a content with given id already exists...
- uno::Reference< ucb::XContent > xContent
- = queryExistingContent( xCanonicId ).get();
- if ( xContent.is() )
- return xContent;
-
- // @@@ Decision, which content implementation to instanciate may be
- // made here ( in case you have different content classes ).
-
- // Create a new content.
-
- sCanonicURL = convertURL(sCanonicURL);
-
- ::rtl::Reference<ContentProperties> aProp;
- // first check if we got an ODMA ID from outside
- if( sCanonicURL.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(ODMA_URL_ODMAID)))
- {// we get an orignal ODMA id so we have to look for the name
- ::rtl::OString sDocId = ::rtl::OUStringToOString(sCanonicURL,RTL_TEXTENCODING_MS_1252);
- sal_Char* lpszDocName = new sal_Char[ODM_NAME_MAX];
-
- ODMSTATUS odm = NODMGetDocInfo( getHandle(),
- const_cast<sal_Char*>(sDocId.getStr()),
- ODM_NAME,
- lpszDocName,
- ODM_NAME_MAX
- );
- if(odm == ODM_SUCCESS)
- {
- aProp = new ContentProperties();
- aProp->m_sDocumentName = ::rtl::OStringToOUString(rtl::OString(lpszDocName),RTL_TEXTENCODING_ASCII_US);
- aProp->m_sDocumentId = sDocId;
- aProp->m_sContentType = ::rtl::OUString(ODMA_CONTENT_TYPE);
- append(aProp);
- }
- delete [] lpszDocName;
- }
- else // we got an already fetched name here so look for it
- {
- // we have a valid document name
- aProp = getContentPropertyWithTitle(sCanonicURL);
- if(!aProp.is())
- aProp = getContentPropertyWithSavedAsName(sCanonicURL);
- if(!aProp.is())
- {
- if(sCanonicURL.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("/")))
- { // found only the scheme
- aProp = new ContentProperties();
- aProp->m_sDocumentId = "/";
- aProp->m_sTitle = sCanonicURL;
- aProp->m_bIsFolder = sal_True;
- aProp->m_bIsDocument = !aProp->m_bIsFolder;
- m_aContents.insert(ContentsMap::value_type(aProp->m_sDocumentId,aProp));
- }
- else
- aProp = queryContentProperty(sCanonicURL);
- }
- }
- if(!aProp.is())
- throw ucb::IllegalIdentifierException();
-
- xContent = new Content( m_xContext, this, xCanonicId ,aProp);
- registerNewContent( xContent );
-
- if ( !xContent->getIdentifier().is() )
- throw ucb::IllegalIdentifierException();
-
- return xContent;
-}
-// -----------------------------------------------------------------------------
-void ContentProvider::closeDocument(const ::rtl::OString& _sDocumentId)
-{
- ContentsMap::iterator aIter = m_aContents.find(_sDocumentId);
- if(aIter != m_aContents.end())
- {
- DWORD dwFlags = ODM_SILENT;
- ODMSTATUS odm = NODMCloseDocEx( ContentProvider::getHandle(),
- const_cast<sal_Char*>(_sDocumentId.getStr()),
- &dwFlags,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- NULL,
- 0);
- OSL_ENSURE(odm == ODM_SUCCESS,"Error while closing a document!");
- if(odm == ODM_SUCCESS)
- aIter->second->m_bIsOpen = sal_False;
- }
-}
-// -----------------------------------------------------------------------------
-void ContentProvider::saveDocument(const ::rtl::OString& _sDocumentId)
-{
- ContentsMap::iterator aIter = m_aContents.find(_sDocumentId);
- if(aIter != m_aContents.end())
- {
- sal_Char* lpszDocId = new sal_Char[ODM_DOCID_MAX];
- DWORD dwFlags = ODM_SILENT;
- ODMSTATUS odm = NODMSaveDocEx(getHandle(),
- const_cast<sal_Char*>(_sDocumentId.getStr()),
- lpszDocId,
- &dwFlags);
- OSL_ENSURE(odm == ODM_SUCCESS,"Could not save document!");
- if(odm != ODM_SUCCESS)
- {
- delete [] lpszDocId;
- throw uno::Exception();
- }
- aIter->second->m_sDocumentId = rtl::OString(lpszDocId);
- delete [] lpszDocId;
- }
-}
-// -----------------------------------------------------------------------------
-util::Date toDate(const ::rtl::OString& _sSQLString)
-{
- sal_uInt16 nYear = 0,
- nMonth = 0,
- nDay = 0;
- nYear = (sal_uInt16)_sSQLString.copy(0,4).toInt32();
- nMonth = (sal_uInt16)_sSQLString.copy(4,2).toInt32();
- nDay = (sal_uInt16)_sSQLString.copy(6,2).toInt32();
-
- return util::Date(nDay,nMonth,nYear);
-}
-//-----------------------------------------------------------------------------
-util::Time toTime(const ::rtl::OString& _sSQLString)
-{
- sal_uInt16 nHour = 0,
- nMinute = 0,
- nSecond = 0;
- nHour = (sal_uInt16)_sSQLString.copy(8,2).toInt32();
- nMinute = (sal_uInt16)_sSQLString.copy(10,2).toInt32();
- nSecond = (sal_uInt16)_sSQLString.copy(12,2).toInt32();
-
- return util::Time(0,nHour,nMinute,nSecond);
-}
-//-----------------------------------------------------------------------------
-util::DateTime toDateTime(const ::rtl::OString& _sSQLString)
-{
- util::Date aDate = toDate(_sSQLString);
- util::Time aTime = toTime(_sSQLString);
-
- return util::DateTime(0,aTime.Seconds,aTime.Minutes,aTime.Hours,aDate.Day,aDate.Month,aDate.Year);
-}
-// -----------------------------------------------------------------------------
-void ContentProvider::fillDocumentProperties(const ::rtl::Reference<ContentProperties>& _rProp)
-{
- // read some properties from the DMS
- sal_Char* lpszDocInfo = new sal_Char[ODM_DOCID_MAX];
- sal_Char* pDocId = const_cast<sal_Char*>(_rProp->m_sDocumentId.getStr());
-
- // read the create date of the document
- ODMSTATUS odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_CREATEDDATE,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_aDateCreated = toDateTime(::rtl::OString(lpszDocInfo));
-
- // read the modified date of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_MODIFYDATE,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_aDateModified = toDateTime(::rtl::OString(lpszDocInfo));
-
- // read the title of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_TITLETEXT,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_sTitle = ::rtl::OStringToOUString(rtl::OString(lpszDocInfo),RTL_TEXTENCODING_ASCII_US);
-
- // read the name of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_NAME,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_sDocumentName = ::rtl::OStringToOUString(rtl::OString(lpszDocInfo),RTL_TEXTENCODING_ASCII_US);
-
- // read the author of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_AUTHOR,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_sAuthor = ::rtl::OStringToOUString(rtl::OString(lpszDocInfo),RTL_TEXTENCODING_ASCII_US);
-
- // read the subject of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_SUBJECT,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_sSubject = ::rtl::OStringToOUString(rtl::OString(lpszDocInfo),RTL_TEXTENCODING_ASCII_US);
-
- // read the keywords of the document
- odm = NODMGetDocInfo( getHandle(),
- pDocId,
- ODM_KEYWORDS,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if(odm == ODM_SUCCESS)
- _rProp->m_sKeywords = ::rtl::OStringToOUString(rtl::OString(lpszDocInfo),RTL_TEXTENCODING_ASCII_US);
-
- delete [] lpszDocInfo;
-}
-// -----------------------------------------------------------------------------
-void ContentProvider::append(const ::rtl::Reference<ContentProperties>& _rProp)
-{
- // now fill some more properties
- fillDocumentProperties(_rProp);
- // and append them
- m_aContents.insert(ContentsMap::value_type(_rProp->m_sDocumentId,_rProp));
-}
-// -----------------------------------------------------------------------------
-::rtl::Reference<ContentProperties> ContentProvider::queryContentProperty(const ::rtl::OUString& _sDocumentName)
-{
- ::rtl::Reference<ContentProperties> aReturn;
- sal_Char* lpszDMSList = new sal_Char[ODM_DMSID_MAX];
-
- ODMSTATUS odm = NODMGetDMS(ODMA_ODMA_REGNAME, lpszDMSList);
- if(odm == ODM_SUCCESS)
- {
- sal_Char* pQueryId = new sal_Char[ODM_QUERYID_MAX];
- lpszDMSList[strlen(lpszDMSList)+1] = '\0';
-
- ::rtl::OString sTitleText(::rtl::OUStringToOString(_sDocumentName,RTL_TEXTENCODING_ASCII_US));
- ::rtl::OString sQuery("SELECT ODM_DOCID_LATEST, ODM_NAME WHERE ODM_TITLETEXT = '");
- sQuery += sTitleText;
- sQuery += "'";
-
- DWORD dwFlags = ODM_SPECIFIC;
- odm = NODMQueryExecute(getHandle(), sQuery.getStr(), dwFlags, lpszDMSList, pQueryId );
- if(odm == ODM_SUCCESS)
- {
- sal_uInt16 nCount = 10;
- sal_uInt16 nMaxCount = 10;
- sal_Char* lpszDocId = new sal_Char[ODM_DOCID_MAX * nMaxCount];
- sal_Char* lpszDocName = new sal_Char[ODM_NAME_MAX * nMaxCount];
- sal_Char* lpszDocInfo = new sal_Char[ODM_DOCID_MAX];
-
- ::rtl::OUString sContentType(ODMA_CONTENT_TYPE);
- do
- {
- if(nCount >= nMaxCount)
- {
- // get the result
- nCount = nMaxCount;
- odm = NODMQueryGetResults(getHandle(), pQueryId,lpszDocId, lpszDocName, ODM_NAME_MAX, (WORD*)&nCount);
- }
- if(odm == ODM_SUCCESS)
- for(sal_uInt16 i = 0; i < nCount; ++i)
- {
- odm = NODMGetDocInfo( getHandle(),
- &lpszDocId[ODM_DOCID_MAX*i],
- ODM_TITLETEXT,
- lpszDocInfo,
- ODM_DOCID_MAX);
- if( odm == ODM_SUCCESS && sTitleText == ::rtl::OString(lpszDocInfo))
- {
- aReturn = new ContentProperties();
- aReturn->m_sDocumentName = ::rtl::OStringToOUString(rtl::OString(&lpszDocName[ODM_NAME_MAX*i]),RTL_TEXTENCODING_ASCII_US);
- aReturn->m_sDocumentId = ::rtl::OString(&lpszDocId[ODM_DOCID_MAX*i]);
- aReturn->m_sContentType = sContentType;
- append(aReturn);
- nCount = 0; // break condition from outer loop
- break;
- }
- }
- }
- while(nCount > nMaxCount);
-
- delete [] lpszDocInfo;
- delete [] lpszDocId;
- delete [] lpszDocName;
- }
-
- // now close the query
- odm = NODMQueryClose(ContentProvider::getHandle(), pQueryId);
- delete [] pQueryId;
- }
- delete [] lpszDMSList;
-
-
- return aReturn;
-}
-// -----------------------------------------------------------------------------
-::rtl::Reference<ContentProperties> ContentProvider::getContentProperty(const ::rtl::OUString& _sName,
- const ContentPropertiesMemberFunctor& _aFunctor) const
-{
- ::rtl::Reference<ContentProperties> aReturn;
- ContentsMap::const_iterator aFind = ::std::find_if( m_aContents.begin(),
- m_aContents.end(),
- ::o3tl::compose1(
- ::std::bind2nd(_aFunctor,_sName),
- ::o3tl::select2nd<ContentsMap::value_type>()
- )
- );
- if(aFind != m_aContents.end())
- aReturn = aFind->second;
- return aReturn;
-}
-// -----------------------------------------------------------------------------
-::rtl::Reference<ContentProperties> ContentProvider::getContentPropertyWithSavedAsName(const ::rtl::OUString& _sSaveAsName) const
-{
- ContentPropertiesMemberFunctor aFunc(::std::mem_fun(&ContentProperties::getSavedAsName));
- return getContentProperty(_sSaveAsName,aFunc);
-}
-// -----------------------------------------------------------------------------
-::rtl::Reference<ContentProperties> ContentProvider::getContentPropertyWithTitle(const ::rtl::OUString& _sTitle) const
-{
- ContentPropertiesMemberFunctor aFunc(::std::mem_fun(&ContentProperties::getTitle));
- return getContentProperty(_sTitle,aFunc);
-}
-// -----------------------------------------------------------------------------
-::rtl::Reference<ContentProperties> ContentProvider::getContentPropertyWithDocumentId(const ::rtl::OUString& _sDocumentId) const
-{
- ContentPropertiesMemberFunctor aFunc(::std::mem_fun(&ContentProperties::getDocumentId));
- return getContentProperty(_sDocumentId,aFunc);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString ContentProvider::openDoc(const ::rtl::Reference<ContentProperties>& _rProp) throw (uno::Exception)
-{
- OSL_ENSURE(_rProp.is(),"No valid content properties!");
- if(!_rProp->m_bIsOpen)
- {
- sal_Char *pFileName = new sal_Char[ODM_FILENAME_MAX];
-
- DWORD dwFlag = ODM_MODIFYMODE | ODM_SILENT;
- ODMSTATUS odm = NODMOpenDoc(getHandle(), dwFlag, const_cast<sal_Char*>(_rProp->m_sDocumentId.getStr()), pFileName);
- switch(odm)
- {
- case ODM_E_INUSE:
- dwFlag = ODM_VIEWMODE;
- if( NODMOpenDoc(getHandle(), dwFlag, const_cast<sal_Char*>(_rProp->m_sDocumentId.getStr()), pFileName) != ODM_SUCCESS)
- break;
- // else run through
- case ODM_SUCCESS:
- ::osl::FileBase::getFileURLFromSystemPath(::rtl::OStringToOUString(rtl::OString(pFileName),RTL_TEXTENCODING_ASCII_US)
- ,_rProp->m_sFileURL);
- _rProp->m_bIsOpen = sal_True;
- break;
- default:
- delete [] pFileName;
- throw uno::Exception(); // TODO give a more precise error message here
- }
-
- delete [] pFileName;
- }
- return _rProp->m_sFileURL;
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString ContentProvider::convertURL(const ::rtl::OUString& _sCanonicURL)
-{
- sal_Int32 nPos = 0;
- // check if url starts with odma
- if(_sCanonicURL.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(ODMA_URL_SCHEME_SHORT ODMA_URL_SHORT)))
- { // URL starts with odma:// so we have to remove this
- nPos = ODMA_URL_SHORT_LGTH;
- }
- else if(_sCanonicURL.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(ODMA_URL_SCHEME ODMA_URL_SHORT)))
- { // URL starts with vnd.sun.star.odma:/// so we have to remove this
- nPos = ODMA_URL_LGTH;
- }
-
- ::rtl::OUString sCanonicURL = _sCanonicURL;
- // now check what formats we allow
- if(nPos == _sCanonicURL.getLength()) // only ask for root entry
- sCanonicURL = ::rtl::OUString("/");
-
- if(nPos < sCanonicURL.getLength())
- {
- sCanonicURL = sCanonicURL.copy(nPos);
- sCanonicURL = rtl::Uri::decode(sCanonicURL,rtl_UriDecodeWithCharset,RTL_TEXTENCODING_UTF8);
- }
- if(sCanonicURL.getLength() > 1 && sCanonicURL.getStr()[0] == sal_Unicode('/'))
- {
- sCanonicURL = sCanonicURL.copy(1);
- if(sCanonicURL.getLength() == 1 && sCanonicURL.getStr()[0] == sal_Unicode('.'))
- sCanonicURL = ::rtl::OUString("/");
- }
- return sCanonicURL;
-}
-// -----------------------------------------------------------------------------
-sal_Bool ContentProvider::deleteDocument(const ::rtl::Reference<ContentProperties>& _rProp)
-{
- closeDocument(_rProp->m_sDocumentId);
- ODMSTATUS odm = NODMActivate(ContentProvider::getHandle(),
- ODM_DELETE,
- const_cast< sal_Char*>(_rProp->m_sDocumentId.getStr()));
- if(odm == ODM_SUCCESS)
- m_aContents.erase(_rProp->m_sDocumentId);
-
- return odm == ODM_SUCCESS;
-}
-// -----------------------------------------------------------------------------
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */