2001-02-05 08:35:57 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 15:28:40 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2001-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +00:00
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
2001-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2001-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +00:00
|
|
|
* $RCSfile: querycontroller.cxx,v $
|
2008-10-01 12:28:29 +00:00
|
|
|
* $Revision: 1.119.24.1 $
|
2001-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2001-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +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-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +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-02-05 08:35:57 +00:00
|
|
|
*
|
2008-04-10 15:28:40 +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-02-05 08:35:57 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
2006-09-17 06:26:55 +00:00
|
|
|
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_dbaccess.hxx"
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
#include "adtabdlg.hxx"
|
2001-02-05 08:35:57 +00:00
|
|
|
#include "browserids.hxx"
|
2007-11-21 16:12:55 +00:00
|
|
|
#include "dbu_qry.hrc"
|
|
|
|
#include "dbu_reghelper.hxx"
|
|
|
|
#include "dbustrings.hrc"
|
|
|
|
#include "defaultobjectnamecheck.hxx"
|
|
|
|
#include "dlgsave.hxx"
|
|
|
|
#include "localresaccess.hxx"
|
|
|
|
#include "QTableWindow.hxx"
|
|
|
|
#include "QTableWindowData.hxx"
|
2001-08-23 13:39:09 +00:00
|
|
|
#include "querycontainerwindow.hxx"
|
2007-11-21 16:12:55 +00:00
|
|
|
#include "querycontroller.hxx"
|
2001-02-05 08:35:57 +00:00
|
|
|
#include "QueryDesignView.hxx"
|
2007-11-21 16:12:55 +00:00
|
|
|
#include "QueryTableView.hxx"
|
|
|
|
#include "QueryTextView.hxx"
|
|
|
|
#include "queryview.hxx"
|
|
|
|
#include "QueryViewSwitch.hxx"
|
|
|
|
#include "sqlmessage.hxx"
|
|
|
|
#include "TableConnectionData.hxx"
|
|
|
|
#include "TableFieldDescription.hxx"
|
|
|
|
#include "UITools.hxx"
|
|
|
|
|
|
|
|
/** === begin UNO includes === **/
|
2004-03-19 11:12:55 +00:00
|
|
|
#include <com/sun/star/beans/PropertyAttribute.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/container/XChild.hpp>
|
|
|
|
#include <com/sun/star/container/XNameContainer.hpp>
|
2001-02-05 08:35:57 +00:00
|
|
|
#include <com/sun/star/frame/FrameSearchFlag.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/frame/XLoadEventListener.hpp>
|
|
|
|
#include <com/sun/star/io/XActiveDataSink.hpp>
|
|
|
|
#include <com/sun/star/io/XActiveDataSource.hpp>
|
2001-02-05 08:35:57 +00:00
|
|
|
#include <com/sun/star/sdb/CommandType.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/sdb/SQLContext.hpp>
|
2001-02-05 08:35:57 +00:00
|
|
|
#include <com/sun/star/sdb/XQueriesSupplier.hpp>
|
2001-03-14 09:35:11 +00:00
|
|
|
#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
|
2001-02-06 12:22:12 +00:00
|
|
|
#include <com/sun/star/sdbc/SQLWarning.hpp>
|
2001-04-24 13:28:56 +00:00
|
|
|
#include <com/sun/star/sdbc/XRow.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/sdbcx/XAppend.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XDrop.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XViewsSupplier.hpp>
|
2001-06-15 08:55:48 +00:00
|
|
|
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <com/sun/star/util/XCloseable.hpp>
|
|
|
|
#include <com/sun/star/util/VetoException.hpp>
|
2008-10-01 12:28:29 +00:00
|
|
|
#include <com/sun/star/frame/XUntitledNumbers.hpp>
|
2007-11-21 16:12:55 +00:00
|
|
|
/** === end UNO includes === **/
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
#include <comphelper/basicio.hxx>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <comphelper/extract.hxx>
|
2001-02-05 08:35:57 +00:00
|
|
|
#include <comphelper/seqstream.hxx>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <comphelper/streamsection.hxx>
|
|
|
|
#include <comphelper/types.hxx>
|
|
|
|
#include <connectivity/dbexception.hxx>
|
|
|
|
#include <connectivity/dbtools.hxx>
|
|
|
|
#include <cppuhelper/exc_hlp.hxx>
|
|
|
|
#include <sfx2/sfxsids.hrc>
|
|
|
|
#include <svtools/localresaccess.hxx>
|
2001-04-23 08:30:31 +00:00
|
|
|
#include <toolkit/helper/vclunohelper.hxx>
|
2007-11-21 16:12:55 +00:00
|
|
|
#include <tools/diagnose_ex.h>
|
|
|
|
#include <vcl/msgbox.hxx>
|
2002-10-08 06:26:17 +00:00
|
|
|
#include <vcl/svapp.hxx>
|
2008-03-06 17:30:06 +00:00
|
|
|
#include <vos/mutex.hxx>
|
2001-02-05 08:35:57 +00:00
|
|
|
|
|
|
|
extern "C" void SAL_CALL createRegistryInfo_OQueryControl()
|
|
|
|
{
|
|
|
|
static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OQueryController > aAutoRegistration;
|
|
|
|
}
|
2008-04-04 13:03:40 +00:00
|
|
|
namespace dbaui
|
|
|
|
{
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
using namespace ::com::sun::star::frame;
|
|
|
|
using namespace ::com::sun::star::util;
|
|
|
|
using namespace ::com::sun::star::lang;
|
|
|
|
|
|
|
|
class OViewController : public OQueryController
|
|
|
|
{
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
virtual ::rtl::OUString SAL_CALL getImplementationName() throw( RuntimeException )
|
|
|
|
{
|
|
|
|
return getImplementationName_Static();
|
|
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
virtual Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames() throw(RuntimeException)
|
|
|
|
{
|
|
|
|
return getSupportedServiceNames_Static();
|
|
|
|
}
|
|
|
|
public:
|
|
|
|
OViewController(const Reference< XMultiServiceFactory >& _rM) : OQueryController(_rM){}
|
|
|
|
|
|
|
|
// need by registration
|
|
|
|
static ::rtl::OUString getImplementationName_Static() throw( RuntimeException )
|
|
|
|
{
|
|
|
|
return ::rtl::OUString::createFromAscii("org.openoffice.comp.dbu.OViewDesign");
|
|
|
|
}
|
|
|
|
static Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw( RuntimeException )
|
|
|
|
{
|
|
|
|
Sequence< ::rtl::OUString> aSupported(1);
|
|
|
|
aSupported.getArray()[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.ViewDesign");
|
|
|
|
return aSupported;
|
|
|
|
}
|
|
|
|
static Reference< XInterface > SAL_CALL Create(const Reference< XMultiServiceFactory >& _rM)
|
|
|
|
{
|
|
|
|
return *(new OViewController(_rM));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
extern "C" void SAL_CALL createRegistryInfo_OViewControl()
|
|
|
|
{
|
|
|
|
static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OViewController > aAutoRegistration;
|
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
|
2002-04-02 05:40:36 +00:00
|
|
|
namespace dbaui
|
|
|
|
{
|
2002-10-04 11:32:24 +00:00
|
|
|
using namespace ::connectivity;
|
2003-04-15 15:04:18 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2002-10-04 11:32:24 +00:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void insertParseTree(SvTreeListBox* _pBox,::connectivity::OSQLParseNode* _pNode,SvLBoxEntry* _pParent = NULL)
|
|
|
|
{
|
|
|
|
::rtl::OUString rString;
|
|
|
|
if (!_pNode->isToken())
|
|
|
|
{
|
|
|
|
// Regelnamen als rule: ...
|
|
|
|
rString = ::rtl::OUString::createFromAscii("RULE_ID: ");
|
|
|
|
rString += ::rtl::OUString::valueOf( (sal_Int32)_pNode->getRuleID());
|
|
|
|
rString+= ::rtl::OUString::createFromAscii("(");
|
|
|
|
rString += OSQLParser::RuleIDToStr(_pNode->getRuleID());
|
|
|
|
rString+= ::rtl::OUString::createFromAscii(")");
|
|
|
|
|
|
|
|
|
|
|
|
_pParent = _pBox->InsertEntry(rString,_pParent);
|
|
|
|
|
|
|
|
// einmal auswerten wieviel Subtrees dieser Knoten besitzt
|
|
|
|
sal_uInt32 nStop = _pNode->count();
|
|
|
|
// hol dir den ersten Subtree
|
|
|
|
for(sal_uInt32 i=0;i<nStop;++i)
|
|
|
|
insertParseTree(_pBox,_pNode->getChild(i),_pParent);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// ein Token gefunden
|
|
|
|
// tabs fuer das Einruecken entsprechend nLevel
|
|
|
|
|
|
|
|
switch (_pNode->getNodeType())
|
|
|
|
{
|
|
|
|
|
|
|
|
case SQL_NODE_KEYWORD:
|
2003-08-18 14:05:54 +00:00
|
|
|
{
|
|
|
|
rString+= ::rtl::OUString::createFromAscii("SQL_KEYWORD:");
|
|
|
|
::rtl::OString sT = OSQLParser::TokenIDToStr(_pNode->getTokenID());
|
|
|
|
rString += ::rtl::OUString(sT,sT.getLength(),RTL_TEXTENCODING_UTF8);
|
2002-10-04 11:32:24 +00:00
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_COMPARISON:
|
|
|
|
{rString+= ::rtl::OUString::createFromAscii("SQL_COMPARISON:");
|
|
|
|
rString += _pNode->getTokenValue(); // haenge Nodevalue an
|
|
|
|
// und beginne neu Zeile
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_NAME:
|
|
|
|
{rString+= ::rtl::OUString::createFromAscii("SQL_NAME:");
|
|
|
|
rString+= ::rtl::OUString::createFromAscii("\"");
|
|
|
|
rString += _pNode->getTokenValue();
|
|
|
|
rString+= ::rtl::OUString::createFromAscii("\"");
|
|
|
|
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_STRING:
|
|
|
|
{rString += ::rtl::OUString::createFromAscii("SQL_STRING:'");
|
|
|
|
rString += _pNode->getTokenValue();
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_INTNUM:
|
|
|
|
{rString += ::rtl::OUString::createFromAscii("SQL_INTNUM:");
|
|
|
|
rString += _pNode->getTokenValue();
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_APPROXNUM:
|
|
|
|
{rString += ::rtl::OUString::createFromAscii("SQL_APPROXNUM:");
|
|
|
|
rString += _pNode->getTokenValue();
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_PUNCTUATION:
|
|
|
|
{rString += ::rtl::OUString::createFromAscii("SQL_PUNCTUATION:");
|
|
|
|
rString += _pNode->getTokenValue(); // haenge Nodevalue an
|
|
|
|
break;}
|
|
|
|
|
|
|
|
case SQL_NODE_AMMSC:
|
|
|
|
{rString += ::rtl::OUString::createFromAscii("SQL_AMMSC:");
|
|
|
|
rString += _pNode->getTokenValue(); // haenge Nodevalue an
|
|
|
|
|
|
|
|
break;}
|
|
|
|
|
|
|
|
default:
|
|
|
|
OSL_ASSERT("OSQLParser::ShowParseTree: unzulaessiger NodeType");
|
|
|
|
rString += _pNode->getTokenValue();
|
|
|
|
}
|
|
|
|
_pBox->InsertEntry(rString,_pParent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2003-04-15 15:04:18 +00:00
|
|
|
#endif // OSL_DEBUG_LEVEL
|
2001-02-05 08:35:57 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
String lcl_getObjectResourceString( USHORT _nResId, sal_Int32 _nCommandType )
|
|
|
|
{
|
|
|
|
String sMessageText = String( ModuleRes( _nResId ) );
|
|
|
|
String sObjectType;
|
|
|
|
{
|
|
|
|
LocalResourceAccess aLocalRes( RSC_QUERY_OBJECT_TYPE, RSC_RESOURCE );
|
|
|
|
sObjectType = String( ModuleRes( (USHORT)( _nCommandType + 1 ) ) );
|
|
|
|
}
|
|
|
|
sMessageText.SearchAndReplace( String::CreateFromAscii( "$object$" ), sObjectType );
|
|
|
|
return sMessageText;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::io;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
using namespace ::com::sun::star::frame;
|
|
|
|
using namespace ::com::sun::star::util;
|
|
|
|
using namespace ::com::sun::star::lang;
|
|
|
|
using namespace ::com::sun::star::container;
|
|
|
|
using namespace ::com::sun::star::sdbcx;
|
|
|
|
using namespace ::com::sun::star::sdbc;
|
|
|
|
using namespace ::com::sun::star::sdb;
|
2001-06-15 08:55:48 +00:00
|
|
|
using namespace ::com::sun::star::ui::dialogs;
|
2001-04-23 08:30:31 +00:00
|
|
|
using namespace ::com::sun::star::awt;
|
2001-02-05 08:35:57 +00:00
|
|
|
using namespace ::dbtools;
|
2002-04-02 05:40:36 +00:00
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
using namespace ::comphelper;
|
|
|
|
|
2002-05-06 09:02:23 +00:00
|
|
|
namespace
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
void ensureToolbars( OQueryController& _rController, sal_Bool _bDesign )
|
2004-10-22 11:07:34 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager = _rController.getLayoutManager( _rController.getFrame() );
|
2004-10-22 11:07:34 +00:00
|
|
|
if ( xLayoutManager.is() )
|
|
|
|
{
|
|
|
|
xLayoutManager->lock();
|
|
|
|
static ::rtl::OUString s_sDesignToolbar(RTL_CONSTASCII_USTRINGPARAM("private:resource/toolbar/designobjectbar"));
|
|
|
|
static ::rtl::OUString s_sSqlToolbar(RTL_CONSTASCII_USTRINGPARAM("private:resource/toolbar/sqlobjectbar"));
|
|
|
|
if ( _bDesign )
|
|
|
|
{
|
|
|
|
xLayoutManager->destroyElement( s_sSqlToolbar );
|
|
|
|
xLayoutManager->createElement( s_sDesignToolbar );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
xLayoutManager->destroyElement( s_sDesignToolbar );
|
|
|
|
xLayoutManager->createElement( s_sSqlToolbar );
|
|
|
|
}
|
|
|
|
xLayoutManager->unlock();
|
|
|
|
xLayoutManager->doLayout();
|
|
|
|
}
|
|
|
|
}
|
2002-05-06 09:02:23 +00:00
|
|
|
}
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
::rtl::OUString SAL_CALL OQueryController::getImplementationName() throw( RuntimeException )
|
|
|
|
{
|
|
|
|
return getImplementationName_Static();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
::rtl::OUString OQueryController::getImplementationName_Static() throw( RuntimeException )
|
|
|
|
{
|
|
|
|
return ::rtl::OUString::createFromAscii("org.openoffice.comp.dbu.OQueryDesign");
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
Sequence< ::rtl::OUString> OQueryController::getSupportedServiceNames_Static(void) throw( RuntimeException )
|
|
|
|
{
|
|
|
|
Sequence< ::rtl::OUString> aSupported(1);
|
|
|
|
aSupported.getArray()[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.QueryDesign");
|
|
|
|
return aSupported;
|
|
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
Sequence< ::rtl::OUString> SAL_CALL OQueryController::getSupportedServiceNames() throw(RuntimeException)
|
|
|
|
{
|
|
|
|
return getSupportedServiceNames_Static();
|
|
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
Reference< XInterface > SAL_CALL OQueryController::Create(const Reference<XMultiServiceFactory >& _rxFactory)
|
|
|
|
{
|
|
|
|
return *(new OQueryController(_rxFactory));
|
|
|
|
}
|
2001-08-15 12:19:03 +00:00
|
|
|
DBG_NAME(OQueryController);
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2001-02-28 09:18:26 +00:00
|
|
|
OQueryController::OQueryController(const Reference< XMultiServiceFactory >& _rM)
|
2006-06-20 02:29:57 +00:00
|
|
|
:OJoinController(_rM)
|
2007-01-15 13:37:14 +00:00
|
|
|
,OQueryController_PBase( getBroadcastHelper() )
|
2006-07-10 14:45:08 +00:00
|
|
|
,m_pParseContext( new svxform::OSystemParseContext )
|
|
|
|
,m_aSqlParser( _rM, m_pParseContext )
|
2006-06-20 02:29:57 +00:00
|
|
|
,m_pSqlIterator(NULL)
|
|
|
|
,m_nVisibleRows(0x400)
|
|
|
|
,m_nSplitPos(-1)
|
2007-11-21 16:12:55 +00:00
|
|
|
,m_nCommandType( CommandType::QUERY )
|
|
|
|
,m_bGraphicalDesign(sal_False)
|
2001-02-05 08:35:57 +00:00
|
|
|
,m_bDistinct(sal_False)
|
|
|
|
,m_bViewAlias(sal_False)
|
|
|
|
,m_bViewTable(sal_False)
|
|
|
|
,m_bViewFunction(sal_False)
|
2007-11-21 16:12:55 +00:00
|
|
|
,m_bEscapeProcessing(sal_True)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-08-15 12:19:03 +00:00
|
|
|
DBG_CTOR(OQueryController,NULL);
|
2001-02-05 08:35:57 +00:00
|
|
|
InvalidateAll();
|
2004-03-19 11:12:55 +00:00
|
|
|
|
|
|
|
registerProperty( PROPERTY_ACTIVECOMMAND, PROPERTY_ID_ACTIVECOMMAND, PropertyAttribute::READONLY | PropertyAttribute::BOUND,
|
|
|
|
&m_sStatement, ::getCppuType( &m_sStatement ) );
|
2007-11-21 16:12:55 +00:00
|
|
|
registerProperty( PROPERTY_ESCAPE_PROCESSING, PROPERTY_ID_ESCAPE_PROCESSING, PropertyAttribute::READONLY | PropertyAttribute::BOUND,
|
|
|
|
&m_bEscapeProcessing, ::getCppuType( &m_bEscapeProcessing ) );
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
OQueryController::~OQueryController()
|
|
|
|
{
|
2001-08-15 12:19:03 +00:00
|
|
|
DBG_DTOR(OQueryController,NULL);
|
2004-08-02 15:16:32 +00:00
|
|
|
if ( !getBroadcastHelper().bDisposed && !getBroadcastHelper().bInDispose )
|
|
|
|
{
|
|
|
|
OSL_ENSURE(0,"Please check who doesn't dispose this component!");
|
|
|
|
// increment ref count to prevent double call of Dtor
|
|
|
|
osl_incrementInterlockedCount( &m_refCount );
|
|
|
|
dispose();
|
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2007-01-15 13:37:14 +00:00
|
|
|
|
|
|
|
IMPLEMENT_FORWARD_XINTERFACE2( OQueryController, OJoinController, OQueryController_PBase )
|
|
|
|
IMPLEMENT_FORWARD_XTYPEPROVIDER2( OQueryController, OJoinController, OQueryController_PBase )
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
Reference< XPropertySetInfo > SAL_CALL OQueryController::getPropertySetInfo() throw(RuntimeException)
|
|
|
|
{
|
|
|
|
Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
|
|
|
|
return xInfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
::cppu::IPropertyArrayHelper& OQueryController::getInfoHelper()
|
|
|
|
{
|
|
|
|
return *const_cast< OQueryController* >( this )->getArrayHelper();
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
::cppu::IPropertyArrayHelper* OQueryController::createArrayHelper( ) const
|
|
|
|
{
|
|
|
|
Sequence< Property > aProps;
|
|
|
|
describeProperties(aProps);
|
|
|
|
return new ::cppu::OPropertyArrayHelper(aProps);
|
|
|
|
}
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2001-04-06 12:47:18 +00:00
|
|
|
void OQueryController::deleteIterator()
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
|
|
|
if(m_pSqlIterator)
|
|
|
|
{
|
|
|
|
delete m_pSqlIterator->getParseTree();
|
|
|
|
m_pSqlIterator->dispose();
|
|
|
|
delete m_pSqlIterator;
|
2001-04-06 12:47:18 +00:00
|
|
|
m_pSqlIterator = NULL;
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-04-06 12:47:18 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::disposing()
|
|
|
|
{
|
2007-07-06 07:40:51 +00:00
|
|
|
OQueryController_PBase::disposing();
|
|
|
|
|
2001-04-06 12:47:18 +00:00
|
|
|
deleteIterator();
|
2001-02-05 08:35:57 +00:00
|
|
|
|
2001-02-14 13:54:12 +00:00
|
|
|
delete m_pParseContext;
|
|
|
|
|
2001-10-05 05:49:21 +00:00
|
|
|
clearFields();
|
|
|
|
OTableFields().swap(m_vUnUsedFieldsDesc);
|
2001-02-05 08:35:57 +00:00
|
|
|
|
|
|
|
::comphelper::disposeComponent(m_xComposer);
|
2001-03-01 14:17:55 +00:00
|
|
|
OJoinController::disposing();
|
2007-01-15 13:37:14 +00:00
|
|
|
OQueryController_PBase::disposing();
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-10-05 05:49:21 +00:00
|
|
|
void OQueryController::clearFields()
|
|
|
|
{
|
|
|
|
OTableFields().swap(m_vTableFieldDesc);
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2002-04-03 12:57:14 +00:00
|
|
|
FeatureState OQueryController::GetState(sal_uInt16 _nId) const
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
|
|
|
FeatureState aReturn;
|
2001-03-20 07:15:49 +00:00
|
|
|
aReturn.bEnabled = sal_True;
|
2001-02-05 08:35:57 +00:00
|
|
|
// (disabled automatically)
|
|
|
|
|
|
|
|
switch (_nId)
|
|
|
|
{
|
2004-03-19 11:12:55 +00:00
|
|
|
case ID_BROWSER_EDITDOC:
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( editingCommand() )
|
|
|
|
aReturn.bEnabled = sal_False;
|
|
|
|
else if ( editingView() && !m_xAlterView.is() )
|
2004-03-19 11:12:55 +00:00
|
|
|
aReturn.bEnabled = sal_False;
|
|
|
|
else
|
|
|
|
aReturn = OJoinController::GetState( _nId );
|
|
|
|
break;
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
case ID_BROWSER_ESACPEPROCESSING:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bChecked = !m_bEscapeProcessing;
|
|
|
|
aReturn.bEnabled = ( m_pSqlIterator != NULL ) && !m_bGraphicalDesign;
|
2002-02-06 06:57:18 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_RELATION_ADD_RELATION:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = isEditable() && m_bGraphicalDesign && m_vTableData.size() > 1;
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_SAVEASDOC:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = !editingCommand() && !editingView() && (!m_bGraphicalDesign || !(m_vTableFieldDesc.empty() || m_vTableData.empty()));
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_SAVEDOC:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = isModified() && (!m_bGraphicalDesign || !(m_vTableFieldDesc.empty() || m_vTableData.empty()));
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case SID_PRINTDOCDIRECT:
|
|
|
|
break;
|
|
|
|
case ID_BROWSER_CUT:
|
2002-08-19 07:01:32 +00:00
|
|
|
aReturn.bEnabled = isEditable() && getContainer() && getContainer()->isCutAllowed();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_COPY:
|
2001-08-23 13:39:09 +00:00
|
|
|
aReturn.bEnabled = getContainer() && getContainer()->isCopyAllowed();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_PASTE:
|
2002-08-19 07:01:32 +00:00
|
|
|
aReturn.bEnabled = isEditable() && getContainer() && getContainer()->isPasteAllowed();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_SQL:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = m_bEscapeProcessing && m_pSqlIterator;
|
|
|
|
aReturn.bChecked = m_bGraphicalDesign;
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_BROWSER_CLEAR_QUERY:
|
2002-08-19 07:01:32 +00:00
|
|
|
aReturn.bEnabled = isEditable() && (m_sStatement.getLength() || !m_vTableData.empty());
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_QUERY_VIEW_FUNCTIONS:
|
|
|
|
case SID_QUERY_VIEW_TABLES:
|
|
|
|
case SID_QUERY_VIEW_ALIASES:
|
2006-07-10 14:45:08 +00:00
|
|
|
aReturn.bChecked = getContainer() && getContainer()->isSlotEnabled(_nId);
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = m_bGraphicalDesign;
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_QUERY_DISTINCT_VALUES:
|
2007-11-21 16:12:55 +00:00
|
|
|
aReturn.bEnabled = m_bGraphicalDesign && isEditable();
|
2006-07-10 14:45:08 +00:00
|
|
|
aReturn.bChecked = m_bDistinct;
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_QUERY_EXECUTE:
|
|
|
|
aReturn.bEnabled = sal_True;
|
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_DB_QUERY_PREVIEW:
|
|
|
|
aReturn.bEnabled = sal_True;
|
2006-07-10 14:45:08 +00:00
|
|
|
aReturn.bChecked = getContainer() && getContainer()->getPreviewFrame().is();
|
2004-09-09 08:49:48 +00:00
|
|
|
break;
|
2003-04-15 15:04:18 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2002-10-04 11:32:24 +00:00
|
|
|
case ID_EDIT_QUERY_SQL:
|
|
|
|
break;
|
2002-12-12 12:44:48 +00:00
|
|
|
case ID_EDIT_QUERY_DESIGN:
|
|
|
|
break;
|
2002-10-04 11:32:24 +00:00
|
|
|
#endif
|
2002-04-02 06:09:02 +00:00
|
|
|
case ID_BROWSER_ADDTABLE:
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !m_bGraphicalDesign )
|
2002-04-02 06:09:02 +00:00
|
|
|
{
|
|
|
|
aReturn.bEnabled = sal_False;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
// run through
|
2001-02-28 09:18:26 +00:00
|
|
|
default:
|
|
|
|
aReturn = OJoinController::GetState(_nId);
|
|
|
|
break;
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
return aReturn;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2004-09-09 08:49:48 +00:00
|
|
|
void OQueryController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >& aArgs)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
|
|
|
switch(_nId)
|
|
|
|
{
|
|
|
|
case ID_BROWSER_ESACPEPROCESSING:
|
2007-11-21 16:12:55 +00:00
|
|
|
setEscapeProcessing_fireEvent( !m_bEscapeProcessing );
|
|
|
|
if ( !editingView() )
|
|
|
|
setModified(sal_True);
|
2001-02-07 12:32:20 +00:00
|
|
|
InvalidateFeature(ID_BROWSER_SQL);
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_SAVEASDOC:
|
|
|
|
case ID_BROWSER_SAVEDOC:
|
2001-04-24 13:28:56 +00:00
|
|
|
doSaveAsDoc(ID_BROWSER_SAVEASDOC == _nId);
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_RELATION_ADD_RELATION:
|
2002-02-06 06:57:18 +00:00
|
|
|
{
|
|
|
|
OJoinDesignView* pView = getJoinView();
|
|
|
|
if( pView )
|
|
|
|
static_cast<OQueryTableView*>(pView->getTableView())->createNewConnection();
|
|
|
|
}
|
|
|
|
break;
|
2001-02-05 08:35:57 +00:00
|
|
|
case SID_PRINTDOCDIRECT:
|
|
|
|
break;
|
|
|
|
case ID_BROWSER_CUT:
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->cut();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_COPY:
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->copy();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_PASTE:
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->paste();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_SQL:
|
2008-12-01 12:31:27 +00:00
|
|
|
{
|
2006-07-10 14:45:08 +00:00
|
|
|
if ( !getContainer()->checkStatement() )
|
|
|
|
break;
|
2008-12-01 12:31:27 +00:00
|
|
|
SQLExceptionInfo aError;
|
2006-07-10 14:45:08 +00:00
|
|
|
try
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2006-07-10 14:45:08 +00:00
|
|
|
::rtl::OUString aErrorMsg;
|
|
|
|
setStatement_fireEvent( getContainer()->getStatement() );
|
|
|
|
if(!m_sStatement.getLength() && m_pSqlIterator)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2006-07-10 14:45:08 +00:00
|
|
|
// change the view of the data
|
|
|
|
delete m_pSqlIterator->getParseTree();
|
|
|
|
m_pSqlIterator->setParseTree(NULL);
|
2007-11-21 16:12:55 +00:00
|
|
|
m_bGraphicalDesign = !m_bGraphicalDesign;
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_setViewMode( &aError );
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
::connectivity::OSQLParseNode* pNode = m_aSqlParser.parseTree(aErrorMsg,m_sStatement,m_bGraphicalDesign);
|
2008-12-01 12:31:27 +00:00
|
|
|
if ( pNode )
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
|
|
|
delete m_pSqlIterator->getParseTree();
|
2006-07-10 14:45:08 +00:00
|
|
|
m_pSqlIterator->setParseTree(pNode);
|
|
|
|
m_pSqlIterator->traverseAll();
|
2008-12-01 12:31:27 +00:00
|
|
|
|
2006-07-10 14:45:08 +00:00
|
|
|
if ( m_pSqlIterator->hasErrors() )
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
aError = m_pSqlIterator->getErrors();
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2006-07-10 14:45:08 +00:00
|
|
|
const OSQLTables& xTabs = m_pSqlIterator->getTables();
|
2008-12-01 12:31:27 +00:00
|
|
|
if ( m_pSqlIterator->getStatementType() != SQL_STATEMENT_SELECT || xTabs.begin() == xTabs.end() )
|
2006-07-10 14:45:08 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
aError = SQLException(
|
|
|
|
String( ModuleRes( STR_QRY_NOSELECT ) ),
|
|
|
|
NULL,
|
|
|
|
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) ),
|
|
|
|
1000,
|
|
|
|
Any()
|
|
|
|
);
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// change the view of the data
|
2007-11-21 16:12:55 +00:00
|
|
|
m_bGraphicalDesign = !m_bGraphicalDesign;
|
2006-07-10 14:45:08 +00:00
|
|
|
::rtl::OUString sNewStatement;
|
2006-12-13 15:55:02 +00:00
|
|
|
pNode->parseNodeToStr( sNewStatement, getConnection() );
|
2006-07-10 14:45:08 +00:00
|
|
|
setStatement_fireEvent( sNewStatement );
|
|
|
|
getContainer()->SaveUIConfig();
|
2007-11-01 14:34:59 +00:00
|
|
|
m_vTableConnectionData.clear();
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_setViewMode( &aError );
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
}
|
2006-07-10 14:45:08 +00:00
|
|
|
else
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
aError = SQLException(
|
|
|
|
String( ModuleRes( STR_QRY_SYNTAX ) ),
|
|
|
|
NULL,
|
|
|
|
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) ),
|
|
|
|
1000,
|
|
|
|
Any()
|
|
|
|
);
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
2002-04-02 06:09:02 +00:00
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2008-12-01 12:31:27 +00:00
|
|
|
catch(const SQLException& e)
|
2006-07-10 14:45:08 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
aError = ::cppu::getCaughtException();
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
2008-12-01 12:31:27 +00:00
|
|
|
catch(const Exception&)
|
2006-07-10 14:45:08 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2006-07-10 14:45:08 +00:00
|
|
|
}
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
if ( aError.isValid() )
|
|
|
|
showError( aError );
|
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if(m_bGraphicalDesign)
|
2006-07-10 14:45:08 +00:00
|
|
|
{
|
|
|
|
InvalidateFeature(ID_BROWSER_ADDTABLE);
|
|
|
|
InvalidateFeature(SID_RELATION_ADD_RELATION);
|
|
|
|
}
|
2008-12-01 12:31:27 +00:00
|
|
|
}
|
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_BROWSER_CLEAR_QUERY:
|
2001-04-30 12:02:01 +00:00
|
|
|
{
|
2002-08-19 07:01:32 +00:00
|
|
|
getUndoMgr()->EnterListAction( String( ModuleRes(STR_QUERY_UNDO_TABWINDELETE) ), String() );
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->clear();
|
2002-08-19 07:01:32 +00:00
|
|
|
getUndoMgr()->LeaveListAction();
|
2001-04-30 12:02:01 +00:00
|
|
|
|
2004-03-19 11:12:55 +00:00
|
|
|
setStatement_fireEvent( ::rtl::OUString() );
|
2007-11-21 16:12:55 +00:00
|
|
|
if(m_bGraphicalDesign)
|
2001-04-30 12:02:01 +00:00
|
|
|
InvalidateFeature(ID_BROWSER_ADDTABLE);
|
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
// InvalidateFeature(ID_BROWSER_QUERY_EXECUTE);
|
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_QUERY_VIEW_FUNCTIONS:
|
|
|
|
case SID_QUERY_VIEW_TABLES:
|
|
|
|
case SID_QUERY_VIEW_ALIASES:
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->setSlotEnabled(_nId,!getContainer()->isSlotEnabled(_nId));
|
2001-10-23 11:30:27 +00:00
|
|
|
setModified(sal_True);
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_QUERY_DISTINCT_VALUES:
|
2001-02-05 08:35:57 +00:00
|
|
|
m_bDistinct = !m_bDistinct;
|
2001-08-13 07:34:13 +00:00
|
|
|
setModified(sal_True);
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
|
|
|
case ID_BROWSER_QUERY_EXECUTE:
|
2002-04-02 05:40:36 +00:00
|
|
|
if ( getContainer()->checkStatement() )
|
2001-04-02 09:18:50 +00:00
|
|
|
executeQuery();
|
2001-02-05 08:35:57 +00:00
|
|
|
break;
|
2004-09-09 08:49:48 +00:00
|
|
|
case SID_DB_QUERY_PREVIEW:
|
|
|
|
try
|
|
|
|
{
|
2005-07-22 08:00:17 +00:00
|
|
|
Reference< ::com::sun::star::util::XCloseable > xCloseFrame( getContainer()->getPreviewFrame(), UNO_QUERY );
|
|
|
|
if ( xCloseFrame.is() )
|
2004-09-09 08:49:48 +00:00
|
|
|
{
|
2005-07-22 08:00:17 +00:00
|
|
|
try
|
|
|
|
{
|
|
|
|
xCloseFrame->close( sal_True );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
OSL_ENSURE( sal_False, "OQueryController::Execute(SID_DB_QUERY_PREVIEW): *nobody* is expected to veto closing the preview frame!" );
|
|
|
|
}
|
2004-09-09 08:49:48 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
Execute(ID_BROWSER_QUERY_EXECUTE,Sequence< PropertyValue >());
|
|
|
|
}
|
|
|
|
catch(Exception&)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
break;
|
2001-02-05 08:35:57 +00:00
|
|
|
case ID_QUERY_ZOOM_IN:
|
|
|
|
{
|
|
|
|
// m_aZoom *= Fraction(1,10);
|
2001-08-23 13:39:09 +00:00
|
|
|
// static_cast<OQueryViewSwitch*>(getView())->zoomTableView(m_aZoom);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ID_QUERY_ZOOM_OUT:
|
|
|
|
{
|
|
|
|
// if(m_aZoom != Fraction(1,1))
|
|
|
|
// m_aZoom /= Fraction(1,10);
|
2001-08-23 13:39:09 +00:00
|
|
|
// static_cast<OQueryViewSwitch*>(getView())->zoomTableView(m_aZoom);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
break;
|
2003-04-15 15:04:18 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2002-12-12 12:44:48 +00:00
|
|
|
case ID_EDIT_QUERY_DESIGN:
|
2002-10-04 11:32:24 +00:00
|
|
|
case ID_EDIT_QUERY_SQL:
|
|
|
|
{
|
|
|
|
::rtl::OUString aErrorMsg;
|
2004-03-19 11:12:55 +00:00
|
|
|
setStatement_fireEvent( getContainer()->getStatement() );
|
2007-11-21 16:12:55 +00:00
|
|
|
::connectivity::OSQLParseNode* pNode = m_aSqlParser.parseTree( aErrorMsg, m_sStatement, m_bGraphicalDesign );
|
2002-10-04 11:32:24 +00:00
|
|
|
if ( pNode )
|
|
|
|
{
|
|
|
|
Window* pView = getView();
|
2008-01-30 07:54:35 +00:00
|
|
|
ModalDialog* pWindow = new ModalDialog( pView, WB_STDMODAL | WB_SIZEMOVE | WB_CENTER );
|
|
|
|
pWindow->SetSizePixel( ::Size( pView->GetSizePixel().Width() / 2, pView->GetSizePixel().Height() / 2 ) );
|
|
|
|
SvTreeListBox* pTreeBox = new SvTreeListBox( pWindow, WB_BORDER | WB_HASLINES | WB_HASBUTTONS | WB_HASBUTTONSATROOT | WB_HASLINESATROOT | WB_VSCROLL );
|
|
|
|
pTreeBox->SetPosSizePixel( ::Point( 6, 6 ), ::Size( pWindow->GetSizePixel().Width() - 12, pWindow->GetSizePixel().Height() - 12 ));
|
|
|
|
pTreeBox->SetNodeDefaultImages();
|
2002-10-04 11:32:24 +00:00
|
|
|
|
2002-12-12 12:44:48 +00:00
|
|
|
if ( _nId == ID_EDIT_QUERY_DESIGN )
|
|
|
|
{
|
|
|
|
::connectivity::OSQLParseNode* pTemp = pNode ? pNode->getChild(3)->getChild(1) : NULL;
|
|
|
|
// no where clause found
|
|
|
|
if ( pTemp && !pTemp->isLeaf() )
|
|
|
|
{
|
|
|
|
::connectivity::OSQLParseNode * pCondition = pTemp->getChild(1);
|
|
|
|
if ( pCondition ) // no where clause
|
|
|
|
{
|
|
|
|
::connectivity::OSQLParseNode::negateSearchCondition(pCondition);
|
|
|
|
::connectivity::OSQLParseNode *pNodeTmp = pTemp->getChild(1);
|
|
|
|
|
|
|
|
::connectivity::OSQLParseNode::disjunctiveNormalForm(pNodeTmp);
|
|
|
|
pNodeTmp = pTemp->getChild(1);
|
|
|
|
::connectivity::OSQLParseNode::absorptions(pNodeTmp);
|
|
|
|
pNodeTmp = pTemp->getChild(1);
|
2008-12-01 12:31:27 +00:00
|
|
|
} // if ( pCondition ) // no where clause
|
|
|
|
::rtl::OUString sTemp;
|
|
|
|
pNode->parseNodeToStr(sTemp,getConnection());
|
|
|
|
getContainer()->setStatement(sTemp);
|
|
|
|
|
2002-12-12 12:44:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-10-04 11:32:24 +00:00
|
|
|
insertParseTree(pTreeBox,pNode);
|
|
|
|
|
|
|
|
pTreeBox->Show();
|
|
|
|
pWindow->Execute();
|
|
|
|
|
|
|
|
delete pTreeBox;
|
|
|
|
delete pWindow;
|
|
|
|
delete pNode;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
#endif
|
2001-02-28 09:18:26 +00:00
|
|
|
default:
|
2004-09-09 08:49:48 +00:00
|
|
|
OJoinController::Execute(_nId,aArgs);
|
2001-02-28 09:18:26 +00:00
|
|
|
return; // else we would invalidate twice
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
InvalidateFeature(_nId);
|
|
|
|
}
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::impl_showAutoSQLViewError( const ::com::sun::star::uno::Any& _rErrorDetails )
|
|
|
|
{
|
|
|
|
SQLContext aErrorContext;
|
|
|
|
aErrorContext.Message = lcl_getObjectResourceString( STR_ERROR_PARSING_STATEMENT, m_nCommandType );
|
|
|
|
aErrorContext.Context = *this;
|
|
|
|
aErrorContext.Details = lcl_getObjectResourceString( STR_INFO_OPENING_IN_SQL_VIEW, m_nCommandType );
|
|
|
|
aErrorContext.NextException = _rErrorDetails;
|
|
|
|
showError( aErrorContext );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
bool OQueryController::impl_setViewMode( ::dbtools::SQLExceptionInfo* _pErrorInfo )
|
|
|
|
{
|
|
|
|
OSL_PRECOND( getContainer(), "OQueryController::impl_setViewMode: illegal call!" );
|
|
|
|
|
|
|
|
bool wasModified = isModified();
|
|
|
|
|
|
|
|
SQLExceptionInfo aError;
|
|
|
|
bool bSuccess = getContainer()->switchView( &aError );
|
|
|
|
if ( !bSuccess )
|
|
|
|
{
|
|
|
|
m_bGraphicalDesign = !m_bGraphicalDesign;
|
|
|
|
// restore old state
|
|
|
|
getContainer()->switchView( NULL );
|
|
|
|
// don't pass &aError here, this would overwrite the error which the first switchView call
|
|
|
|
// returned in this location.
|
|
|
|
if ( _pErrorInfo )
|
|
|
|
*_pErrorInfo = aError;
|
|
|
|
else
|
|
|
|
showError( aError );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ensureToolbars( *this, m_bGraphicalDesign );
|
|
|
|
}
|
|
|
|
|
|
|
|
setModified( wasModified );
|
|
|
|
return bSuccess;
|
|
|
|
}
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2006-07-10 14:45:08 +00:00
|
|
|
void OQueryController::impl_initialize()
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2006-07-10 14:45:08 +00:00
|
|
|
OJoinController::impl_initialize();
|
2001-02-05 08:35:57 +00:00
|
|
|
|
2006-07-10 14:45:08 +00:00
|
|
|
const NamedValueCollection& rArguments( getInitParams() );
|
2001-02-05 08:35:57 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
::rtl::OUString sCommand;
|
|
|
|
m_nCommandType = CommandType::QUERY;
|
2006-07-10 14:45:08 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// legacy parameters first (later overwritten by regular parameters)
|
2006-07-10 14:45:08 +00:00
|
|
|
::rtl::OUString sIndependentSQLCommand;
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( rArguments.get_ensureType( "IndependentSQLCommand", sIndependentSQLCommand ) )
|
|
|
|
{
|
|
|
|
OSL_ENSURE( false, "OQueryController::impl_initialize: IndependentSQLCommand is regognized for compatibility only!" );
|
|
|
|
sCommand = sIndependentSQLCommand;
|
|
|
|
m_nCommandType = CommandType::COMMAND;
|
|
|
|
}
|
|
|
|
|
|
|
|
::rtl::OUString sCurrentQuery;
|
|
|
|
if ( rArguments.get_ensureType( "CurrentQuery", sCurrentQuery ) )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
OSL_ENSURE( false, "OQueryController::impl_initialize: CurrentQuery is regognized for compatibility only!" );
|
|
|
|
sCommand = sCurrentQuery;
|
|
|
|
m_nCommandType = CommandType::QUERY;
|
|
|
|
}
|
|
|
|
|
|
|
|
sal_Bool bCreateView( sal_False );
|
2008-01-29 07:52:22 +00:00
|
|
|
if ( rArguments.get_ensureType( "CreateView", bCreateView ) && bCreateView )
|
2007-11-21 16:12:55 +00:00
|
|
|
{
|
|
|
|
OSL_ENSURE( false, "OQueryController::impl_initialize: CurrentQuery is regognized for compatibility only!" );
|
|
|
|
m_nCommandType = CommandType::TABLE;
|
|
|
|
}
|
2006-07-10 14:45:08 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// non-legacy parameters which overwrite the legacy parameters
|
|
|
|
rArguments.get_ensureType( (::rtl::OUString)PROPERTY_COMMAND, sCommand );
|
2008-01-30 07:54:35 +00:00
|
|
|
rArguments.get_ensureType( (::rtl::OUString)PROPERTY_COMMAND_TYPE, m_nCommandType );
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
// translate Command/Type into proper members
|
|
|
|
// TODO/Later: all this (including those members) should be hidden behind some abstact interface,
|
|
|
|
// which is implemented for all the three commands
|
|
|
|
switch ( m_nCommandType )
|
|
|
|
{
|
|
|
|
case CommandType::QUERY:
|
|
|
|
m_sName = sCommand;
|
|
|
|
break;
|
|
|
|
case CommandType::TABLE:
|
|
|
|
m_sName = sCommand;
|
|
|
|
break;
|
|
|
|
case CommandType::COMMAND:
|
|
|
|
setStatement_fireEvent( sCommand );
|
2004-03-19 11:12:55 +00:00
|
|
|
m_sName = ::rtl::OUString();
|
2007-11-21 16:12:55 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
OSL_ENSURE( false, "OQueryController::impl_initialize: logic error in code!" );
|
|
|
|
throw RuntimeException();
|
|
|
|
}
|
|
|
|
|
|
|
|
// more legacy parameters
|
|
|
|
sal_Bool bGraphicalDesign( sal_True );
|
|
|
|
if ( rArguments.get_ensureType( (::rtl::OUString)PROPERTY_QUERYDESIGNVIEW, bGraphicalDesign ) )
|
|
|
|
{
|
|
|
|
OSL_ENSURE( false, "OQueryController::impl_initialize: QueryDesignView is regognized for compatibility only!" );
|
|
|
|
m_bGraphicalDesign = bGraphicalDesign;
|
|
|
|
}
|
|
|
|
|
|
|
|
// more non-legacy
|
|
|
|
rArguments.get_ensureType( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, m_bGraphicalDesign );
|
|
|
|
|
|
|
|
bool bEscapeProcessing( sal_True );
|
|
|
|
if ( rArguments.get_ensureType( (::rtl::OUString)PROPERTY_ESCAPE_PROCESSING, bEscapeProcessing ) )
|
|
|
|
{
|
|
|
|
setEscapeProcessing_fireEvent( bEscapeProcessing );
|
|
|
|
|
|
|
|
OSL_ENSURE( m_bEscapeProcessing || !m_bGraphicalDesign, "OQueryController::impl_initialize: can't do the graphical design without escape processing!" );
|
|
|
|
if ( !m_bEscapeProcessing )
|
|
|
|
m_bGraphicalDesign = false;
|
2001-07-18 07:51:19 +00:00
|
|
|
}
|
2001-02-23 14:04:37 +00:00
|
|
|
|
2001-08-14 11:08:52 +00:00
|
|
|
if ( !ensureConnected( sal_False ) )
|
2001-07-18 07:51:19 +00:00
|
|
|
{ // we have no connection so what else should we do
|
2007-11-21 16:12:55 +00:00
|
|
|
m_bGraphicalDesign = sal_False;
|
|
|
|
if ( editingView() )
|
2001-03-14 09:35:11 +00:00
|
|
|
{
|
2007-07-06 07:40:51 +00:00
|
|
|
connectionLostMessage();
|
2001-07-18 07:51:19 +00:00
|
|
|
throw SQLException();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// check the view capabilities
|
|
|
|
if ( isConnected() && editingView() )
|
2001-07-18 07:51:19 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XViewsSupplier > xViewsSup( getConnection(), UNO_QUERY );
|
|
|
|
Reference< XNameAccess > xViews;
|
|
|
|
if ( xViewsSup.is() )
|
|
|
|
xViews = xViewsSup->getViews();
|
|
|
|
|
|
|
|
if ( !xViews.is() )
|
|
|
|
{ // we can't create views so we ask if the user wants to create a query instead
|
|
|
|
m_nCommandType = CommandType::QUERY;
|
|
|
|
sal_Bool bClose = sal_False;
|
|
|
|
{
|
|
|
|
String aTitle( ModuleRes( STR_QUERYDESIGN_NO_VIEW_SUPPORT ) );
|
|
|
|
String aMessage( ModuleRes( STR_QUERYDESIGN_NO_VIEW_ASK ) );
|
|
|
|
ODataView* pWindow = getView();
|
|
|
|
OSQLMessageBox aDlg( pWindow, aTitle, aMessage, WB_YES_NO | WB_DEF_YES, OSQLMessageBox::Query );
|
|
|
|
bClose = aDlg.Execute() == RET_NO;
|
|
|
|
}
|
|
|
|
if ( bClose )
|
|
|
|
throw VetoException();
|
|
|
|
}
|
|
|
|
|
|
|
|
// now if we are to edit an existing view, check whether this is possible
|
|
|
|
if ( m_sName.getLength() )
|
2001-07-18 07:51:19 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Any aView( xViews->getByName( m_sName ) );
|
|
|
|
// will throw if there is no such view
|
|
|
|
if ( !( aView >>= m_xAlterView ) )
|
|
|
|
{
|
|
|
|
throw IllegalArgumentException(
|
|
|
|
::rtl::OUString( String( ModuleRes( STR_NO_ALTER_VIEW_SUPPORT ) ) ),
|
|
|
|
*this,
|
|
|
|
1
|
|
|
|
);
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2001-03-14 09:35:11 +00:00
|
|
|
}
|
2001-07-18 07:51:19 +00:00
|
|
|
}
|
2001-08-14 11:08:52 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
OSL_ENSURE(getDataSource().is(),"OQueryController::impl_initialize: need a datasource!");
|
2001-08-14 11:08:52 +00:00
|
|
|
|
2001-04-24 13:28:56 +00:00
|
|
|
try
|
|
|
|
{
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->initialize();
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_reset();
|
|
|
|
|
|
|
|
bool bAttemptedGraphicalDesign = m_bGraphicalDesign;
|
|
|
|
SQLExceptionInfo aError;
|
|
|
|
impl_setViewMode( &aError );
|
|
|
|
if ( aError.isValid() && bAttemptedGraphicalDesign && !m_bGraphicalDesign )
|
|
|
|
{
|
|
|
|
if ( !editingView() )
|
|
|
|
{
|
|
|
|
impl_showAutoSQLViewError( aError.get() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-09 07:25:38 +00:00
|
|
|
|
2001-02-06 08:31:46 +00:00
|
|
|
getUndoMgr()->Clear();
|
2001-10-23 11:30:27 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( ( m_bGraphicalDesign )
|
|
|
|
&& ( ( !m_sName.getLength() && !editingCommand() )
|
|
|
|
|| ( !m_sStatement.getLength() && editingCommand() )
|
2004-03-19 11:12:55 +00:00
|
|
|
)
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Application::PostUserEvent( LINK( this, OQueryController, OnExecuteAddTable ) );
|
|
|
|
}
|
|
|
|
|
2001-02-06 08:31:46 +00:00
|
|
|
setModified(sal_False);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-10-08 06:32:36 +00:00
|
|
|
catch(SQLException& e)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2008-05-05 15:06:34 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2001-10-08 06:32:36 +00:00
|
|
|
// we caught an exception so we switch to text only mode
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
m_bGraphicalDesign = sal_False;
|
2001-10-08 06:32:36 +00:00
|
|
|
getContainer()->initialize();
|
|
|
|
ODataView* pWindow = getView();
|
|
|
|
OSQLMessageBox(pWindow,e).Execute();
|
|
|
|
}
|
|
|
|
throw;
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
}
|
2004-10-22 11:07:34 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
2006-06-20 02:29:57 +00:00
|
|
|
void OQueryController::onLoadedMenu(const Reference< ::com::sun::star::frame::XLayoutManager >& /*_xLayoutManager*/)
|
2004-10-22 11:07:34 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
ensureToolbars( *this, m_bGraphicalDesign );
|
2004-10-22 11:07:34 +00:00
|
|
|
}
|
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2008-04-04 13:03:40 +00:00
|
|
|
::rtl::OUString OQueryController::getPrivateTitle( ) const
|
2002-10-31 13:59:53 +00:00
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
::rtl::OUString sName = m_sName;
|
|
|
|
if ( !sName.getLength() )
|
2002-10-31 13:59:53 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !editingCommand() )
|
2002-10-31 13:59:53 +00:00
|
|
|
{
|
2004-11-16 08:30:18 +00:00
|
|
|
::vos::OGuard aSolarGuard(Application::GetSolarMutex());
|
2008-12-01 12:31:27 +00:00
|
|
|
::osl::MutexGuard aGuard( getMutex() );
|
2008-04-04 13:03:40 +00:00
|
|
|
String aDefaultName = String( ModuleRes( editingView() ? STR_VIEW_TITLE : STR_QRY_TITLE ) );
|
|
|
|
sName = aDefaultName.GetToken(0,' ');
|
|
|
|
sName += ::rtl::OUString::valueOf(getCurrentStartNumber());
|
2002-10-31 13:59:53 +00:00
|
|
|
}
|
|
|
|
}
|
2008-04-04 13:03:40 +00:00
|
|
|
return sName;
|
2002-10-31 13:59:53 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-02-05 08:35:57 +00:00
|
|
|
void OQueryController::setQueryComposer()
|
|
|
|
{
|
2001-08-14 11:08:52 +00:00
|
|
|
if(isConnected())
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-08-14 11:08:52 +00:00
|
|
|
Reference< XSQLQueryComposerFactory > xFactory(getConnection(), UNO_QUERY);
|
2001-02-05 08:35:57 +00:00
|
|
|
OSL_ENSURE(xFactory.is(),"Connection doesn't support a querycomposer");
|
2005-09-23 11:44:40 +00:00
|
|
|
if ( xFactory.is() && getContainer() )
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
m_xComposer = xFactory->createQueryComposer();
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->setStatement(m_sStatement);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
catch (Exception&)
|
|
|
|
{
|
|
|
|
m_xComposer = NULL;
|
|
|
|
}
|
|
|
|
OSL_ENSURE(m_xComposer.is(),"No querycomposer available!");
|
2001-08-14 11:08:52 +00:00
|
|
|
Reference<XTablesSupplier> xTablesSup(getConnection(), UNO_QUERY);
|
2001-04-06 12:47:18 +00:00
|
|
|
deleteIterator();
|
2006-07-10 14:45:08 +00:00
|
|
|
m_pSqlIterator = new ::connectivity::OSQLParseTreeIterator( getConnection(), xTablesSup->getTables(), m_aSqlParser, NULL );
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-08-23 13:39:09 +00:00
|
|
|
sal_Bool OQueryController::Construct(Window* pParent)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-08-23 13:39:09 +00:00
|
|
|
// TODO: we have to check if we should create the text- or the design- view
|
|
|
|
|
2008-06-25 11:55:43 +00:00
|
|
|
m_pView = new OQueryContainerWindow( pParent, *this, getORB() );
|
2001-08-23 13:39:09 +00:00
|
|
|
|
2007-01-15 13:37:14 +00:00
|
|
|
return OJoinController::Construct(pParent);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-08-23 13:39:09 +00:00
|
|
|
|
2001-02-05 08:35:57 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2001-08-23 13:39:09 +00:00
|
|
|
OJoinDesignView* OQueryController::getJoinView()
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-08-23 13:39:09 +00:00
|
|
|
return getContainer()->getDesignView();
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2004-11-16 13:32:49 +00:00
|
|
|
void OQueryController::describeSupportedFeatures()
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2004-11-16 13:32:49 +00:00
|
|
|
OJoinController::describeSupportedFeatures();
|
2005-03-10 15:53:56 +00:00
|
|
|
implDescribeSupportedFeature( ".uno:SaveAs", ID_BROWSER_SAVEASDOC, CommandGroup::DOCUMENT );
|
2004-11-16 13:32:49 +00:00
|
|
|
implDescribeSupportedFeature( ".uno:SbaNativeSql", ID_BROWSER_ESACPEPROCESSING,CommandGroup::FORMAT );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBViewFunctions", SID_QUERY_VIEW_FUNCTIONS, CommandGroup::VIEW );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBViewTableNames", SID_QUERY_VIEW_TABLES, CommandGroup::VIEW );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBViewAliases", SID_QUERY_VIEW_ALIASES, CommandGroup::VIEW );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBDistinctValues", SID_QUERY_DISTINCT_VALUES, CommandGroup::FORMAT );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBChangeDesignMode",ID_BROWSER_SQL, CommandGroup::VIEW );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBClearQuery", SID_BROWSER_CLEAR_QUERY, CommandGroup::EDIT );
|
|
|
|
implDescribeSupportedFeature( ".uno:SbaExecuteSql", ID_BROWSER_QUERY_EXECUTE, CommandGroup::VIEW );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBAddRelation", SID_RELATION_ADD_RELATION, CommandGroup::EDIT );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBQueryPreview", SID_DB_QUERY_PREVIEW, CommandGroup::VIEW );
|
|
|
|
|
2003-04-15 15:04:18 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2004-11-16 13:32:49 +00:00
|
|
|
implDescribeSupportedFeature( ".uno:DBShowParseTree", ID_EDIT_QUERY_SQL );
|
|
|
|
implDescribeSupportedFeature( ".uno:DBMakeDisjunct", ID_EDIT_QUERY_DESIGN );
|
2002-10-04 11:32:24 +00:00
|
|
|
#endif
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::setModified(sal_Bool _bModified)
|
|
|
|
{
|
2001-02-28 09:18:26 +00:00
|
|
|
OJoinController::setModified(_bModified);
|
2004-09-09 08:49:48 +00:00
|
|
|
InvalidateFeature(SID_BROWSER_CLEAR_QUERY);
|
2001-02-05 08:35:57 +00:00
|
|
|
InvalidateFeature(ID_BROWSER_SAVEASDOC);
|
|
|
|
InvalidateFeature(ID_BROWSER_QUERY_EXECUTE);
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void SAL_CALL OQueryController::disposing( const EventObject& Source ) throw(RuntimeException)
|
|
|
|
{
|
2002-10-08 06:26:17 +00:00
|
|
|
::vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
if ( getContainer() && Source.Source.is() )
|
2001-06-08 07:42:26 +00:00
|
|
|
{
|
2008-03-06 17:30:06 +00:00
|
|
|
if ( Source.Source == m_aCurrentFrame.getFrame() )
|
2001-06-08 07:42:26 +00:00
|
|
|
{ // our frame is beeing disposed -> close the preview window (if we have one)
|
2008-03-06 17:30:06 +00:00
|
|
|
Reference< XFrame > xPreviewFrame( getContainer()->getPreviewFrame() );
|
|
|
|
::comphelper::disposeComponent( xPreviewFrame );
|
2001-06-08 07:42:26 +00:00
|
|
|
}
|
2008-03-06 17:30:06 +00:00
|
|
|
else if ( Source.Source == getContainer()->getPreviewFrame() )
|
2001-06-08 07:42:26 +00:00
|
|
|
{
|
2001-08-23 13:39:09 +00:00
|
|
|
getContainer()->disposingPreview();
|
2001-06-08 07:42:26 +00:00
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-06-08 07:42:26 +00:00
|
|
|
|
|
|
|
OJoinController::disposing(Source);
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-08-14 11:08:52 +00:00
|
|
|
void OQueryController::reconnect(sal_Bool _bUI)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-04-06 12:47:18 +00:00
|
|
|
deleteIterator();
|
2001-02-05 08:35:57 +00:00
|
|
|
::comphelper::disposeComponent(m_xComposer);
|
2001-03-14 09:35:11 +00:00
|
|
|
|
2001-08-14 11:08:52 +00:00
|
|
|
OJoinController::reconnect( _bUI );
|
|
|
|
|
|
|
|
if (isConnected())
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-02-28 09:18:26 +00:00
|
|
|
setQueryComposer();
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-03-14 09:35:11 +00:00
|
|
|
else
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
if(m_bGraphicalDesign)
|
2001-03-14 09:35:11 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
m_bGraphicalDesign = sal_False;
|
2001-03-14 09:35:11 +00:00
|
|
|
// don't call Execute(SQL) because this changes the sql statement
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_setViewMode( NULL );
|
2001-03-14 09:35:11 +00:00
|
|
|
}
|
|
|
|
InvalidateAll();
|
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2004-08-02 15:16:32 +00:00
|
|
|
void OQueryController::saveViewSettings(Sequence<PropertyValue>& _rViewProps)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2001-10-05 05:49:21 +00:00
|
|
|
OTableFields::const_iterator aFieldIter = m_vTableFieldDesc.begin();
|
2009-07-03 12:24:35 +00:00
|
|
|
OTableFields::const_iterator aFieldEnd = m_vTableFieldDesc.end();
|
2001-10-23 11:30:27 +00:00
|
|
|
sal_Int32 nCount = 0;
|
2009-07-03 12:24:35 +00:00
|
|
|
for(;aFieldIter != aFieldEnd;++aFieldIter)
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
|
|
|
if(!(*aFieldIter)->IsEmpty())
|
|
|
|
++nCount;
|
|
|
|
}
|
2004-08-02 15:16:32 +00:00
|
|
|
|
|
|
|
sal_Int32 nLen = _rViewProps.getLength();
|
|
|
|
|
|
|
|
_rViewProps.realloc( nLen + 2 + (nCount != 0 ? 1 : 0) );
|
|
|
|
PropertyValue *pIter = _rViewProps.getArray() + nLen;
|
|
|
|
|
|
|
|
if ( nCount != 0 )
|
2001-05-02 12:57:57 +00:00
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Fields"));
|
|
|
|
|
|
|
|
Sequence<PropertyValue> aFields(nCount);
|
|
|
|
PropertyValue *pFieldsIter = aFields.getArray();
|
|
|
|
// the fielddata
|
|
|
|
aFieldIter = m_vTableFieldDesc.begin();
|
2009-07-03 12:24:35 +00:00
|
|
|
for(sal_Int32 i = 1;aFieldIter !=aFieldEnd;++aFieldIter,++i)
|
2004-08-02 15:16:32 +00:00
|
|
|
{
|
|
|
|
if ( !(*aFieldIter)->IsEmpty() )
|
|
|
|
{
|
|
|
|
pFieldsIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Field")) + ::rtl::OUString::valueOf(i);
|
|
|
|
(*aFieldIter)->Save(*pFieldsIter++);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pIter->Value <<= aFields;
|
|
|
|
++pIter;
|
2001-05-02 12:57:57 +00:00
|
|
|
}
|
2004-08-02 15:16:32 +00:00
|
|
|
|
|
|
|
pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SplitterPosition"));
|
|
|
|
pIter->Value <<= m_nSplitPos;
|
|
|
|
++pIter;
|
|
|
|
pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleRows"));
|
|
|
|
pIter->Value <<= m_nVisibleRows;
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2004-08-02 15:16:32 +00:00
|
|
|
void OQueryController::loadViewSettings(const Sequence<PropertyValue>& _rViewProps)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
const PropertyValue *pIter = _rViewProps.getConstArray();
|
|
|
|
const PropertyValue *pEnd = pIter + _rViewProps.getLength();
|
|
|
|
for (; pIter != pEnd; ++pIter)
|
2001-02-05 08:35:57 +00:00
|
|
|
{
|
2008-12-09 07:25:38 +00:00
|
|
|
if ( pIter->Name.equalsAscii("SplitterPosition") )
|
2004-08-02 15:16:32 +00:00
|
|
|
{
|
|
|
|
pIter->Value >>= m_nSplitPos;
|
|
|
|
}
|
2008-12-09 07:25:38 +00:00
|
|
|
else if ( pIter->Name.equalsAscii("VisibleRows") )
|
2001-02-07 11:44:13 +00:00
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
pIter->Value >>= m_nVisibleRows;
|
|
|
|
}
|
2008-12-09 07:25:38 +00:00
|
|
|
else if ( pIter->Name.equalsAscii("Fields") )
|
2004-08-02 15:16:32 +00:00
|
|
|
{
|
2008-12-09 07:25:38 +00:00
|
|
|
pIter->Value >>= m_aFieldInformation;
|
2001-02-07 11:44:13 +00:00
|
|
|
}
|
|
|
|
}
|
2001-02-05 08:35:57 +00:00
|
|
|
}
|
2001-03-01 12:29:19 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2008-12-09 07:25:38 +00:00
|
|
|
sal_Int32 OQueryController::getColWidth(sal_uInt16 _nColPos) const
|
|
|
|
{
|
|
|
|
if ( _nColPos < m_aFieldInformation.getLength() )
|
|
|
|
{
|
|
|
|
::std::auto_ptr<OTableFieldDesc> pField( new OTableFieldDesc());
|
|
|
|
pField->Load(m_aFieldInformation[_nColPos]);
|
|
|
|
return pField->GetColWidth();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference<XNameAccess> OQueryController::getObjectContainer() const
|
2001-03-14 09:35:11 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XNameAccess > xElements;
|
|
|
|
if ( editingView() )
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XViewsSupplier > xViewsSupp( getConnection(), UNO_QUERY );
|
|
|
|
if ( xViewsSupp.is() )
|
|
|
|
xElements = xViewsSupp->getViews();
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2001-03-14 09:35:11 +00:00
|
|
|
else
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XQueriesSupplier > xQueriesSupp( getConnection(), UNO_QUERY );
|
|
|
|
if ( xQueriesSupp.is() )
|
|
|
|
xElements = xQueriesSupp->getQueries();
|
2001-04-24 13:28:56 +00:00
|
|
|
else
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XQueryDefinitionsSupplier > xQueryDefsSupp( getDataSource(), UNO_QUERY );
|
|
|
|
if ( xQueryDefsSupp.is() )
|
|
|
|
xElements = xQueryDefsSupp->getQueryDefinitions();
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2001-03-14 09:35:11 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
OSL_ENSURE( xElements.is(), "OQueryController::getObjectContainer: unable to obtain the container!" );
|
2001-04-24 13:28:56 +00:00
|
|
|
return xElements;
|
2001-03-14 09:35:11 +00:00
|
|
|
}
|
2002-04-02 05:40:36 +00:00
|
|
|
|
2001-03-14 09:35:11 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2001-04-02 09:18:50 +00:00
|
|
|
void OQueryController::executeQuery()
|
|
|
|
{
|
|
|
|
// we don't need to check the connection here because we already check the composer
|
|
|
|
// which can't live without his connection
|
2004-03-19 11:12:55 +00:00
|
|
|
::rtl::OUString sTranslatedStmt = translateStatement( false );
|
2001-08-13 07:34:13 +00:00
|
|
|
|
2004-08-02 15:16:32 +00:00
|
|
|
::rtl::OUString sDataSourceName = getDataSourceName();
|
|
|
|
if ( sDataSourceName.getLength() && sTranslatedStmt.getLength() )
|
2001-04-02 09:18:50 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2008-03-06 17:30:06 +00:00
|
|
|
getContainer()->showPreview( getFrame() );
|
2004-09-09 08:49:48 +00:00
|
|
|
InvalidateFeature(SID_DB_QUERY_PREVIEW);
|
2001-06-08 07:42:26 +00:00
|
|
|
|
2001-04-02 09:18:50 +00:00
|
|
|
URL aWantToDispatch;
|
|
|
|
aWantToDispatch.Complete = ::rtl::OUString::createFromAscii(".component:DB/DataSourceBrowser");
|
|
|
|
|
2006-07-10 14:45:08 +00:00
|
|
|
::rtl::OUString sFrameName( FRAME_NAME_QUERY_PREVIEW );
|
2001-04-02 09:18:50 +00:00
|
|
|
sal_Int32 nSearchFlags = FrameSearchFlag::CHILDREN;
|
|
|
|
|
2002-04-02 05:40:36 +00:00
|
|
|
Reference< XDispatch> xDisp;
|
2008-03-06 17:30:06 +00:00
|
|
|
Reference< XDispatchProvider> xProv( getFrame()->findFrame( sFrameName, nSearchFlags ), UNO_QUERY );
|
2001-04-02 09:18:50 +00:00
|
|
|
if(!xProv.is())
|
|
|
|
{
|
2008-03-06 17:30:06 +00:00
|
|
|
xProv.set( getFrame(), UNO_QUERY );
|
2001-04-02 09:18:50 +00:00
|
|
|
if (xProv.is())
|
|
|
|
xDisp = xProv->queryDispatch(aWantToDispatch, sFrameName, nSearchFlags);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
xDisp = xProv->queryDispatch(aWantToDispatch, sFrameName, FrameSearchFlag::SELF);
|
|
|
|
}
|
|
|
|
if (xDisp.is())
|
|
|
|
{
|
2008-03-06 17:30:06 +00:00
|
|
|
Sequence< PropertyValue> aProps(9);
|
2001-04-02 09:18:50 +00:00
|
|
|
aProps[0].Name = PROPERTY_DATASOURCENAME;
|
2004-08-02 15:16:32 +00:00
|
|
|
aProps[0].Value <<= sDataSourceName;
|
2001-04-02 09:18:50 +00:00
|
|
|
|
2008-01-30 07:54:35 +00:00
|
|
|
aProps[1].Name = PROPERTY_COMMAND_TYPE;
|
2001-04-02 09:18:50 +00:00
|
|
|
aProps[1].Value <<= CommandType::COMMAND;
|
|
|
|
|
|
|
|
aProps[2].Name = PROPERTY_COMMAND;
|
|
|
|
aProps[2].Value <<= sTranslatedStmt;
|
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[3].Name = PROPERTY_ENABLE_BROWSER;
|
2001-04-02 09:18:50 +00:00
|
|
|
aProps[3].Value = ::cppu::bool2any(sal_False);
|
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[4].Name = PROPERTY_ACTIVE_CONNECTION;
|
|
|
|
aProps[4].Value <<= getConnection();
|
2001-04-02 09:18:50 +00:00
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[5].Name = PROPERTY_UPDATE_CATALOGNAME;
|
|
|
|
aProps[5].Value <<= m_sUpdateCatalogName;
|
2001-04-02 09:18:50 +00:00
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[6].Name = PROPERTY_UPDATE_SCHEMANAME;
|
|
|
|
aProps[6].Value <<= m_sUpdateSchemaName;
|
2001-04-02 09:18:50 +00:00
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[7].Name = PROPERTY_UPDATE_TABLENAME;
|
|
|
|
aProps[7].Value <<= m_sUpdateTableName;
|
2001-04-02 09:18:50 +00:00
|
|
|
|
2008-03-06 17:30:06 +00:00
|
|
|
aProps[8].Name = PROPERTY_ESCAPE_PROCESSING;
|
|
|
|
aProps[8].Value = ::cppu::bool2any(m_bEscapeProcessing);
|
2001-04-02 09:18:50 +00:00
|
|
|
|
|
|
|
xDisp->dispatch(aWantToDispatch, aProps);
|
|
|
|
// check the state of the beamer
|
|
|
|
// be notified when the beamer frame is closed
|
2008-03-06 17:30:06 +00:00
|
|
|
Reference< XComponent > xComponent( getFrame()->findFrame( sFrameName, nSearchFlags ), UNO_QUERY );
|
2001-04-02 09:18:50 +00:00
|
|
|
if (xComponent.is())
|
|
|
|
{
|
2001-08-23 13:39:09 +00:00
|
|
|
OSL_ENSURE(Reference< XFrame >(xComponent, UNO_QUERY).get() == getContainer()->getPreviewFrame().get(),
|
2001-06-08 07:42:26 +00:00
|
|
|
"OQueryController::executeQuery: oops ... which window do I have here?");
|
2002-04-02 05:40:36 +00:00
|
|
|
Reference< XEventListener> xEvtL((::cppu::OWeakObject*)this,UNO_QUERY);
|
2001-04-02 09:18:50 +00:00
|
|
|
xComponent->addEventListener(xEvtL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
OSL_ENSURE(0,"Couldn't create a beamer window!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch(const Exception&)
|
|
|
|
{
|
|
|
|
OSL_ENSURE(0,"Couldn't create a beamer window!");
|
|
|
|
}
|
|
|
|
}
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-10-01 10:57:41 +00:00
|
|
|
sal_Bool OQueryController::askForNewName(const Reference<XNameAccess>& _xElements,sal_Bool _bSaveAs)
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
OSL_ENSURE( !editingCommand(), "OQueryController::askForNewName: not to be called when designing an independent statement!" );
|
|
|
|
if ( editingCommand() )
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
OSL_PRECOND( _xElements.is(), "OQueryController::askForNewName: invalid container!" );
|
|
|
|
if ( !_xElements.is() )
|
2004-03-19 11:12:55 +00:00
|
|
|
return sal_False;
|
|
|
|
|
2001-10-01 10:57:41 +00:00
|
|
|
sal_Bool bRet = sal_True;
|
2007-11-21 16:12:55 +00:00
|
|
|
sal_Bool bNew = _bSaveAs || !_xElements->hasByName( m_sName );
|
2001-04-24 13:28:56 +00:00
|
|
|
if(bNew)
|
|
|
|
{
|
|
|
|
String aDefaultName;
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( ( _bSaveAs && !bNew ) || ( bNew && m_sName.getLength() ) )
|
|
|
|
aDefaultName = String( m_sName );
|
2001-04-24 13:28:56 +00:00
|
|
|
else
|
2008-10-01 12:28:29 +00:00
|
|
|
{
|
|
|
|
String sName = String( ModuleRes( editingView() ? STR_VIEW_TITLE : STR_QRY_TITLE ) );
|
|
|
|
aDefaultName = sName.GetToken(0,' ');
|
|
|
|
//aDefaultName = getPrivateTitle( );
|
|
|
|
aDefaultName = ::dbtools::createUniqueName(_xElements,aDefaultName);
|
|
|
|
}
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2006-07-10 14:45:08 +00:00
|
|
|
DynamicTableOrQueryNameCheck aNameChecker( getConnection(), CommandType::QUERY );
|
2001-04-24 13:28:56 +00:00
|
|
|
OSaveAsDlg aDlg(
|
2002-07-09 11:48:40 +00:00
|
|
|
getView(),
|
2007-11-21 16:12:55 +00:00
|
|
|
m_nCommandType,
|
2006-07-10 14:45:08 +00:00
|
|
|
getORB(),
|
2002-07-09 11:48:40 +00:00
|
|
|
getConnection(),
|
|
|
|
aDefaultName,
|
2006-07-10 14:45:08 +00:00
|
|
|
aNameChecker,
|
|
|
|
SAD_DEFAULT );
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2006-07-10 14:45:08 +00:00
|
|
|
bRet = ( aDlg.Execute() == RET_OK );
|
|
|
|
if ( bRet )
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
|
|
|
m_sName = aDlg.getName();
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( editingView() )
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
|
|
|
m_sUpdateCatalogName = aDlg.getCatalog();
|
2001-10-01 10:57:41 +00:00
|
|
|
m_sUpdateSchemaName = aDlg.getSchema();
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2001-10-01 10:57:41 +00:00
|
|
|
return bRet;
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2007-11-21 16:12:55 +00:00
|
|
|
bool OQueryController::doSaveAsDoc(sal_Bool _bSaveAs)
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
OSL_ENSURE(isEditable(),"Slot ID_BROWSER_SAVEDOC should not be enabled!");
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !editingCommand() && !haveDataSource() )
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
2001-07-18 07:51:19 +00:00
|
|
|
String aMessage(ModuleRes(STR_DATASOURCE_DELETED));
|
CWS-TOOLING: integrate CWS dba32a
2009-04-16 13:08:19 +0200 oj r270882 : #i14538# set property at control
2009-04-16 13:04:28 +0200 oj r270881 : #i98557# remove binary string for SRB
2009-04-15 13:19:10 +0200 oj r270838 : #i96782# use type set at view
2009-04-14 14:53:20 +0200 oj r270778 : #i96782# set initialize size for custom shape
2009-04-06 14:19:14 +0200 oj r270546 : #i88432# correct pos when < 0 while resizing
2009-04-06 13:36:13 +0200 oj r270541 : #i96782# handle toolbar and menubar differently
2009-04-06 13:33:54 +0200 oj r270540 : #i96782# handle toolbar and menubar differently
2009-04-06 12:28:23 +0200 oj r270534 : #i96782# handle toolbar and menubar differently
2009-04-06 12:27:44 +0200 oj r270533 : #i96782# handle toolbar and menubar differently
2009-04-06 12:24:32 +0200 oj r270532 : #i96782# handle toolbar and menubar differently
2009-04-06 12:15:15 +0200 oj r270531 : do not initialze when field is empty
2009-04-06 10:06:08 +0200 oj r270528 : #i96782# clean up of menubar and remove duplicates
2009-04-06 09:47:49 +0200 oj r270527 : #i96519# adjust help text dynamic
2009-04-03 13:43:20 +0200 oj r270482 : do not need to remove section from observer they are already disposed
2009-04-03 13:27:28 +0200 fs r270479 : #i97356#
2009-04-02 11:30:39 +0200 fs r270386 : UNX line ends
2009-04-02 10:54:51 +0200 fs r270379 : UNX line ends
2009-04-02 10:39:57 +0200 fs r270378 : UNX line ends
2009-04-02 10:37:24 +0200 fs r270377 : why did this survive the rebase? was removed on trunk ...
2009-03-31 13:31:12 +0200 fs r270277 : component_foo should be public
2009-03-28 00:21:01 +0100 fs r270176 : manuallly merged the changes which happened in CWS before resync to m45, where the directory had been moved from reportdesign/registry to reportbuilder/registry
2009-03-27 23:01:20 +0100 fs r270174 : CWS-TOOLING: rebase CWS dba32a to trunk@270033 (milestone: DEV300:m45)
2009-03-11 12:23:35 +0100 fs r269310 : #i99958# ensure the ControlModelLock doesn't release twice
2009-03-06 09:07:32 +0100 fs r268970 : ignore output paths in SVN's status
2009-03-06 09:07:08 +0100 fs r268969 : ignore output paths in SVN's status
2009-03-04 11:28:02 +0100 oj r268800 : copy and paste error, check correct end now
2009-03-03 15:49:11 +0100 fs r268736 : #i10000# those merges were lost during the rebase (m38->m42)
2009-03-03 13:25:27 +0100 lla r268720 : #i99652# fix wrong refactoring
2009-02-27 11:12:56 +0100 fs r268566 : beautified
2009-02-27 10:53:47 +0100 fs r268561 : doFormListening(false) only when actually isFormListening() (found during complex test case XMLFormSettings with assertions)
2009-02-26 20:55:31 +0100 fs r268546 : #i96530# set the Label property of the bound control, if we didn't create a dedicated label control
2009-02-26 11:53:09 +0100 fs r268494 : #i10000#
2009-02-26 11:27:50 +0100 fs r268493 : #i10000#
2009-02-26 11:17:08 +0100 fs r268490 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN
2009-02-25 11:39:48 +0100 fs r268422 : #i10000# post-resync: INFO_ESCAPE_DATETIME got lost during rebase
2009-02-24 23:24:10 +0100 fs r268411 : CWS-TOOLING: rebase CWS dba32a to trunk@268395 (milestone: DEV300:m42)
2009-02-20 15:09:48 +0100 fs r268324 : respect ImplicitCatalog/SchemaRestriction in all necessary places
2009-02-20 13:48:10 +0100 oj r268318 : order of initialize corrected
2009-02-14 15:07:52 +0100 fs r267759 : #i98975# when an image does not have a bitmap, but a text, draw this (as placeholder)
2009-02-14 15:02:40 +0100 fs r267758 : consolidated and removed some duplicate code
2009-02-14 13:52:23 +0100 fs r267756 : #i10000#
2009-02-13 22:08:34 +0100 fs r267750 : #i100000#
2009-02-13 22:07:25 +0100 fs r267749 : #i10000#
2009-02-13 21:55:36 +0100 fs r267747 : #i10000#
2009-02-13 21:54:27 +0100 fs r267746 : use const_cast
2009-02-13 21:29:10 +0100 fs r267745 : #i10000#
2009-02-13 21:27:39 +0100 fs r267744 : #i10000#
2009-02-13 20:59:13 +0100 fs r267742 : #i10000#
2009-02-13 13:21:30 +0100 fs r267717 : better diagnostics
2009-02-13 13:17:24 +0100 fs r267715 : #i58313# support Catalog/SchemaRestriction settings, which are applied in getTables when 'all catalogs/schemas' are to be retrieved
2009-02-13 13:16:14 +0100 fs r267714 : filter out some more known global settings
2009-02-13 12:39:43 +0100 fs r267713 : #i58313# ImplicitCatalog/SchemaRestriction
2009-02-13 12:36:50 +0100 fs r267712 : when exporting data source settings, allow for properties which have a VOID default value, but are currently not VOID
2009-02-13 12:35:57 +0100 fs r267711 : implement XSet, to allow inserting properties which have a default value of VOID
2009-02-13 12:35:03 +0100 fs r267710 : +addVoidProperty
2009-02-13 10:20:08 +0100 fs r267697 : removed unused variable
2009-02-13 09:46:46 +0100 fs r267695 : refactored the table filtering code, to have a better base for introducing additional low level filters
2009-02-10 09:23:07 +0100 lla r267537 : #i10000# wrong line feed, double named variable
2009-02-09 12:13:08 +0100 oj r267508 : #i98605# notify hanlder
2009-02-09 11:50:34 +0100 oj r267507 : #i98926# solve refcount problem
2009-02-09 11:50:05 +0100 oj r267506 : #i98971# fix for simple html
2009-02-09 11:49:24 +0100 oj r267505 : #i98971# fix for simple html
2009-02-09 11:47:27 +0100 oj r267504 : invoke on copy
2009-02-09 09:51:00 +0100 fs r267500 : #i98316#
2009-02-09 09:46:10 +0100 fs r267499 : setCurrentSelection: don't reset the current form when we de-select everything
2009-02-09 09:43:45 +0100 fs r267498 : #i98316#
2009-02-08 21:25:18 +0100 fs r267496 : #i98272# introduce late ctor for cloning
2009-02-07 21:08:39 +0100 fs r267485 : #i98272# when copy-constructing a FmFormPageImpl, use the XCloneable of the forms collection, instead of XPersistObject (which is incompletely implemented)
2009-02-07 21:07:26 +0100 fs r267484 : removed obsolete include guards
2009-02-07 21:05:22 +0100 fs r267483 : #i98272# implement XCloneable
2009-02-06 15:02:48 +0100 lla r267467 : #i96523# add XImageControl
2009-02-06 14:41:38 +0100 oj r267463 : #i98926# late init when connection disposed but only when asked for
2009-02-06 13:49:57 +0100 lla r267457 : #i92860# bigint in forms doesn't allow input of values > 1, fixed
2009-02-06 13:03:55 +0100 oj r267455 : ImageScaleMode
2009-02-05 14:48:19 +0100 lla r267424 : #i89335# dropdown listboxes are 14 instead of 7 lines high
2009-02-05 13:40:00 +0100 oj r267423 : #i96945# insert new prop Opaque
2009-02-05 13:39:19 +0100 oj r267422 : #i96945# insert layer handling for hell and heaven
2009-02-05 13:29:32 +0100 lla r267420 : #i89335# add is null, is not null, is not like filter condition
2009-02-04 12:23:02 +0100 oj r267364 : #i98821# load table font settings
2009-02-04 10:05:27 +0100 oj r267351 : #i98821# load table font settings
2009-02-04 09:23:22 +0100 fs r267350 : checking persistency of UI settings in database documents - for the moment, capture table formattings (which is issue 98821)
2009-02-04 09:22:15 +0100 fs r267349 : moved some methods which are of wider interest from DatabaseDocument to FileHelper resp. TestCase
2009-02-04 08:56:27 +0100 oj r267347 : #i97586# UcbStreamHelper::CreateStream doesn't check all streamModes use different method
2009-02-04 08:23:26 +0100 oj r267346 : #i98701# check key size is >= 3 and some redesign
2009-02-03 23:29:24 +0100 fs r267345 : return the component (controller), not the frame
2009-02-03 23:28:53 +0100 fs r267344 : openExisting returns a controller now, not the frame (this was a bug)
2009-02-03 23:28:25 +0100 fs r267343 : openElement: properly return the component in the table/query case
2009-02-02 12:48:17 +0100 oj r267261 : #i96013# fix for relative path
2009-02-02 10:33:28 +0100 lla r267253 : #i98557# cleanups and consolidation
2009-02-02 09:37:23 +0100 lla r267250 : #i88432# resize will no longer move components to other sections
2009-02-02 09:08:24 +0100 oj r267245 : #i97475# write 0x1A at the end of the file
2009-01-30 19:39:20 +0100 lla r267230 : #i10000# unused parameters
2009-01-30 09:51:09 +0100 fs r267181 : onsolete
2009-01-30 09:49:27 +0100 fs r267180 : onsolete
2009-01-29 14:28:22 +0100 oj r267139 : #i96825# import cell style
2009-01-29 14:23:12 +0100 oj r267137 : #i98601# export imagescalehandler
2009-01-29 14:19:57 +0100 lla r267135 : #i98601# add ImageScaleMode
2009-01-29 13:21:08 +0100 oj r267124 : #i98601# impl ScaleMode
2009-01-29 13:20:56 +0100 oj r267123 : #i98601# impl ScaleMode
2009-01-29 08:46:40 +0100 oj r267095 : new property: ScaleMode
2009-01-29 08:45:23 +0100 oj r267094 : new ScaleMode from UnControlImageModel
2009-01-29 08:28:12 +0100 oj r267093 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 19:54:34 +0100 lla r267082 : #i98557# pictures in report wizard
2009-01-28 15:06:25 +0100 oj r267060 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 11:38:41 +0100 lla r267046 : #i76783# handle binary fields in forms
2009-01-28 09:24:43 +0100 lla r267025 : #i10000#
2009-01-28 08:40:04 +0100 fs r267024 : #i10000#
2009-01-28 08:04:43 +0100 oj r267023 : #i93456# use resource strings for function names
2009-01-27 13:26:05 +0100 oj r266988 : check data field is type field or expression
2009-01-27 13:07:17 +0100 oj r266985 : check data field length
2009-01-27 11:48:19 +0100 oj r266974 : #i96823# return dll string as column name when no alias exists
2009-01-27 09:53:11 +0100 fs r266958 : display the message of a caught exception
2009-01-27 09:44:13 +0100 fs r266957 : #i58313# when retrieving all tables, just set an empty table type filter - the connection will care for translating this, by respecting the TableTypeFilterMode setting
2009-01-27 09:36:09 +0100 fs r266956 : #i58313# getTables: per JDBC spec, is not a valid table type filter. Translate it to 'null'.
2009-01-26 11:24:49 +0100 lla r266912 : #i97865# cleanups (AddField viewable in remote mode)
2009-01-26 07:49:27 +0100 lla r266897 : #i97865# AddField opens in remote case
2009-01-26 07:48:58 +0100 lla r266896 : #i97865# AddField opens in remote case
2009-01-26 07:48:42 +0100 lla r266895 : #i97865# AddField opens in remote case
2009-01-23 15:04:40 +0100 fs r266825 : consolidate the usage of OSQLMessageBox with MessageType==Warning into OSQLWarningBox
2009-01-23 10:47:33 +0100 fs r266787 : +supportsUserAdministration
2009-01-23 10:47:11 +0100 fs r266784 : use DatabaseMetaData.supportsUserAdministration
2009-01-23 07:55:59 +0100 lla r266767 : #i10000# fix gcc compiler failures
2009-01-21 15:08:55 +0100 lla r266673 : #i97265# Labels in HC (IsDark) with other color (viewable)
2009-01-19 14:58:54 +0100 lla r266504 : #i96523# last problems with FormatKey and '0' values fixed
2009-01-19 14:58:00 +0100 lla r266503 : #i96519# AddField help text
2009-01-19 11:59:02 +0100 fs r266485 : #i96523# for formatted field models, init them with TreatAsNumber = false
2009-01-16 10:31:49 +0100 lla r266405 : #i96793# add shrink to popup menu
2009-01-16 09:21:44 +0100 lla r266401 : #i96519# AddField contains a help text
2009-01-15 11:21:49 +0100 lla r266357 : #i96523# problem with XVclWindowPeer not fixed now
2009-01-15 09:19:20 +0100 lla r266335 : #i96523# more crashes fixed.
2009-01-14 13:08:34 +0100 lla r266291 : #i96523# problems with crashes fixed
2009-01-13 10:54:24 +0100 lla r266199 : #i96523# show datasource in formattedfields new files
2009-01-13 10:52:39 +0100 lla r266198 : #i96523# show datasource in formattedfields
2009-01-13 09:41:50 +0100 lla r266197 : #i96526# handling none existance default.otr
2009-01-12 12:55:49 +0100 fs r266151 : don't expect the control model to be a BoundComponent before adding as modify listener
2009-01-12 12:51:33 +0100 fs r266149 : #i88458# let the ImageControl be an XModifyBroadcaster, so the forms runtime can notice when the user changes the control content while it does not have the focus
2009-01-09 13:41:22 +0100 fs r266080 : doc
2009-01-09 13:14:14 +0100 fs r266077 : #i97377# SetModified when order is changed via DnD
2009-01-07 09:55:40 +0100 oj r265951 : merge from master
2009-01-07 09:55:24 +0100 oj r265950 : removed observer
2009-01-07 09:55:06 +0100 oj r265949 : merge from master
2009-01-07 07:29:11 +0100 oj r265945 : shadow var changed
2009-01-06 07:25:57 +0100 oj r265893 : CWS-TOOLING: rebase CWS dba32a to trunk@265758 (milestone: DEV300:m38)
2009-01-05 13:18:22 +0100 oj r265865 : convert to unix le
2009-01-05 09:13:52 +0100 lla r265857 : #i79423# lc_ sc_ permutation fix
2009-01-02 19:40:59 +0100 lla r265847 : #i79423# section shrink icons
2008-12-22 11:37:57 +0100 lla r265749 : #i97484# move component to negative Y-position
2008-12-22 11:37:05 +0100 lla r265748 : #i97484# move component to negative Y-position
2008-12-22 11:35:33 +0100 lla r265747 : #i97484# move component to negative Y-position
2008-12-22 11:25:07 +0100 lla r265745 : #i96757# changes via property browser was not undoable
2008-12-18 15:10:38 +0100 fs r265694 : corrected an condition in doFormListening, which otherwise leads to uncommitable grid columns in documents which are loaded from disc (not in documents which are newly created)
2008-12-18 14:54:39 +0100 fs r265692 : Hide Columns text slightly changed
2008-12-18 13:44:15 +0100 fs r265683 : #i94068# properly display erros happening during a form operation - at least once, and at most once
2008-12-18 11:28:29 +0100 fs r265677 : document the new InputRequired property
2008-12-18 11:04:15 +0100 fs r265676 : #i96530# createControlLabelPair: don't actually create a label for a checkbox
2008-12-18 10:35:53 +0100 fs r265674 : #i95226# when a column is replaced, and it's the selected column, update the selection
2008-12-18 10:34:42 +0100 fs r265673 : #i95226# refactoring of the implReplaced method
2008-12-18 10:34:28 +0100 fs r265672 : #i95226# when replacing a grid column, update the property browser
2008-12-18 10:33:17 +0100 fs r265671 : when an element is removed, remove it from m_aCurrentSelection, too (if necessary)
2008-12-18 10:31:57 +0100 fs r265670 : Hide Columns text slightly changed
2008-12-18 10:15:56 +0100 lla r265669 : #i14538# do not allow to press finish button twice
2008-12-18 08:56:33 +0100 lla r265665 : #i10000# build depend=t problem hacked.
2008-12-17 20:59:10 +0100 fs r265656 : #i89821# don't let a MultiLineEdit select all text when it receives the focus
2008-12-17 12:10:54 +0100 fs r265594 : #i97356#
2008-12-17 12:06:29 +0100 fs r265593 : #i97355# Print -> Printable
2008-12-17 11:59:31 +0100 fs r265591 : #i97350# combo boxes comment on list selection (as list boxes already do)
2008-12-16 09:53:57 +0100 lla r265527 : #i96526# handling none existance default.otr
2008-12-15 14:48:39 +0100 lla r265500 : #i79423# reparing, was wrong implemented
2008-12-12 15:08:33 +0100 lla r265424 : #i10000# remove wrong carridge returns
2008-12-12 15:07:55 +0100 lla r265423 : #i10000# remove wrong carridge returns
2008-12-12 15:06:41 +0100 lla r265422 : #i10000# remove wrong carridge returns
2008-12-12 10:23:13 +0100 lla r265395 : #i95234# reset DragDelta
2008-12-12 10:11:02 +0100 lla r265393 : #i79423# pre versions of shrink buttons
2008-12-11 15:32:13 +0100 fs r265318 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:30:06 +0100 fs r265316 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:07:05 +0100 fs r265307 : removed superfluous text
2008-12-11 12:29:54 +0100 lla r265282 : #i96757# cleanup second try
2008-12-11 12:09:15 +0100 lla r265278 : #i96757# cleanup
2008-12-11 12:07:56 +0100 lla r265277 : #i95234#
2008-12-10 14:04:39 +0100 lla r265183 : #i93472# D&D fixes
2008-12-10 12:29:33 +0100 lla r265168 : #i94067# add (APP|SYS)FONT to XUnitConversion
2008-12-10 12:15:02 +0100 lla r265166 : #i94067# add APPFONT, SYSFONT to MeasureUnit
2008-12-10 11:52:10 +0100 lla r265163 : #i94067# add comments
2008-12-06 20:33:05 +0100 fs r264935 : #i10000# precompiled header
2008-12-05 09:29:26 +0100 fs r264889 : #i10000#
2008-12-05 09:07:31 +0100 fs r264888 : #i10000#
2008-12-04 13:25:46 +0100 fs r264838 : CWS-TOOLING: rebase CWS dba32a to trunk@264807 (milestone: DEV300:m37)
2008-12-03 23:49:13 +0100 fs r264808 : merge changes from trunk, to be able to do a rebase
2008-12-03 17:13:09 +0100 lla r264801 : #i91041# update documentation
2008-12-03 16:57:04 +0100 lla r264799 : #i94067# allow convert(Point|Size)ToLogic as pixel also
2008-12-02 12:36:32 +0100 lla r264687 : #i96782# bring toolbar objects to menu structure
2008-12-02 10:32:44 +0100 lla r264667 : #i86255# make property work
2008-12-02 09:22:47 +0100 lla r264659 : #i79423# add section shrink toolbar
2008-12-02 07:41:22 +0100 lla r264657 : #i86255# add check box for Escape DateTime property
2008-12-02 07:37:17 +0100 lla r264656 : #i79423# new shrink buttons
2008-11-26 11:55:28 +0100 fs r264362 : #i96541#
FillPropertySet: do not only catch UnknownPropertyException when setting the Char/ParaAutoStyleName,
but also care for the other exceptions which can be thrown by XPropertySet::setPropertyValue.
This is actually not the real fix for #i96541#, but only a follow-up. The root cause of the issue
was fixed in CWS dba301b, but this here was another (potential) bug which popped up during investigations.
2008-11-25 09:04:40 +0100 lla r264273 : #i82083# new toolbox in GroupsSorting dialog
2008-11-25 08:56:08 +0100 lla r264272 : #i94729# change token strings into string list, move class out of function
2008-11-24 15:52:22 +0100 fs r264251 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:51:45 +0100 fs r264249 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:45:21 +0100 fs r264244 : #i96532# the API default for ParamNameSubst is false
2008-11-24 15:45:04 +0100 fs r264243 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:44:14 +0100 fs r264241 : #i96532# slight refactoring of exporting properties which have a XML default different from the API default
2008-11-24 10:50:01 +0100 lla r264216 : #i82083# icons for new toolbox
2008-11-24 09:38:45 +0100 lla r264205 : #i82083# new toolbox in GroupsSorting dialog
2008-11-24 09:32:20 +0100 lla r264201 : #i96501# cleanup assertions
2008-11-24 09:12:55 +0100 lla r264198 : #i83082# enhancement for toolboxes, better HC comfort
2008-11-24 08:46:43 +0100 lla r264197 : #i96501# fix problem with negative positions
2008-11-21 11:44:47 +0100 fs r264118 : #i57042# introduce a counter for suspending change notifications of a given property, so recursive calls are possible
2008-11-21 11:02:17 +0100 fs r264116 : #i96388# don't call ExecuteContextMenuAction when no action was chosen by the user
2008-11-21 10:36:53 +0100 fs r264114 : #i47384# assertion was wrong
2008-11-14 12:33:15 +0100 fs r263673 : #i47318# XRowSetChangeBroadcaster/Listener, to be able to listen for changes in an XRowSetSupplier's RowSet
2008-11-14 12:30:29 +0100 fs r263672 : #i47318# more refactoring
- BoundControlModels now listen at the XRowSetSupplier for changes in the supplied
RowSet, to properly revoke/register old/new listeners at the RowSet
- replaced ::osl::Mutex in various places with a ControlModelLock
2008-11-14 12:20:55 +0100 fs r263671 : when BUILD_TYPE includes QADEVOOO, the BUILD_QADEVOOO needs to bet set, too
2008-11-14 12:19:21 +0100 fs r263670 : oops, this was not intended to be committed
2008-11-12 11:08:10 +0100 fs r263579 : #i96096# new ctors taking UNO_QUERY_THROW
2008-11-12 09:15:54 +0100 fs r263576 : no need to load the complete dialog just to get a string which the dialog itself loads from resource
2008-11-10 17:55:45 +0100 fs r263535 : spelling in comment
2008-11-10 15:51:14 +0100 fs r263523 : #i47318# various refactorings
1. don't forward syntetic XLoadListener events from the grid control to
the grid columns. Instead, forward GridColumn::XChild::setParent to
the base class, which then can add itself as load listener
2. removed various occurances of XMultiServiceFactory, instead use the
::comphelper::ComponentContext
3. in O(Bound)ControlModel, have a mechanism to lock the instance (using
ControlModelLock) and fire property changes when the last lock dies.
2008-11-10 12:49:24 +0100 oj r263513 : #i94729# change token strings into string list
2008-11-10 12:13:15 +0100 oj r263512 : #i95222# export chart:title style as well
2008-11-10 08:55:25 +0100 oj r263507 : #i93471# show the correct tabpage when selecting a different object
2008-11-07 23:38:29 +0100 fs r263490 : #i95977# for the event input controls, add a component extending their functionality so they're reset when the users presses DEL
2008-11-07 23:35:39 +0100 fs r263489 : during #i95977#: When a VCL Window is deleted from within VCL code, the respective WindowPeer was never disposed. Corrected this.
2008-11-07 14:57:07 +0100 fs r263420 : #i95963# human-readable display names for event bindings
2008-11-06 10:34:52 +0100 fs r263366 : #i95865# don't use library names containing InvalidZipEntryFileNames - workaround until i95409 is fixed
2008-11-06 10:33:28 +0100 fs r263365 : #i95865#
copied the following change from CWS odfmetadata2 (not yet integrated) into CWS dba31d
- comphelper/inc/comphelper/storagehelper.hxx,
comphelper/source/misc/storagehelper.cxx:
+ add function IsValidZipEntryFileName (moved from module package)
2009-04-22 11:01:27 +00:00
|
|
|
OSQLWarningBox( getView(), aMessage ).Execute();
|
2007-11-21 16:12:55 +00:00
|
|
|
return false;
|
2001-07-18 07:51:19 +00:00
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XNameAccess > xElements = getObjectContainer();
|
|
|
|
if ( !xElements.is() )
|
|
|
|
return false;
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !getContainer()->checkStatement() )
|
|
|
|
return false;
|
2001-10-02 07:30:19 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
::rtl::OUString sTranslatedStmt = translateStatement();
|
|
|
|
if ( editingCommand() )
|
|
|
|
{
|
|
|
|
setModified( sal_False );
|
|
|
|
// this is all we need to do here. translateStatement implicitly set our m_sStatement, and
|
|
|
|
// notified it, and that's all
|
|
|
|
return true;
|
|
|
|
}
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !sTranslatedStmt.getLength() )
|
|
|
|
return false;
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// first we need a name for our query so ask the user
|
|
|
|
// did we get a name
|
|
|
|
::rtl::OUString sOriginalName( m_sName );
|
|
|
|
if ( !askForNewName( xElements, _bSaveAs ) || !m_sName.getLength() )
|
|
|
|
return false;
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
SQLExceptionInfo aInfo;
|
|
|
|
bool bSuccess = false;
|
|
|
|
bool bNew = false;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
bNew = ( _bSaveAs )
|
|
|
|
|| ( !xElements->hasByName( m_sName ) );
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference<XPropertySet> xQuery;
|
|
|
|
if ( bNew ) // just to make sure the query already exists
|
|
|
|
{
|
|
|
|
// drop the query, in case it already exists
|
|
|
|
if ( xElements->hasByName( m_sName ) )
|
|
|
|
{
|
|
|
|
Reference< XDrop > xNameCont( xElements, UNO_QUERY );
|
|
|
|
if ( xNameCont.is() )
|
|
|
|
xNameCont->dropByName( m_sName );
|
2004-03-19 11:12:55 +00:00
|
|
|
else
|
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XNameContainer > xCont( xElements, UNO_QUERY );
|
|
|
|
if ( xCont.is() )
|
|
|
|
xCont->removeByName( m_sName );
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
}
|
2001-04-24 13:28:56 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// create a new (empty, uninitialized) query resp. view
|
|
|
|
Reference< XDataDescriptorFactory > xFact( xElements, UNO_QUERY );
|
|
|
|
if ( xFact.is() )
|
|
|
|
{
|
|
|
|
xQuery = xFact->createDataDescriptor();
|
|
|
|
// to set the name is only allowed when the query is new
|
|
|
|
xQuery->setPropertyValue( PROPERTY_NAME, makeAny( m_sName ) );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Reference< XSingleServiceFactory > xSingleFac( xElements, UNO_QUERY );
|
|
|
|
if ( xSingleFac.is() )
|
|
|
|
xQuery = xQuery.query( xSingleFac->createInstance() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
xElements->getByName( m_sName ) >>= xQuery;
|
|
|
|
}
|
|
|
|
if ( !xQuery.is() )
|
|
|
|
throw RuntimeException();
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// the new commands
|
|
|
|
if ( editingView() && !bNew )
|
|
|
|
{
|
|
|
|
OSL_ENSURE( xQuery == m_xAlterView, "OQueryController::doSaveAsDoc: already have another alterable view ...!?" );
|
|
|
|
m_xAlterView.set( xQuery, UNO_QUERY_THROW );
|
|
|
|
m_xAlterView->alterCommand( sTranslatedStmt );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{ // we're creating a query, or a *new* view
|
|
|
|
xQuery->setPropertyValue( PROPERTY_COMMAND, makeAny( sTranslatedStmt ) );
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( editingView() )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
xQuery->setPropertyValue( PROPERTY_CATALOGNAME, makeAny( m_sUpdateCatalogName ) );
|
|
|
|
xQuery->setPropertyValue( PROPERTY_SCHEMANAME, makeAny( m_sUpdateSchemaName ) );
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
if ( editingQuery() )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
xQuery->setPropertyValue( PROPERTY_UPDATE_TABLENAME, makeAny( m_sUpdateTableName ) );
|
|
|
|
xQuery->setPropertyValue( PROPERTY_ESCAPE_PROCESSING,::cppu::bool2any( m_bEscapeProcessing ) );
|
|
|
|
|
|
|
|
// layout information
|
|
|
|
getContainer()->SaveUIConfig();
|
|
|
|
Sequence< PropertyValue > aLayout;
|
|
|
|
saveTableWindows( aLayout );
|
|
|
|
saveViewSettings( aLayout );
|
|
|
|
xQuery->setPropertyValue( PROPERTY_LAYOUTINFORMATION, makeAny( aLayout ) );
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if ( bNew )
|
|
|
|
{
|
|
|
|
Reference< XAppend > xAppend( xElements, UNO_QUERY );
|
|
|
|
if ( xAppend.is() )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
xAppend->appendByDescriptor( xQuery );
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
else
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XNameContainer > xCont( xElements, UNO_QUERY );
|
|
|
|
if ( xCont.is() )
|
|
|
|
xCont->insertByName( m_sName, makeAny( xQuery ) );
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( editingView() )
|
|
|
|
{
|
|
|
|
Reference< XPropertySet > xViewProps;
|
|
|
|
if ( xElements->hasByName( m_sName ) )
|
|
|
|
xViewProps.set( xElements->getByName( m_sName ), UNO_QUERY );
|
|
|
|
|
|
|
|
if ( !xViewProps.is() ) // correct name and try again
|
|
|
|
m_sName = ::dbtools::composeTableName( getMetaData(), xQuery, ::dbtools::eInDataManipulation, false, false, false );
|
|
|
|
|
|
|
|
OSL_ENSURE( xElements->hasByName( m_sName ), "OQueryController::doSaveAsDoc: newly creaed view does not exist!" );
|
|
|
|
|
|
|
|
if ( xElements->hasByName( m_sName ) )
|
|
|
|
m_xAlterView.set( xElements->getByName( m_sName ), UNO_QUERY );
|
|
|
|
|
|
|
|
// now check if our datasource has set a tablefilter and if so, append the new table name to it
|
|
|
|
::dbaui::appendToFilter( getConnection(), m_sName, getORB(), getView() );
|
2008-10-01 12:28:29 +00:00
|
|
|
} // if ( editingView() )
|
|
|
|
Reference< XTitleChangeListener> xEventListener(impl_getTitleHelper_throw(),UNO_QUERY);
|
|
|
|
if ( xEventListener.is() )
|
|
|
|
{
|
|
|
|
TitleChangedEvent aEvent;
|
|
|
|
xEventListener->titleChanged(aEvent);
|
2007-11-21 16:12:55 +00:00
|
|
|
}
|
2008-10-01 12:28:29 +00:00
|
|
|
releaseNumberForComponent();
|
2001-04-26 12:34:47 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
setModified( sal_False );
|
|
|
|
bSuccess = true;
|
2008-10-01 12:28:29 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
}
|
|
|
|
catch( const SQLException& )
|
|
|
|
{
|
|
|
|
if ( !bNew )
|
|
|
|
m_sName = sOriginalName;
|
|
|
|
aInfo = SQLExceptionInfo( ::cppu::getCaughtException() );
|
|
|
|
}
|
|
|
|
catch(Exception&)
|
|
|
|
{
|
|
|
|
if ( !bNew )
|
|
|
|
m_sName = sOriginalName;
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
|
|
|
|
showError( aInfo );
|
|
|
|
|
|
|
|
// update the title of our window
|
2008-04-04 13:03:40 +00:00
|
|
|
//updateTitle();
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
// if we successfully saved a view we were creating, then close the designer
|
|
|
|
if ( bSuccess && editingView() && !m_xAlterView.is() )
|
|
|
|
{
|
|
|
|
closeTask();
|
2001-04-26 12:34:47 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
if ( bSuccess && editingView() )
|
|
|
|
InvalidateFeature( ID_BROWSER_EDITDOC );
|
|
|
|
|
|
|
|
return bSuccess;
|
2001-04-26 12:34:47 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2004-03-19 11:12:55 +00:00
|
|
|
::rtl::OUString OQueryController::translateStatement( bool _bFireStatementChange )
|
2001-04-26 12:34:47 +00:00
|
|
|
{
|
|
|
|
// now set the properties
|
2004-03-19 11:12:55 +00:00
|
|
|
setStatement_fireEvent( getContainer()->getStatement(), _bFireStatementChange );
|
2001-04-26 12:34:47 +00:00
|
|
|
::rtl::OUString sTranslatedStmt;
|
2007-11-21 16:12:55 +00:00
|
|
|
if(m_sStatement.getLength() && m_xComposer.is() && m_bEscapeProcessing)
|
2001-04-26 12:34:47 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
::rtl::OUString aErrorMsg;
|
2002-02-06 06:57:18 +00:00
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
::connectivity::OSQLParseNode* pNode = m_aSqlParser.parseTree( aErrorMsg, m_sStatement, m_bGraphicalDesign );
|
2001-04-26 12:34:47 +00:00
|
|
|
if(pNode)
|
2001-04-24 13:28:56 +00:00
|
|
|
{
|
2006-12-13 15:55:02 +00:00
|
|
|
pNode->parseNodeToStr( sTranslatedStmt, getConnection() );
|
2001-04-26 12:34:47 +00:00
|
|
|
delete pNode;
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2006-07-10 14:45:08 +00:00
|
|
|
|
2001-04-26 12:34:47 +00:00
|
|
|
m_xComposer->setQuery(sTranslatedStmt);
|
|
|
|
sTranslatedStmt = m_xComposer->getComposedQuery();
|
|
|
|
}
|
|
|
|
catch(SQLException& e)
|
|
|
|
{
|
|
|
|
::dbtools::SQLExceptionInfo aInfo(e);
|
2001-04-24 13:28:56 +00:00
|
|
|
showError(aInfo);
|
2002-04-02 05:40:36 +00:00
|
|
|
// an error occured so we clear the statement
|
|
|
|
sTranslatedStmt = ::rtl::OUString();
|
2001-04-24 13:28:56 +00:00
|
|
|
}
|
2001-04-02 09:18:50 +00:00
|
|
|
}
|
2001-04-26 12:34:47 +00:00
|
|
|
else if(!m_sStatement.getLength())
|
|
|
|
{
|
2002-05-15 09:15:12 +00:00
|
|
|
ModuleRes aModuleRes(STR_QRY_NOSELECT);
|
|
|
|
String sTmpStr(aModuleRes);
|
|
|
|
::rtl::OUString sError(sTmpStr);
|
2002-05-06 09:02:23 +00:00
|
|
|
showError(SQLException(sError,NULL,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S1000") ),1000,Any()));
|
2001-04-26 12:34:47 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
sTranslatedStmt = m_sStatement;
|
|
|
|
|
|
|
|
return sTranslatedStmt;
|
2001-04-02 09:18:50 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-10-23 11:30:27 +00:00
|
|
|
short OQueryController::saveModified()
|
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
vos::OGuard aSolarGuard( Application::GetSolarMutex() );
|
2008-12-01 12:31:27 +00:00
|
|
|
::osl::MutexGuard aGuard( getMutex() );
|
2001-10-23 11:30:27 +00:00
|
|
|
short nRet = RET_YES;
|
2004-03-19 11:12:55 +00:00
|
|
|
if ( !isConnected() || !isModified() )
|
|
|
|
return nRet;
|
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !m_bGraphicalDesign
|
2004-03-19 11:12:55 +00:00
|
|
|
|| ( !m_vTableFieldDesc.empty()
|
|
|
|
&& !m_vTableData.empty()
|
|
|
|
)
|
|
|
|
)
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
String sMessageText( lcl_getObjectResourceString( STR_QUERY_SAVEMODIFIED, m_nCommandType ) );
|
2004-03-19 11:12:55 +00:00
|
|
|
QueryBox aQry( getView(), WB_YES_NO_CANCEL | WB_DEF_YES, sMessageText );
|
|
|
|
|
2001-10-23 11:30:27 +00:00
|
|
|
nRet = aQry.Execute();
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( ( nRet == RET_YES )
|
|
|
|
&& !doSaveAsDoc( sal_False )
|
|
|
|
)
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
nRet = RET_CANCEL;
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return nRet;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-12-01 12:31:27 +00:00
|
|
|
void OQueryController::impl_reset()
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2004-03-19 11:12:55 +00:00
|
|
|
bool bValid = false;
|
|
|
|
|
2008-12-09 07:25:38 +00:00
|
|
|
Sequence< PropertyValue > aLayoutInformation;
|
2001-10-23 11:30:27 +00:00
|
|
|
// get command from the query if a query name was supplied
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( !editingCommand() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2004-03-19 11:12:55 +00:00
|
|
|
if ( m_sName.getLength() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
Reference< XNameAccess > xQueries = getObjectContainer();
|
2004-03-19 11:12:55 +00:00
|
|
|
if ( xQueries.is() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2004-03-19 11:12:55 +00:00
|
|
|
Reference< XPropertySet > xProp;
|
|
|
|
if( xQueries->hasByName( m_sName ) && ( xQueries->getByName( m_sName ) >>= xProp ) && xProp.is() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2004-03-19 11:12:55 +00:00
|
|
|
::rtl::OUString sNewStatement;
|
|
|
|
xProp->getPropertyValue( PROPERTY_COMMAND ) >>= sNewStatement;
|
|
|
|
setStatement_fireEvent( sNewStatement );
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
sal_Bool bNewEscapeProcessing( sal_True );
|
|
|
|
if ( editingQuery() )
|
|
|
|
{
|
|
|
|
xProp->getPropertyValue( PROPERTY_ESCAPE_PROCESSING ) >>= bNewEscapeProcessing;
|
|
|
|
setEscapeProcessing_fireEvent( bNewEscapeProcessing );
|
|
|
|
}
|
|
|
|
|
|
|
|
m_bGraphicalDesign = m_bGraphicalDesign && m_bEscapeProcessing;
|
2004-03-19 11:12:55 +00:00
|
|
|
bValid = true;
|
|
|
|
|
|
|
|
try
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
if ( editingQuery() )
|
|
|
|
xProp->getPropertyValue( PROPERTY_LAYOUTINFORMATION ) >>= aLayoutInformation;
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
OSL_ENSURE( sal_False, "OQueryController::impl_reset: could not retrieve the layout information from the query!" );
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
bValid = true;
|
|
|
|
// assume that we got all necessary information during initialization
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bValid )
|
|
|
|
{
|
|
|
|
// load the layoutInformation
|
|
|
|
if ( aLayoutInformation.getLength() )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2004-08-02 15:16:32 +00:00
|
|
|
// load the layoutInformation
|
|
|
|
loadTableWindows(aLayoutInformation);
|
|
|
|
loadViewSettings(aLayoutInformation);
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
catch( const Exception& )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2007-11-21 16:12:55 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( m_sStatement.getLength() )
|
|
|
|
{
|
|
|
|
setQueryComposer();
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
bool bError( false );
|
2008-06-25 11:55:43 +00:00
|
|
|
|
|
|
|
if ( !m_pSqlIterator )
|
|
|
|
{
|
|
|
|
bError = true;
|
|
|
|
}
|
|
|
|
else if ( m_bEscapeProcessing )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
|
|
|
::rtl::OUString aErrorMsg;
|
2008-06-25 11:55:43 +00:00
|
|
|
::std::auto_ptr< ::connectivity::OSQLParseNode > pNode(
|
|
|
|
m_aSqlParser.parseTree( aErrorMsg, m_sStatement, m_bGraphicalDesign ) );
|
|
|
|
|
|
|
|
if ( pNode.get() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2008-06-25 11:55:43 +00:00
|
|
|
delete m_pSqlIterator->getParseTree();
|
|
|
|
m_pSqlIterator->setParseTree( pNode.release() );
|
|
|
|
m_pSqlIterator->traverseAll();
|
|
|
|
if ( m_pSqlIterator->hasErrors() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2008-06-25 11:55:43 +00:00
|
|
|
if ( !editingView() )
|
2001-10-23 11:30:27 +00:00
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_showAutoSQLViewError( makeAny( m_pSqlIterator->getErrors() ) );
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
bError = true;
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
else
|
|
|
|
{
|
2008-06-25 11:55:43 +00:00
|
|
|
if ( !editingView() )
|
|
|
|
{
|
|
|
|
String aTitle(ModuleRes(STR_SVT_SQL_SYNTAX_ERROR));
|
|
|
|
OSQLMessageBox aDlg(getView(),aTitle,aErrorMsg);
|
|
|
|
aDlg.Execute();
|
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
bError = true;
|
2004-03-19 11:12:55 +00:00
|
|
|
}
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
2007-11-21 16:12:55 +00:00
|
|
|
|
|
|
|
if ( bError )
|
|
|
|
{
|
|
|
|
m_bGraphicalDesign = sal_False;
|
|
|
|
if ( editingView() )
|
|
|
|
// if we're editing a view whose statement could not be parsed, default to "no escape processing"
|
|
|
|
setEscapeProcessing_fireEvent( sal_False );
|
|
|
|
}
|
2001-10-23 11:30:27 +00:00
|
|
|
}
|
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2001-10-23 11:30:27 +00:00
|
|
|
if(!m_pSqlIterator)
|
|
|
|
setQueryComposer();
|
|
|
|
OSL_ENSURE(m_pSqlIterator,"No SQLIterator set!");
|
|
|
|
|
|
|
|
getContainer()->setNoneVisbleRow(m_nVisibleRows);
|
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
2001-10-23 11:30:27 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::reset()
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
impl_reset();
|
|
|
|
getContainer()->reset( NULL );
|
2001-10-23 11:30:27 +00:00
|
|
|
getUndoMgr()->Clear();
|
|
|
|
}
|
2004-03-19 11:12:55 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::setStatement_fireEvent( const ::rtl::OUString& _rNewStatement, bool _bFireStatementChange )
|
|
|
|
{
|
|
|
|
Any aOldValue = makeAny( m_sStatement );
|
|
|
|
m_sStatement = _rNewStatement;
|
|
|
|
Any aNewValue = makeAny( m_sStatement );
|
|
|
|
|
|
|
|
sal_Int32 nHandle = PROPERTY_ID_ACTIVECOMMAND;
|
|
|
|
if ( _bFireStatementChange )
|
|
|
|
fire( &nHandle, &aNewValue, &aOldValue, 1, sal_False );
|
|
|
|
}
|
|
|
|
|
2007-11-21 16:12:55 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OQueryController::setEscapeProcessing_fireEvent( const sal_Bool _bEscapeProcessing )
|
|
|
|
{
|
|
|
|
if ( _bEscapeProcessing == m_bEscapeProcessing )
|
|
|
|
return;
|
|
|
|
|
|
|
|
Any aOldValue = makeAny( m_bEscapeProcessing );
|
|
|
|
m_bEscapeProcessing = _bEscapeProcessing;
|
|
|
|
Any aNewValue = makeAny( m_bEscapeProcessing );
|
|
|
|
|
|
|
|
sal_Int32 nHandle = PROPERTY_ID_ESCAPE_PROCESSING;
|
|
|
|
fire( &nHandle, &aNewValue, &aOldValue, 1, sal_False );
|
|
|
|
}
|
|
|
|
|
2004-03-19 11:12:55 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2006-06-20 02:29:57 +00:00
|
|
|
IMPL_LINK( OQueryController, OnExecuteAddTable, void*, /*pNotInterestedIn*/ )
|
2004-03-19 11:12:55 +00:00
|
|
|
{
|
2004-09-09 08:49:48 +00:00
|
|
|
Execute( ID_BROWSER_ADDTABLE,Sequence<PropertyValue>() );
|
2004-03-19 11:12:55 +00:00
|
|
|
return 0L;
|
|
|
|
}
|
2006-07-10 14:45:08 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
bool OQueryController::allowViews() const
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2004-09-09 08:49:48 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2006-07-10 14:45:08 +00:00
|
|
|
bool OQueryController::allowQueries() const
|
|
|
|
{
|
|
|
|
DBG_ASSERT( getSdbMetaData().isConnected(), "OQueryController::allowQueries: illegal call!" );
|
|
|
|
if ( !getSdbMetaData().supportsSubqueriesInFrom() )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
const NamedValueCollection& rArguments( getInitParams() );
|
2008-01-30 07:54:35 +00:00
|
|
|
sal_Int32 nCommandType = rArguments.getOrDefault( (::rtl::OUString)PROPERTY_COMMAND_TYPE, (sal_Int32)CommandType::QUERY );
|
2007-11-21 16:12:55 +00:00
|
|
|
sal_Bool bCreatingView = ( nCommandType == CommandType::TABLE );
|
2006-07-10 14:45:08 +00:00
|
|
|
return !bCreatingView;
|
|
|
|
}
|
|
|
|
|
2007-07-06 07:40:51 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2004-11-16 08:30:18 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2002-04-02 05:40:36 +00:00
|
|
|
} // namespace dbaui
|
2002-04-03 12:57:14 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2004-11-16 08:30:18 +00:00
|
|
|
|