2001-02-28 09:11:33 +00:00
/*************************************************************************
*
2005-09-08 15:00:38 +00:00
* OpenOffice . org - a multi - platform office productivity suite
2001-02-28 09:11:33 +00:00
*
2005-09-08 15:00:38 +00:00
* $ RCSfile : querycontroller . hxx , v $
2001-02-28 09:11:33 +00:00
*
2006-07-10 14:33:14 +00:00
* $ Revision : 1.33 $
2001-02-28 09:11:33 +00:00
*
2006-07-10 14:33:14 +00:00
* last change : $ Author : obo $ $ Date : 2006 - 07 - 10 15 : 33 : 14 $
2001-02-28 09:11:33 +00:00
*
2005-09-08 15:00:38 +00:00
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1 .
2001-02-28 09:11:33 +00:00
*
*
2005-09-08 15:00:38 +00:00
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2005 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
2001-02-28 09:11:33 +00:00
*
2005-09-08 15:00:38 +00:00
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 , as published by the Free Software Foundation .
2001-02-28 09:11:33 +00:00
*
2005-09-08 15:00:38 +00:00
* This library 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 for more details .
2001-02-28 09:11:33 +00:00
*
2005-09-08 15:00:38 +00:00
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston ,
* MA 02111 - 1307 USA
2001-02-28 09:11:33 +00:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2001-01-09 15:11:54 +00:00
# ifndef DBAUI_QUERYCONTROLLER_HXX
# define DBAUI_QUERYCONTROLLER_HXX
2001-02-28 09:11:33 +00:00
# ifndef DBAUI_JOINCONTROLLER_HXX
# include "JoinController.hxx"
2001-01-09 15:11:54 +00:00
# endif
# ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
# include <com/sun/star/sdbc/XConnection.hpp>
# endif
# ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSER_HPP_
# include <com/sun/star/sdb/XSQLQueryComposer.hpp>
# endif
2001-02-05 08:12:46 +00:00
# ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
# include <com/sun/star/util/XNumberFormatter.hpp>
# endif
2001-01-09 15:11:54 +00:00
# ifndef DBAUI_QUERYVIEW_HXX
# include "queryview.hxx"
# endif
# ifndef _UNDO_HXX
# include <svtools/undo.hxx>
# endif
2001-02-05 08:12:46 +00:00
# ifndef _CONNECTIVITY_PARSE_SQLITERATOR_HXX_
# include <connectivity/sqliterator.hxx>
# endif
# ifndef _CONNECTIVITY_SQLPARSE_HXX
# include <connectivity/sqlparse.hxx>
# endif
# ifndef _CONNECTIVITY_SQLNODE_HXX
# include <connectivity/sqlnode.hxx>
# endif
# ifndef _COM_SUN_STAR_IO_XOBJECTOUTPUTSTREAM_HPP_
# include <com/sun/star/io/XObjectOutputStream.hpp>
# endif
# ifndef _COM_SUN_STAR_IO_XOBJECTINPUTSTREAM_HPP_
# include <com/sun/star/io/XObjectInputStream.hpp>
# endif
2001-02-05 15:19:35 +00:00
# ifndef DBAUI_JOINTABLEVIEW_HXX
# include "JoinTableView.hxx"
# endif
2002-09-27 10:26:33 +00:00
# ifndef SVX_QUERYDESIGNCONTEXT_HXX
# include "svx/ParseContext.hxx"
2001-02-14 13:39:23 +00:00
# endif
2001-08-23 13:23:57 +00:00
# ifndef DBAUI_QUERYCONTAINERWINDOW_HXX
# include "querycontainerwindow.hxx"
# endif
2001-10-05 05:49:21 +00:00
# ifndef DBAUI_TABLEFIELDDESC_HXX
# include "TableFieldDescription.hxx"
# endif
2001-01-09 15:11:54 +00:00
class VCLXWindow ;
namespace dbaui
{
class OQueryView ;
class OQueryContainerWindow ;
2001-02-05 08:12:46 +00:00
class OTableConnectionData ;
class OTableWindowData ;
class OAddTableDlg ;
class OTableFieldDesc ;
2001-02-05 15:19:35 +00:00
class OQueryTableWindow ;
2001-10-05 05:49:21 +00:00
2001-02-28 09:11:33 +00:00
class OQueryController : public OJoinController
2001-01-09 15:11:54 +00:00
{
2001-10-05 05:49:21 +00:00
OTableFields m_vTableFieldDesc ;
OTableFields m_vUnUsedFieldsDesc ; // contains fields which aren't visible and don't have any criteria
2001-02-05 08:12:46 +00:00
2006-07-10 14:33:14 +00:00
: : svxform : : OSystemParseContext * m_pParseContext ;
: : connectivity : : OSQLParser m_aSqlParser ;
: : connectivity : : OSQLParseTreeIterator * m_pSqlIterator ;
2001-02-05 08:12:46 +00:00
: : std : : vector < sal_uInt32 > m_vColumnWidth ;
2001-01-09 15:11:54 +00:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : sdb : : XSQLQueryComposer > m_xComposer ;
2001-02-05 08:12:46 +00:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XNumberFormatter > m_xFormatter ; // a number formatter working with the connection's NumberFormatsSupplier
2001-01-09 15:11:54 +00:00
2004-03-19 11:12:13 +00:00
: : rtl : : OUString m_sStatement ; // contains the sql statement
: : rtl : : OUString m_sUpdateCatalogName ; // catalog for update data
: : rtl : : OUString m_sUpdateSchemaName ; // schema for update data
: : rtl : : OUString m_sUpdateTableName ; // table for update data
: : rtl : : OUString m_sName ; // name of the query
2001-01-09 15:11:54 +00:00
2001-02-05 08:12:46 +00:00
sal_Int32 m_nVisibleRows ; // which rows the selection browse should show
sal_Int32 m_nSplitPos ; // the position of the splitter
2001-01-09 15:11:54 +00:00
sal_Bool m_bDesign ; // if design is true then we show the complete design otherwise only the text format
sal_Bool m_bDistinct ; // true when you want "select distinct" otherwise false
sal_Bool m_bViewAlias ; // show the alias row in the design view
sal_Bool m_bViewTable ; // show the table row in the design view
sal_Bool m_bViewFunction ; // show the function row in the design view
sal_Bool m_bEsacpeProcessing ; // is true when we shouldn't parse the statement
2001-04-24 13:34:10 +00:00
sal_Bool m_bCreateView ; // set to true when we should create a view otherwise we create a normal query
2004-03-19 11:12:13 +00:00
sal_Bool m_bIndependent ; // are we creating an "independent" SQL command (which does *not* belong to a data source)?
2001-01-09 15:11:54 +00:00
2001-04-24 13:34:10 +00:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : container : : XNameAccess > getElements ( ) const ;
2001-10-01 10:57:41 +00:00
sal_Bool askForNewName ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : container : : XNameAccess > & _xElements ,
2001-04-24 13:34:10 +00:00
sal_Bool _bSaveAs ) ;
2001-01-09 15:11:54 +00:00
// creates the querycomposer
void setQueryComposer ( ) ;
2001-04-06 12:47:18 +00:00
void deleteIterator ( ) ;
2001-04-02 09:18:50 +00:00
void executeQuery ( ) ;
2001-04-24 13:34:10 +00:00
void doSaveAsDoc ( sal_Bool _bSaveAs ) ;
2004-08-02 15:01:44 +00:00
void saveViewSettings ( : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : beans : : PropertyValue > & _rViewProps ) ;
void loadViewSettings ( const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : beans : : PropertyValue > & _rViewProps ) ;
2004-03-19 11:12:13 +00:00
: : rtl : : OUString translateStatement ( bool _bFireStatementChange = true ) ;
2004-08-02 15:01:44 +00:00
2001-01-26 13:12:52 +00:00
2001-01-09 15:11:54 +00:00
protected :
// all the features which should be handled by this class
2004-11-16 13:32:12 +00:00
virtual void describeSupportedFeatures ( ) ;
2001-01-09 15:11:54 +00:00
// state of a feature. 'feature' may be the handle of a ::com::sun::star::util::URL somebody requested a dispatch interface for OR a toolbar slot.
2002-01-24 16:43:35 +00:00
virtual FeatureState GetState ( sal_uInt16 nId ) const ;
2001-01-09 15:11:54 +00:00
// execute a feature
2004-09-09 08:45:58 +00:00
virtual void Execute ( sal_uInt16 nId , const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : beans : : PropertyValue > & aArgs ) ;
2001-01-09 15:11:54 +00:00
2001-10-05 05:49:21 +00:00
virtual void reconnect ( sal_Bool _bUI ) ;
2004-08-02 15:01:44 +00:00
virtual void updateTitle ( ) ;
2001-08-23 13:23:57 +00:00
2001-10-23 11:30:27 +00:00
OQueryContainerWindow * getContainer ( ) const { return static_cast < OQueryContainerWindow * > ( getView ( ) ) ; }
2001-08-23 13:23:57 +00:00
2001-01-09 15:11:54 +00:00
public :
OQueryController ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : lang : : XMultiServiceFactory > & _rM ) ;
~ OQueryController ( ) ;
2001-10-05 05:49:21 +00:00
OTableFields & getTableFieldDesc ( ) { return m_vTableFieldDesc ; }
OTableFields & getUnUsedFields ( ) { return m_vUnUsedFieldsDesc ; }
void clearFields ( ) ;
2001-02-05 08:12:46 +00:00
2001-02-28 09:11:33 +00:00
virtual void setModified ( sal_Bool _bModified = sal_True ) ;
2001-02-05 08:12:46 +00:00
// should the statement be parsed by our own sql parser
sal_Bool isEsacpeProcessing ( ) const { return m_bEsacpeProcessing ; }
sal_Bool isDesignMode ( ) const { return m_bDesign ; }
sal_Bool isDistinct ( ) const { return m_bDistinct ; }
: : rtl : : OUString getStatement ( ) const { return m_sStatement ; }
sal_Int32 getSplitPos ( ) const { return m_nSplitPos ; }
sal_Int32 getVisibleRows ( ) const { return m_nVisibleRows ; }
void setDistinct ( sal_Bool _bDistinct ) { m_bDistinct = _bDistinct ; }
void setSplitPos ( sal_Int32 _nSplitPos ) { m_nSplitPos = _nSplitPos ; }
void setVisibleRows ( sal_Int32 _nVisibleRows ) { m_nVisibleRows = _nVisibleRows ; }
2001-01-09 15:11:54 +00:00
2006-07-10 14:33:14 +00:00
: : connectivity : : OSQLParser & getParser ( ) { return m_aSqlParser ; }
2001-02-05 08:12:46 +00:00
: : connectivity : : OSQLParseTreeIterator & getParseIterator ( ) { return * m_pSqlIterator ; }
sal_uInt32 getColWidth ( sal_uInt16 _nPos ) const
{
return m_vColumnWidth . size ( ) < _nPos ? m_vColumnWidth [ _nPos ] : sal_uInt32 ( 0 ) ;
}
2001-01-09 15:11:54 +00:00
virtual sal_Bool Construct ( Window * pParent ) ;
2001-02-05 08:12:46 +00:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XNumberFormatter > getNumberFormatter ( ) const { return m_xFormatter ; }
2001-01-09 15:11:54 +00:00
// XEventListener
virtual void SAL_CALL disposing ( const : : com : : sun : : star : : lang : : EventObject & Source ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
// ::com::sun::star::lang::XComponent
2001-03-01 14:17:55 +00:00
virtual void SAL_CALL disposing ( ) ;
2001-01-09 15:11:54 +00:00
// XServiceInfo
virtual : : rtl : : OUString SAL_CALL getImplementationName ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
virtual : : com : : sun : : star : : uno : : Sequence < : : rtl : : OUString > SAL_CALL getSupportedServiceNames ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
// need by registration
static : : rtl : : OUString getImplementationName_Static ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
static : : com : : sun : : star : : uno : : Sequence < : : rtl : : OUString > getSupportedServiceNames_Static ( void ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
static : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : uno : : XInterface >
SAL_CALL Create ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : lang : : XMultiServiceFactory > & ) ;
2001-03-01 12:29:19 +00:00
protected :
2005-03-01 18:17:11 +00:00
virtual void onLoadedMenu ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : frame : : XLayoutManager > & _xLayoutManager ) ;
2004-10-22 11:06:52 +00:00
2001-03-01 12:29:19 +00:00
virtual OTableWindowData * createTableWindowData ( ) ;
2001-09-27 05:19:05 +00:00
virtual OJoinDesignView * getJoinView ( ) ;
2001-10-23 11:30:27 +00:00
// ask the user if the design should be saved when it is modified
virtual short saveModified ( ) ;
virtual void reset ( ) ;
2006-07-10 14:33:14 +00:00
virtual void impl_initialize ( ) ;
2004-08-02 15:01:44 +00:00
2001-10-23 11:30:27 +00:00
void resetImpl ( ) ;
2004-03-19 11:12:13 +00:00
/// sets m_sStatement, and notifies our respective property change listeners
void setStatement_fireEvent ( const : : rtl : : OUString & _rNewStatement , bool _bFireStatementChange = true ) ;
2006-07-10 14:33:14 +00:00
// OJoinController overridables
virtual bool allowViews ( ) const ;
virtual bool allowQueries ( ) const ;
2004-03-19 11:12:13 +00:00
private :
DECL_LINK ( OnExecuteAddTable , void * ) ;
2001-01-09 15:11:54 +00:00
} ;
}
# endif // DBAUI_QUERYCONTROLLER_HXX