2001-02-28 09:11:33 +00:00
/*************************************************************************
*
* $ RCSfile : querycontroller . hxx , v $
*
2002-04-09 13:51:27 +00:00
* $ Revision : 1.23 $
2001-02-28 09:11:33 +00:00
*
2002-04-09 13:51:27 +00:00
* last change : $ Author : fs $ $ Date : 2002 - 04 - 09 14 : 51 : 27 $
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-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
2002-04-09 13:51:27 +00:00
OSystemParseContext * m_pParseContext ;
2001-02-14 13:39:23 +00:00
: : 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
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
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 ) ;
2001-04-27 09:12:08 +00:00
: : rtl : : OUString translateStatement ( ) ;
2001-01-26 13:12:52 +00:00
2001-01-09 15:11:54 +00:00
protected :
2001-04-24 13:34:10 +00:00
virtual String getMenu ( ) const ;
2001-01-09 15:11:54 +00:00
// 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.
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
virtual void Execute ( sal_uInt16 nId ) ;
2001-10-05 05:49:21 +00:00
virtual ToolBox * CreateToolBox ( Window * pParent ) ;
2001-01-09 15:11:54 +00:00
2001-10-05 05:49:21 +00:00
virtual void reconnect ( sal_Bool _bUI ) ;
2001-01-26 13:12:52 +00:00
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
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::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-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 ( ) ;
void resetImpl ( ) ;
2001-01-09 15:11:54 +00:00
} ;
}
# endif // DBAUI_QUERYCONTROLLER_HXX