diff options
author | Andreas Schlüns <as@openoffice.org> | 2001-10-24 08:32:57 +0000 |
---|---|---|
committer | Andreas Schlüns <as@openoffice.org> | 2001-10-24 08:32:57 +0000 |
commit | 41b6653dbaea01b843209ea0c412ee4d1160f6a0 (patch) | |
tree | 797c47f0d1c008cdc6e50d488e6f7e68b280033c /framework | |
parent | cb7c03df5f35ba6b976c5d4be603215f19604caf (diff) |
#92862# new query mechanism
Diffstat (limited to 'framework')
-rw-r--r-- | framework/inc/classes/filtercache.hxx | 29 | ||||
-rw-r--r-- | framework/inc/queries.h | 411 |
2 files changed, 350 insertions, 90 deletions
diff --git a/framework/inc/classes/filtercache.hxx b/framework/inc/classes/filtercache.hxx index df2046862246..f362d94d33a8 100644 --- a/framework/inc/classes/filtercache.hxx +++ b/framework/inc/classes/filtercache.hxx @@ -2,9 +2,9 @@ * * $RCSfile: filtercache.hxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.27 $ * - * last change: $Author: as $ $Date: 2001-10-15 12:59:25 $ + * last change: $Author: as $ $Date: 2001-10-24 09:32:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -89,6 +89,10 @@ #include <general.h> #endif +#ifndef __FRAMEWORK_QUERIES_H_ +#include <queries.h> +#endif + //_________________________________________________________________________________________________________________ // interface includes //_________________________________________________________________________________________________________________ @@ -397,27 +401,6 @@ class FilterCache : private ThreadHelpBase private: - /*-****************************************************************************************************//** - @short support query mode - @descr These helper functions returns subsets of our internal cached values. - - @attention This methods are threadsafe by himself! Don't call it with any locked rw-lock! - - @seealso methods query...() - - @param - - @return A result set if query was successful - empty structures if not. - - @onerror We return empty structures. - *//*-*****************************************************************************************************/ - - css::uno::Sequence< ::rtl::OUString > implts_queryFilter_ByDocumentService ( const ::rtl::OUString& sService , - sal_Bool bForUI ) const; - css::uno::Sequence< ::rtl::OUString > implts_queryFilter_ByDocumentService_WithDefault ( const ::rtl::OUString& sService , - sal_Bool bForUI ) const; - css::uno::Sequence< ::rtl::OUString > implts_queryFilter_ByFlags ( sal_Int32 nFlags ) const; - css::uno::Sequence< ::rtl::OUString > implts_queryFilter_ByFirstUserData ( const ::rtl::OUString& sIdentifier ) const; - //------------------------------------------------------------------------------------------------------------- // debug methods //------------------------------------------------------------------------------------------------------------- diff --git a/framework/inc/queries.h b/framework/inc/queries.h index 23283b10f946..42eddab2bb0a 100644 --- a/framework/inc/queries.h +++ b/framework/inc/queries.h @@ -2,9 +2,9 @@ * * $RCSfile: queries.h,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: cd $ $Date: 2001-10-15 08:18:42 $ + * last change: $Author: as $ $Date: 2001-10-24 09:32:32 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -78,8 +78,16 @@ // other includes //_________________________________________________________________________________________________________________ -#ifndef _RTL_USTRING_ -#include <rtl/ustring> +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif + +#ifndef _RTL_USTRING_HXX_ +#include <rtl/ustring.hxx> +#endif + +#ifndef _RTL_USTRBUF_HXX_ +#include <rtl/ustrbuf.hxx> #endif //_________________________________________________________________________________________________________________ @@ -97,77 +105,346 @@ namespace framework{ They are used by our FilterFactory or ouer TypeDetection to return subsets of our cached configuration. *//*-*************************************************************************************************************/ -#define FILTERQUERY_TEXTDOCUMENT DECLARE_ASCII("_filterquery_textdocument" ) -#define FILTERQUERY_WEBDOCUMENT DECLARE_ASCII("_filterquery_webdocument" ) -#define FILTERQUERY_GLOBALDOCUMENT DECLARE_ASCII("_filterquery_globaldocument" ) -#define FILTERQUERY_CHARTDOCUMENT DECLARE_ASCII("_filterquery_chartdocument" ) -#define FILTERQUERY_SPREADSHEETDOCUMENT DECLARE_ASCII("_filterquery_spreadsheetdocument" ) -#define FILTERQUERY_PRESENTATIONDOCUMENT DECLARE_ASCII("_filterquery_presentationdocument" ) -#define FILTERQUERY_DRAWINGDOCUMENT DECLARE_ASCII("_filterquery_drawingdocument" ) -#define FILTERQUERY_FORMULARPROPERTIES DECLARE_ASCII("_filterquery_formulaproperties" ) - -#define FILTERQUERY_TEXTDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_textdocument_withdefault" ) -#define FILTERQUERY_WEBDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_webdocument_withdefault" ) -#define FILTERQUERY_GLOBALDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_globaldocument_withdefault" ) -#define FILTERQUERY_CHARTDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_chartdocument_withdefault" ) -#define FILTERQUERY_SPREADSHEETDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_spreadsheetdocument_withdefault" ) -#define FILTERQUERY_PRESENTATIONDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_presentationdocument_withdefault" ) -#define FILTERQUERY_DRAWINGDOCUMENT_WITHDEFAULT DECLARE_ASCII("_filterquery_drawingdocument_withdefault" ) -#define FILTERQUERY_FORMULARPROPERTIES_WITHDEFAULT DECLARE_ASCII("_filterquery_formulaproperties_withdefault" ) - -#define FILTERQUERY_GRAPHICFILTERS DECLARE_ASCII("_filterquery_graphicfilters" ) -#define FILTERQUERY_DEFAULTFILTERS DECLARE_ASCII("_filterquery_defaultfilters" ) +#define BASE_QUERY_ALL DECLARE_ASCII("_query_all" ) +#define BASE_QUERY_WRITER DECLARE_ASCII("_query_Writer" ) +#define BASE_QUERY_WEB DECLARE_ASCII("_query_web" ) +#define BASE_QUERY_GLOBAL DECLARE_ASCII("_query_global" ) +#define BASE_QUERY_CHART DECLARE_ASCII("_query_chart" ) +#define BASE_QUERY_CALC DECLARE_ASCII("_query_calc" ) +#define BASE_QUERY_IMPRESS DECLARE_ASCII("_query_impress" ) +#define BASE_QUERY_DRAW DECLARE_ASCII("_query_draw" ) +#define BASE_QUERY_MATH DECLARE_ASCII("_query_math" ) +#define BASE_QUERY_GRAPHICS DECLARE_ASCII("_query_graphics") /*-************************************************************************************************************//** - @short These values describe properties which represent all items of a query. + @short These parameters can be used in combination with BASE_QUERY_... defines to + specialize it. + use follow syntax to do so: "<query>[:<param>[=<value>]]" + e.g.: "_query_writer:default_first:use_order:sort_prop=uiname" + + argument description default + ----------------------------------------------------------------------------------------------- + iflags=<mask> include filters by given mask 0 + eflags=<mask> exclude filters by given mask 0 + sort_prop=<[name,uiname]> sort by internal name or uiname name + descending sort descending false + use_order use order flag of filters for sorting false + default_first set default filter on top of return list false + case_sensitive compare "sort_prop" case sensitive false *//*-*************************************************************************************************************/ -// compare it with string Filter.DocumentService -#define DETECTPROPERTY_TEXTDOCUMENT DECLARE_ASCII("com.sun.star.text.TextDocument" ) -#define DETECTPROPERTY_WEBDOCUMENT DECLARE_ASCII("com.sun.star.text.WebDocument" ) -#define DETECTPROPERTY_GLOBALDOCUMENT DECLARE_ASCII("com.sun.star.text.GlobalDocument" ) -#define DETECTPROPERTY_CHARTDOCUMENT DECLARE_ASCII("com.sun.star.chart.ChartDocument" ) -#define DETECTPROPERTY_SPREADSHEETDOCUMENT DECLARE_ASCII("com.sun.star.sheet.SpreadsheetDocument" ) -#define DETECTPROPERTY_PRESENTATIONDOCUMENT DECLARE_ASCII("com.sun.star.presentation.PresentationDocument" ) -#define DETECTPROPERTY_DRAWINGDOCUMENT DECLARE_ASCII("com.sun.star.drawing.DrawingDocument" ) -#define DETECTPROPERTY_FORMULARPROPERTIES DECLARE_ASCII("com.sun.star.formula.FormulaProperties" ) - -// compare it with first string of Filter.UserData! -// (temp. special!) -#define DETECTPROPERTY_GRAPHICFILTERS DECLARE_ASCII("OO") - -// compare it with int Filter.Flags -#define DETECTPROPERTY_DEFAULTFILTERS FILTERFLAG_DEFAULT +#define SEPERATOR_QUERYPARAM ((sal_Unicode)':') +#define SEPERATOR_QUERYPARAMVALUE ((sal_Unicode)'=') -//_________________________________________________________________________________________________________________ -// methods -//_________________________________________________________________________________________________________________ +#define QUERYPARAM_IFLAGS DECLARE_ASCII("iflags" ) +#define QUERYPARAM_EFLAGS DECLARE_ASCII("eflags" ) +#define QUERYPARAM_SORT_PROP DECLARE_ASCII("sort_prop" ) + +#define QUERYPARAM_DESCENDING DECLARE_ASCII("descending" ) +#define QUERYPARAM_USE_ORDER DECLARE_ASCII("use_order" ) +#define QUERYPARAM_DEFAULT_FIRST DECLARE_ASCII("default_first" ) +#define QUERYPARAM_CASE_SENSITIVE DECLARE_ASCII("case_sensitive" ) + +#define QUERYPARAMVALUE_SORT_PROP_NAME DECLARE_ASCII("name" ) +#define QUERYPARAMVALUE_SORT_PROP_UINAME DECLARE_ASCII("uiname" ) /*-************************************************************************************************************//** - @short This method checks if given string match to a supported query. + @short Helper class to support easy building of a query statements. *//*-*************************************************************************************************************/ -inline sal_Bool c_isQuery( const ::rtl::OUString& sQuery ) +class QueryBuilder { - return ( - ( sQuery == FILTERQUERY_TEXTDOCUMENT ) || - ( sQuery == FILTERQUERY_WEBDOCUMENT ) || - ( sQuery == FILTERQUERY_GLOBALDOCUMENT ) || - ( sQuery == FILTERQUERY_CHARTDOCUMENT ) || - ( sQuery == FILTERQUERY_SPREADSHEETDOCUMENT ) || - ( sQuery == FILTERQUERY_PRESENTATIONDOCUMENT ) || - ( sQuery == FILTERQUERY_DRAWINGDOCUMENT ) || - ( sQuery == FILTERQUERY_FORMULARPROPERTIES ) || - ( sQuery == FILTERQUERY_TEXTDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_WEBDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_GLOBALDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_CHARTDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_SPREADSHEETDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_PRESENTATIONDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_DRAWINGDOCUMENT_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_FORMULARPROPERTIES_WITHDEFAULT ) || - ( sQuery == FILTERQUERY_GRAPHICFILTERS ) || - ( sQuery == FILTERQUERY_DEFAULTFILTERS ) - ); -} + public: + //--------------------------------------------------------------------------------------------------------- + // start with empty query + //--------------------------------------------------------------------------------------------------------- + QueryBuilder() + { + resetAll(); + } + + //--------------------------------------------------------------------------------------------------------- + // returns full query as copy of internal set values + //--------------------------------------------------------------------------------------------------------- + ::rtl::OUString getQuery() + { + ::rtl::OUStringBuffer sCopy( m_sParams ); + sCopy.insert( 0, m_sBase ); + return sCopy.makeStringAndClear(); + } + + //--------------------------------------------------------------------------------------------------------- + // set new or change existing base query part + //--------------------------------------------------------------------------------------------------------- + void setBase( const ::rtl::OUString& sBase ) + { + m_sBase = sBase; + } + + //--------------------------------------------------------------------------------------------------------- + // add new parameter (with optional value) to param list + //--------------------------------------------------------------------------------------------------------- + void addParam( const ::rtl::OUString& sParam, const ::rtl::OUString& sValue = ::rtl::OUString() ) + { + m_sParams.append( SEPERATOR_QUERYPARAM ); + m_sParams.append( sParam ); + if( sValue.getLength() > 0 ) + { + m_sParams.append( SEPERATOR_QUERYPARAMVALUE ); + m_sParams.append( sValue ); + } + } + + //--------------------------------------------------------------------------------------------------------- + // forget all setted params and start with empty ones + // Attention: base of query isn't changed! + //--------------------------------------------------------------------------------------------------------- + void resetParams() + { + m_sParams.makeStringAndClear(); + m_sParams.ensureCapacity( 256 ); + } + + //--------------------------------------------------------------------------------------------------------- + // start with new empty query + //--------------------------------------------------------------------------------------------------------- + void resetAll() + { + m_sBase = ::rtl::OUString(); + resetParams(); + } + + private: + ::rtl::OUString m_sBase ; + ::rtl::OUStringBuffer m_sParams ; + +}; // class QueryBuilder + +/*-************************************************************************************************************//** + @short Helper class to analyze queries and split into his different parts (base, params and values). +*//*-*************************************************************************************************************/ +class QueryAnalyzer +{ + public: + + //--------------------------------------------------------------------------------------------------------- + // it's will not perform to compare strings as query type ... + // so we convert it into these enum values. + // default = E_ALL! + //--------------------------------------------------------------------------------------------------------- + enum EQuery + { + E_ALL , + E_WRITER , + E_WEB , + E_GLOBAL , + E_CHART , + E_CALC , + E_IMPRESS , + E_DRAW , + E_MATH , + E_GRAPHICS + }; + + //--------------------------------------------------------------------------------------------------------- + // these are valid values for param "sort_prop". + // other ones are not supported! + // default = E_NAME + //--------------------------------------------------------------------------------------------------------- + enum ESortProp + { + E_NAME , + E_UINAME + }; + + //--------------------------------------------------------------------------------------------------------- + // analyze given query and split it into his different parts; <base>:<param1>:<param2=value>... + //--------------------------------------------------------------------------------------------------------- + QueryAnalyzer( const ::rtl::OUString& sQuery ) + // Don't forget to set default values for non given params! + : m_eQuery ( E_ALL ) // return ALL filter ... + , m_nIFlags ( 0 ) // which has set ANY flag ... (we remove all entries which match with these mask .. => 0!) + , m_nEFlags ( 0 ) // (only used, if nIFlags==0 and himself!=0!) + , m_eSortProp ( E_NAME ) // sort it by internal name ... + , m_bDescending ( sal_False ) // in ascending order ... + , m_bCaseSensitive( sal_False ) // ignore case ... + , m_bUseOrder ( sal_False ) // don't use order flag ... + , m_bDefaultFirst ( sal_False ) // and don't handle default entries in special case! + { + // Translate old query format to new one first! + ::rtl::OUString sNewQuery( sQuery ); + if( sQuery == DECLARE_ASCII("_filterquery_textdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_writer:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_webdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_web:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_globaldocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_global:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_chartdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_chart:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_spreadsheetdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_calc:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_presentationdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_impress:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_drawingdocument_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_draw:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_formulaproperties_withdefault") ) + sNewQuery=DECLARE_ASCII("_query_math:default_first:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_textdocument") ) + sNewQuery=DECLARE_ASCII("_query_writer:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_webdocument") ) + sNewQuery=DECLARE_ASCII("_query_web:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_globaldocument") ) + sNewQuery=DECLARE_ASCII("_query_global:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_chartdocument") ) + sNewQuery=DECLARE_ASCII("_query_chart:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_spreadsheetdocument") ) + sNewQuery=DECLARE_ASCII("_query_calc:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_presentationdocument") ) + sNewQuery=DECLARE_ASCII("_query_impress:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_drawingdocument") ) + sNewQuery=DECLARE_ASCII("_query_draw:use_order:sort_prop=uiname"); + else + if( sQuery == DECLARE_ASCII("_filterquery_formulaproperties") ) + sNewQuery=DECLARE_ASCII("_query_math:use_order:sort_prop=uiname"); + + // Analyze query ... + // Try to find base of it and safe it for faster access as enum value! + sal_Int32 nToken = 0; + ::rtl::OUString sParam ; + ::rtl::OUString sBase = sNewQuery.getToken( 0, SEPERATOR_QUERYPARAM, nToken ); + + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_ALL ) == sal_True ) m_eQuery = E_ALL ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_WRITER ) == sal_True ) m_eQuery = E_WRITER ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_WEB ) == sal_True ) m_eQuery = E_WEB ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_GLOBAL ) == sal_True ) m_eQuery = E_GLOBAL ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_CHART ) == sal_True ) m_eQuery = E_CHART ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_CALC ) == sal_True ) m_eQuery = E_CALC ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_IMPRESS ) == sal_True ) m_eQuery = E_IMPRESS ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_DRAW ) == sal_True ) m_eQuery = E_DRAW ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_MATH ) == sal_True ) m_eQuery = E_MATH ; else + if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_GRAPHICS ) == sal_True ) m_eQuery = E_GRAPHICS ; + + // Try to get additional parameters ... + while( nToken >= 0 ) + { + sParam = sNewQuery.getToken( 0, SEPERATOR_QUERYPARAM, nToken ); + // "default_first" + if( sParam.compareTo( QUERYPARAM_DEFAULT_FIRST, QUERYPARAM_DEFAULT_FIRST.getLength() ) == 0 ) + { + m_bDefaultFirst = sal_True; + } + else + // "use_order" + if( sParam.compareTo( QUERYPARAM_USE_ORDER, QUERYPARAM_USE_ORDER.getLength() ) == 0 ) + { + m_bUseOrder = sal_True; + } + else + // "descending" + if( sParam.compareTo( QUERYPARAM_DESCENDING, QUERYPARAM_DESCENDING.getLength() ) == 0 ) + { + m_bDescending = sal_True; + } + else + // "case_sensitive" + if( sParam.compareTo( QUERYPARAM_CASE_SENSITIVE, QUERYPARAM_CASE_SENSITIVE.getLength() ) == 0 ) + { + m_bCaseSensitive = sal_True; + } + else + // "iflags=<mask>" + if( sParam.compareTo( QUERYPARAM_IFLAGS, QUERYPARAM_IFLAGS.getLength() ) == 0 ) + { + sal_Int32 nSubToken = 0; + ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); + if( nSubToken > 0 ) + { + m_nIFlags = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ).toInt32(); + } + } + else + // "eflags=<mask>" + if( sParam.compareTo( QUERYPARAM_EFLAGS, QUERYPARAM_EFLAGS.getLength() ) == 0 ) + { + sal_Int32 nSubToken = 0; + ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); + if( nSubToken > 0 ) + { + m_nEFlags = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ).toInt32(); + } + } + else + // "sort_prop=<[name,uiname]>" + if( sParam.compareTo( QUERYPARAM_SORT_PROP, QUERYPARAM_SORT_PROP.getLength() ) == 0 ) + { + sal_Int32 nSubToken = 0; + ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); + if( nSubToken > 0 ) + { + ::rtl::OUString sParamValue = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); + if( sParamValue.compareTo( QUERYPARAMVALUE_SORT_PROP_NAME, QUERYPARAMVALUE_SORT_PROP_NAME.getLength() ) == 0 ) + m_eSortProp = E_NAME; + else + if( sParamValue.compareTo( QUERYPARAMVALUE_SORT_PROP_UINAME, QUERYPARAMVALUE_SORT_PROP_UINAME.getLength() ) == 0 ) + m_eSortProp = E_UINAME; + } + } + } + } + + //--------------------------------------------------------------------------------------------------------- + // return type of query. User can decide then, which action should be started. + // For faster work we converted query string into corresponding enum value! + //--------------------------------------------------------------------------------------------------------- + EQuery getQueryType() { return m_eQuery; } const + + //--------------------------------------------------------------------------------------------------------- + // access to additional parameter values + // Methods return default of realy set values! + //--------------------------------------------------------------------------------------------------------- + sal_uInt32 getIFlags () { return m_nIFlags ; } const + sal_uInt32 getEFlags () { return m_nEFlags ; } const + ESortProp getSortProp () { return m_eSortProp ; } const + sal_Bool getDescending () { return m_bDescending ; } const + sal_Bool getCaseSensitive() { return m_bCaseSensitive; } const + sal_Bool getUseOrder () { return m_bUseOrder ; } const + sal_Bool getDefaultFirst () { return m_bDefaultFirst ; } const + + //--------------------------------------------------------------------------------------------------------- + // this method checks if given string match any supported query. + // (ignore additional parameters!) + //--------------------------------------------------------------------------------------------------------- + static sal_Bool isQuery( const ::rtl::OUString& sQuery ) + { + return( + ( sQuery.compareToAscii( "_query_" , 7 ) == 0 ) || // new style + ( sQuery.compareToAscii( "_filterquery_", 13 ) == 0 ) // old style! + ); + } + + private: + EQuery m_eQuery ; + sal_uInt32 m_nIFlags ; + sal_uInt32 m_nEFlags ; + ESortProp m_eSortProp ; + sal_Bool m_bDescending ; + sal_Bool m_bCaseSensitive ; + sal_Bool m_bUseOrder ; + sal_Bool m_bDefaultFirst ; + +}; // class QueryAnalyzer } // namespace framework |