2001-02-28 09:11:33 +00:00
/*************************************************************************
*
* $ RCSfile : querycontroller . hxx , v $
*
2001-03-14 09:35:11 +00:00
* $ Revision : 1.9 $
2001-02-28 09:11:33 +00:00
*
2001-03-14 09:35:11 +00:00
* last change : $ Author : oj $ $ Date : 2001 - 03 - 14 10 : 35 : 10 $
2001-02-28 09:11:33 +00:00
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc . , October , 2000
*
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2000 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
*
* 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 .
*
* 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 .
*
* 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
*
*
* Sun Industry Standards Source License Version 1.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 ( the License ) ; You may not use this file
* except in compliance with the License . You may obtain a copy of the
* License at http : //www.openoffice.org/license.html.
*
* Software provided under this License is provided on an AS IS basis ,
* WITHOUT WARRANTY OF ANY KIND , EITHER EXPRESSED OR IMPLIED , INCLUDING ,
* WITHOUT LIMITATION , WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS ,
* MERCHANTABLE , FIT FOR A PARTICULAR PURPOSE , OR NON - INFRINGING .
* See the License for the specific provisions governing your rights and
* obligations concerning the Software .
*
* The Initial Developer of the Original Code is : Sun Microsystems , Inc .
*
* Copyright : 2000 by Sun Microsystems , Inc .
*
* All Rights Reserved .
*
* Contributor ( s ) : _______________________________________
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
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
2001-02-14 13:39:23 +00:00
# ifndef DBAUI_QUERYDESIGNCONTEXT_HXX
# include "ParseContext.hxx"
# endif
2001-02-05 08:12:46 +00:00
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-02-28 09:11:33 +00:00
class OQueryController : public OJoinController
2001-01-09 15:11:54 +00:00
{
2001-02-05 08:12:46 +00:00
: : std : : vector < OTableFieldDesc * > m_vTableFieldDesc ;
2001-02-14 13:39:23 +00:00
OQueryParseContext * m_pParseContext ;
: : connectivity : : OSQLParser * m_pSqlParser ; // to parse sql statements
2001-02-05 08:12:46 +00:00
: : connectivity : : OSQLParseTreeIterator * m_pSqlIterator ; // to iterate through them
: : 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
: : 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-02-05 08:12:46 +00:00
OQueryContainerWindow * m_pWindow ; // temporary window
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-03-14 09:35:11 +00:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : container : : XNameAccess > getQueries ( ) ;
2001-01-09 15:11:54 +00:00
// creates the querycomposer
void setQueryComposer ( ) ;
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
virtual void AddSupportedFeatures ( ) ;
// 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.
virtual FeatureState GetState ( sal_uInt16 nId ) ;
// execute a feature
virtual void Execute ( sal_uInt16 nId ) ;
virtual ToolBox * CreateToolBox ( Window * pParent ) ;
OQueryView * getQueryView ( ) { return static_cast < OQueryView * > ( m_pView ) ; }
2001-02-28 09:11:33 +00:00
virtual void createNewConnection ( sal_Bool _bUI = sal_False ) ;
2001-01-26 13:12:52 +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-02-05 08:12:46 +00:00
: : std : : vector < OTableFieldDesc * > * getTableFieldDesc ( ) { return & m_vTableFieldDesc ; }
2001-02-28 09:11:33 +00:00
VCLXWindow * getWindowPeer ( ) ;
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
2001-02-14 13:39:23 +00:00
: : connectivity : : OSQLParser * getParser ( ) { return m_pSqlParser ; }
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::beans::XPropertyChangeListener
virtual void SAL_CALL propertyChange ( const : : com : : sun : : star : : beans : : PropertyChangeEvent & evt ) ;
// ::com::sun::star::container::XContainerListener
virtual void SAL_CALL elementInserted ( const : : com : : sun : : star : : container : : ContainerEvent & Event ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
virtual void SAL_CALL elementRemoved ( const : : com : : sun : : star : : container : : ContainerEvent & Event ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
virtual void SAL_CALL elementReplaced ( const : : com : : sun : : star : : container : : ContainerEvent & Event ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
// ::com::sun::star::frame::XController
virtual sal_Bool SAL_CALL suspend ( sal_Bool bSuspend ) 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 > & ) ;
// lang::XInitialization
virtual void SAL_CALL initialize ( const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : uno : : Any > & aArguments ) throw ( : : com : : sun : : star : : uno : : Exception , : : com : : sun : : star : : uno : : RuntimeException ) ;
2001-02-05 08:12:46 +00:00
//
virtual void Load ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : io : : XObjectInputStream > & _rxIn ) ;
virtual void Save ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : io : : XObjectOutputStream > & _rxOut ) ;
2001-03-01 12:29:19 +00:00
protected :
virtual OTableWindowData * createTableWindowData ( ) ;
2001-01-09 15:11:54 +00:00
} ;
}
# endif // DBAUI_QUERYCONTROLLER_HXX