1228b4580SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3228b4580SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4228b4580SAndrew Rist * or more contributor license agreements. See the NOTICE file 5228b4580SAndrew Rist * distributed with this work for additional information 6228b4580SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7228b4580SAndrew Rist * to you under the Apache License, Version 2.0 (the 8228b4580SAndrew Rist * "License"); you may not use this file except in compliance 9228b4580SAndrew Rist * with the License. You may obtain a copy of the License at 10228b4580SAndrew Rist * 11228b4580SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12228b4580SAndrew Rist * 13228b4580SAndrew Rist * Unless required by applicable law or agreed to in writing, 14228b4580SAndrew Rist * software distributed under the License is distributed on an 15228b4580SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16228b4580SAndrew Rist * KIND, either express or implied. See the License for the 17228b4580SAndrew Rist * specific language governing permissions and limitations 18228b4580SAndrew Rist * under the License. 19228b4580SAndrew Rist * 20228b4580SAndrew Rist *************************************************************/ 21228b4580SAndrew Rist 22228b4580SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef __FRAMEWORK_QUERIES_H_ 25cdf0e10cSrcweir #define __FRAMEWORK_QUERIES_H_ 26cdf0e10cSrcweir 27cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 28cdf0e10cSrcweir // own includes 29cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <general.h> 32cdf0e10cSrcweir 33cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 34cdf0e10cSrcweir // other includes 35cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 36cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx> 37cdf0e10cSrcweir #include <rtl/ustring.hxx> 38cdf0e10cSrcweir #include <rtl/ustrbuf.hxx> 39cdf0e10cSrcweir 40cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 41cdf0e10cSrcweir // namespace 42cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 43cdf0e10cSrcweir 44cdf0e10cSrcweir namespace framework{ 45cdf0e10cSrcweir 46cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 47cdf0e10cSrcweir // const 48cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 49cdf0e10cSrcweir 50cdf0e10cSrcweir /*-************************************************************************************************************//** 51cdf0e10cSrcweir @short These values describe our supported queries for type, filter ... properties. 52*b12a77c9Smseidel They are used by our FilterFactory or our TypeDetection to return 53cdf0e10cSrcweir subsets of our cached configuration. 54cdf0e10cSrcweir *//*-*************************************************************************************************************/ 55cdf0e10cSrcweir #define BASE_QUERY_ALL DECLARE_ASCII("_query_all" ) 56cdf0e10cSrcweir #define BASE_QUERY_WRITER DECLARE_ASCII("_query_Writer" ) 57cdf0e10cSrcweir #define BASE_QUERY_WEB DECLARE_ASCII("_query_web" ) 58cdf0e10cSrcweir #define BASE_QUERY_GLOBAL DECLARE_ASCII("_query_global" ) 59cdf0e10cSrcweir #define BASE_QUERY_CHART DECLARE_ASCII("_query_chart" ) 60cdf0e10cSrcweir #define BASE_QUERY_CALC DECLARE_ASCII("_query_calc" ) 61cdf0e10cSrcweir #define BASE_QUERY_IMPRESS DECLARE_ASCII("_query_impress" ) 62cdf0e10cSrcweir #define BASE_QUERY_DRAW DECLARE_ASCII("_query_draw" ) 63cdf0e10cSrcweir #define BASE_QUERY_MATH DECLARE_ASCII("_query_math" ) 64cdf0e10cSrcweir #define BASE_QUERY_GRAPHICS DECLARE_ASCII("_query_graphics") 65cdf0e10cSrcweir 66cdf0e10cSrcweir /*-************************************************************************************************************//** 67cdf0e10cSrcweir @short These parameters can be used in combination with BASE_QUERY_... defines to 68cdf0e10cSrcweir specialize it. 69cdf0e10cSrcweir use follow syntax to do so: "<query>[:<param>[=<value>]]" 70cdf0e10cSrcweir e.g.: "_query_writer:default_first:use_order:sort_prop=uiname" 71cdf0e10cSrcweir 72cdf0e10cSrcweir argument description default 73cdf0e10cSrcweir ----------------------------------------------------------------------------------------------- 74cdf0e10cSrcweir iflags=<mask> include filters by given mask 0 75cdf0e10cSrcweir eflags=<mask> exclude filters by given mask 0 76cdf0e10cSrcweir sort_prop=<[name,uiname]> sort by internal name or uiname name 77cdf0e10cSrcweir descending sort descending false 78cdf0e10cSrcweir use_order use order flag of filters for sorting false 79cdf0e10cSrcweir default_first set default filter on top of return list false 80cdf0e10cSrcweir case_sensitive compare "sort_prop" case sensitive false 81cdf0e10cSrcweir *//*-*************************************************************************************************************/ 82cdf0e10cSrcweir #define SEPERATOR_QUERYPARAM ((sal_Unicode)':') 83cdf0e10cSrcweir #define SEPERATOR_QUERYPARAMVALUE ((sal_Unicode)'=') 84cdf0e10cSrcweir 85cdf0e10cSrcweir #define QUERYPARAM_IFLAGS DECLARE_ASCII("iflags" ) 86cdf0e10cSrcweir #define QUERYPARAM_EFLAGS DECLARE_ASCII("eflags" ) 87cdf0e10cSrcweir #define QUERYPARAM_SORT_PROP DECLARE_ASCII("sort_prop" ) 88cdf0e10cSrcweir 89cdf0e10cSrcweir #define QUERYPARAM_DESCENDING DECLARE_ASCII("descending" ) 90cdf0e10cSrcweir #define QUERYPARAM_USE_ORDER DECLARE_ASCII("use_order" ) 91cdf0e10cSrcweir #define QUERYPARAM_DEFAULT_FIRST DECLARE_ASCII("default_first" ) 92cdf0e10cSrcweir #define QUERYPARAM_CASE_SENSITIVE DECLARE_ASCII("case_sensitive" ) 93cdf0e10cSrcweir 94cdf0e10cSrcweir #define QUERYPARAMVALUE_SORT_PROP_NAME DECLARE_ASCII("name" ) 95cdf0e10cSrcweir #define QUERYPARAMVALUE_SORT_PROP_UINAME DECLARE_ASCII("uiname" ) 96cdf0e10cSrcweir 97cdf0e10cSrcweir /*-************************************************************************************************************//** 98cdf0e10cSrcweir @short Helper class to support easy building of a query statements. 99cdf0e10cSrcweir *//*-*************************************************************************************************************/ 100cdf0e10cSrcweir class QueryBuilder 101cdf0e10cSrcweir { 102cdf0e10cSrcweir public: 103cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 104cdf0e10cSrcweir // start with empty query 105cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- QueryBuilder()106cdf0e10cSrcweir QueryBuilder() 107cdf0e10cSrcweir { 108cdf0e10cSrcweir resetAll(); 109cdf0e10cSrcweir } 110cdf0e10cSrcweir 111cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 112cdf0e10cSrcweir // returns full query as copy of internal set values 113cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- getQuery()114cdf0e10cSrcweir ::rtl::OUString getQuery() 115cdf0e10cSrcweir { 116cdf0e10cSrcweir ::rtl::OUStringBuffer sCopy( m_sParams ); 117cdf0e10cSrcweir sCopy.insert( 0, m_sBase ); 118cdf0e10cSrcweir return sCopy.makeStringAndClear(); 119cdf0e10cSrcweir } 120cdf0e10cSrcweir 121cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 122cdf0e10cSrcweir // set new or change existing base query part 123cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- setBase(const::rtl::OUString & sBase)124cdf0e10cSrcweir void setBase( const ::rtl::OUString& sBase ) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir m_sBase = sBase; 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 130cdf0e10cSrcweir // add new parameter (with optional value) to param list 131cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- addParam(const::rtl::OUString & sParam,const::rtl::OUString & sValue=::rtl::OUString ())132cdf0e10cSrcweir void addParam( const ::rtl::OUString& sParam, const ::rtl::OUString& sValue = ::rtl::OUString() ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir m_sParams.append( SEPERATOR_QUERYPARAM ); 135cdf0e10cSrcweir m_sParams.append( sParam ); 136cdf0e10cSrcweir if( sValue.getLength() > 0 ) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir m_sParams.append( SEPERATOR_QUERYPARAMVALUE ); 139cdf0e10cSrcweir m_sParams.append( sValue ); 140cdf0e10cSrcweir } 141cdf0e10cSrcweir } 142cdf0e10cSrcweir 143cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 14430acf5e8Spfg // forget all set params and start with empty ones 145cdf0e10cSrcweir // Attention: base of query isn't changed! 146cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- resetParams()147cdf0e10cSrcweir void resetParams() 148cdf0e10cSrcweir { 149cdf0e10cSrcweir m_sParams.makeStringAndClear(); 150cdf0e10cSrcweir m_sParams.ensureCapacity( 256 ); 151cdf0e10cSrcweir } 152cdf0e10cSrcweir 153cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 154cdf0e10cSrcweir // start with new empty query 155cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- resetAll()156cdf0e10cSrcweir void resetAll() 157cdf0e10cSrcweir { 158cdf0e10cSrcweir m_sBase = ::rtl::OUString(); 159cdf0e10cSrcweir resetParams(); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir 162cdf0e10cSrcweir private: 163cdf0e10cSrcweir ::rtl::OUString m_sBase ; 164cdf0e10cSrcweir ::rtl::OUStringBuffer m_sParams ; 165cdf0e10cSrcweir 166cdf0e10cSrcweir }; // class QueryBuilder 167cdf0e10cSrcweir 168cdf0e10cSrcweir /*-************************************************************************************************************//** 169cdf0e10cSrcweir @short Helper class to analyze queries and split into his different parts (base, params and values). 170cdf0e10cSrcweir *//*-*************************************************************************************************************/ 171cdf0e10cSrcweir class QueryAnalyzer 172cdf0e10cSrcweir { 173cdf0e10cSrcweir public: 174cdf0e10cSrcweir 175cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 176cdf0e10cSrcweir // it's will not perform to compare strings as query type ... 177cdf0e10cSrcweir // so we convert it into these enum values. 178cdf0e10cSrcweir // default = E_ALL! 179cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 180cdf0e10cSrcweir enum EQuery 181cdf0e10cSrcweir { 182cdf0e10cSrcweir E_ALL , 183cdf0e10cSrcweir E_WRITER , 184cdf0e10cSrcweir E_WEB , 185cdf0e10cSrcweir E_GLOBAL , 186cdf0e10cSrcweir E_CHART , 187cdf0e10cSrcweir E_CALC , 188cdf0e10cSrcweir E_IMPRESS , 189cdf0e10cSrcweir E_DRAW , 190cdf0e10cSrcweir E_MATH , 191cdf0e10cSrcweir E_GRAPHICS 192cdf0e10cSrcweir }; 193cdf0e10cSrcweir 194cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 195cdf0e10cSrcweir // these are valid values for param "sort_prop". 196cdf0e10cSrcweir // other ones are not supported! 197cdf0e10cSrcweir // default = E_NAME 198cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 199cdf0e10cSrcweir enum ESortProp 200cdf0e10cSrcweir { 201cdf0e10cSrcweir E_NAME , 202cdf0e10cSrcweir E_UINAME 203cdf0e10cSrcweir }; 204cdf0e10cSrcweir 205cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 206cdf0e10cSrcweir // analyze given query and split it into his different parts; <base>:<param1>:<param2=value>... 207cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- QueryAnalyzer(const::rtl::OUString & sQuery)208cdf0e10cSrcweir QueryAnalyzer( const ::rtl::OUString& sQuery ) 209cdf0e10cSrcweir // Don't forget to set default values for non given params! 210cdf0e10cSrcweir : m_eQuery ( E_ALL ) // return ALL filter ... 211cdf0e10cSrcweir , m_nIFlags ( 0 ) // which has set ANY flag ... (we remove all entries which match with these mask .. => 0!) 212cdf0e10cSrcweir , m_nEFlags ( 0 ) // (only used, if nIFlags==0 and himself!=0!) 213cdf0e10cSrcweir , m_eSortProp ( E_NAME ) // sort it by internal name ... 214cdf0e10cSrcweir , m_bDescending ( sal_False ) // in ascending order ... 215cdf0e10cSrcweir , m_bCaseSensitive( sal_False ) // ignore case ... 216cdf0e10cSrcweir , m_bUseOrder ( sal_False ) // don't use order flag ... 217cdf0e10cSrcweir , m_bDefaultFirst ( sal_False ) // and don't handle default entries in special case! 218cdf0e10cSrcweir { 219cdf0e10cSrcweir // Translate old query format to new one first! 220cdf0e10cSrcweir ::rtl::OUString sNewQuery( sQuery ); 221cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_textdocument_withdefault") ) 222cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_writer:default_first:use_order:sort_prop=uiname"); 223cdf0e10cSrcweir else 224cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_webdocument_withdefault") ) 225cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_web:default_first:use_order:sort_prop=uiname"); 226cdf0e10cSrcweir else 227cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_globaldocument_withdefault") ) 228cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_global:default_first:use_order:sort_prop=uiname"); 229cdf0e10cSrcweir else 230cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_chartdocument_withdefault") ) 231cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_chart:default_first:use_order:sort_prop=uiname"); 232cdf0e10cSrcweir else 233cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_spreadsheetdocument_withdefault") ) 234cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_calc:default_first:use_order:sort_prop=uiname"); 235cdf0e10cSrcweir else 236cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_presentationdocument_withdefault") ) 237cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_impress:default_first:use_order:sort_prop=uiname"); 238cdf0e10cSrcweir else 239cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_drawingdocument_withdefault") ) 240cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_draw:default_first:use_order:sort_prop=uiname"); 241cdf0e10cSrcweir else 242cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_formulaproperties_withdefault") ) 243cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_math:default_first:use_order:sort_prop=uiname"); 244cdf0e10cSrcweir else 245cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_textdocument") ) 246cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_writer:use_order:sort_prop=uiname"); 247cdf0e10cSrcweir else 248cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_webdocument") ) 249cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_web:use_order:sort_prop=uiname"); 250cdf0e10cSrcweir else 251cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_globaldocument") ) 252cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_global:use_order:sort_prop=uiname"); 253cdf0e10cSrcweir else 254cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_chartdocument") ) 255cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_chart:use_order:sort_prop=uiname"); 256cdf0e10cSrcweir else 257cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_spreadsheetdocument") ) 258cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_calc:use_order:sort_prop=uiname"); 259cdf0e10cSrcweir else 260cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_presentationdocument") ) 261cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_impress:use_order:sort_prop=uiname"); 262cdf0e10cSrcweir else 263cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_drawingdocument") ) 264cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_draw:use_order:sort_prop=uiname"); 265cdf0e10cSrcweir else 266cdf0e10cSrcweir if( sQuery == DECLARE_ASCII("_filterquery_formulaproperties") ) 267cdf0e10cSrcweir sNewQuery=DECLARE_ASCII("_query_math:use_order:sort_prop=uiname"); 268cdf0e10cSrcweir 269cdf0e10cSrcweir // Analyze query ... 270cdf0e10cSrcweir // Try to find base of it and safe it for faster access as enum value! 271cdf0e10cSrcweir sal_Int32 nToken = 0; 272cdf0e10cSrcweir ::rtl::OUString sParam ; 273cdf0e10cSrcweir ::rtl::OUString sBase = sNewQuery.getToken( 0, SEPERATOR_QUERYPARAM, nToken ); 274cdf0e10cSrcweir 275cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_ALL ) == sal_True ) m_eQuery = E_ALL ; else 276cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_WRITER ) == sal_True ) m_eQuery = E_WRITER ; else 277cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_WEB ) == sal_True ) m_eQuery = E_WEB ; else 278cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_GLOBAL ) == sal_True ) m_eQuery = E_GLOBAL ; else 279cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_CHART ) == sal_True ) m_eQuery = E_CHART ; else 280cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_CALC ) == sal_True ) m_eQuery = E_CALC ; else 281cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_IMPRESS ) == sal_True ) m_eQuery = E_IMPRESS ; else 282cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_DRAW ) == sal_True ) m_eQuery = E_DRAW ; else 283cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_MATH ) == sal_True ) m_eQuery = E_MATH ; else 284cdf0e10cSrcweir if( sBase.equalsIgnoreAsciiCase( BASE_QUERY_GRAPHICS ) == sal_True ) m_eQuery = E_GRAPHICS ; 285cdf0e10cSrcweir 286cdf0e10cSrcweir // Try to get additional parameters ... 287cdf0e10cSrcweir while( nToken >= 0 ) 288cdf0e10cSrcweir { 289cdf0e10cSrcweir sParam = sNewQuery.getToken( 0, SEPERATOR_QUERYPARAM, nToken ); 290cdf0e10cSrcweir // "default_first" 291cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_DEFAULT_FIRST, QUERYPARAM_DEFAULT_FIRST.getLength() ) == 0 ) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir m_bDefaultFirst = sal_True; 294cdf0e10cSrcweir } 295cdf0e10cSrcweir else 296cdf0e10cSrcweir // "use_order" 297cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_USE_ORDER, QUERYPARAM_USE_ORDER.getLength() ) == 0 ) 298cdf0e10cSrcweir { 299cdf0e10cSrcweir m_bUseOrder = sal_True; 300cdf0e10cSrcweir } 301cdf0e10cSrcweir else 302cdf0e10cSrcweir // "descending" 303cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_DESCENDING, QUERYPARAM_DESCENDING.getLength() ) == 0 ) 304cdf0e10cSrcweir { 305cdf0e10cSrcweir m_bDescending = sal_True; 306cdf0e10cSrcweir } 307cdf0e10cSrcweir else 308cdf0e10cSrcweir // "case_sensitive" 309cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_CASE_SENSITIVE, QUERYPARAM_CASE_SENSITIVE.getLength() ) == 0 ) 310cdf0e10cSrcweir { 311cdf0e10cSrcweir m_bCaseSensitive = sal_True; 312cdf0e10cSrcweir } 313cdf0e10cSrcweir else 314cdf0e10cSrcweir // "iflags=<mask>" 315cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_IFLAGS, QUERYPARAM_IFLAGS.getLength() ) == 0 ) 316cdf0e10cSrcweir { 317cdf0e10cSrcweir sal_Int32 nSubToken = 0; 318cdf0e10cSrcweir ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); 319cdf0e10cSrcweir if( nSubToken > 0 ) 320cdf0e10cSrcweir { 321cdf0e10cSrcweir m_nIFlags = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ).toInt32(); 322cdf0e10cSrcweir } 323cdf0e10cSrcweir } 324cdf0e10cSrcweir else 325cdf0e10cSrcweir // "eflags=<mask>" 326cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_EFLAGS, QUERYPARAM_EFLAGS.getLength() ) == 0 ) 327cdf0e10cSrcweir { 328cdf0e10cSrcweir sal_Int32 nSubToken = 0; 329cdf0e10cSrcweir ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); 330cdf0e10cSrcweir if( nSubToken > 0 ) 331cdf0e10cSrcweir { 332cdf0e10cSrcweir m_nEFlags = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ).toInt32(); 333cdf0e10cSrcweir } 334cdf0e10cSrcweir } 335cdf0e10cSrcweir else 336cdf0e10cSrcweir // "sort_prop=<[name,uiname]>" 337cdf0e10cSrcweir if( sParam.compareTo( QUERYPARAM_SORT_PROP, QUERYPARAM_SORT_PROP.getLength() ) == 0 ) 338cdf0e10cSrcweir { 339cdf0e10cSrcweir sal_Int32 nSubToken = 0; 340cdf0e10cSrcweir ::rtl::OUString sParamName = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); 341cdf0e10cSrcweir if( nSubToken > 0 ) 342cdf0e10cSrcweir { 343cdf0e10cSrcweir ::rtl::OUString sParamValue = sParam.getToken( 0, SEPERATOR_QUERYPARAMVALUE, nSubToken ); 344cdf0e10cSrcweir if( sParamValue.compareTo( QUERYPARAMVALUE_SORT_PROP_NAME, QUERYPARAMVALUE_SORT_PROP_NAME.getLength() ) == 0 ) 345cdf0e10cSrcweir m_eSortProp = E_NAME; 346cdf0e10cSrcweir else 347cdf0e10cSrcweir if( sParamValue.compareTo( QUERYPARAMVALUE_SORT_PROP_UINAME, QUERYPARAMVALUE_SORT_PROP_UINAME.getLength() ) == 0 ) 348cdf0e10cSrcweir m_eSortProp = E_UINAME; 349cdf0e10cSrcweir } 350cdf0e10cSrcweir } 351cdf0e10cSrcweir } 352cdf0e10cSrcweir } 353cdf0e10cSrcweir 354cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 355cdf0e10cSrcweir // return type of query. User can decide then, which action should be started. 356cdf0e10cSrcweir // For faster work we converted query string into corresponding enum value! 357cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- getQueryType() const358cdf0e10cSrcweir EQuery getQueryType() const { return m_eQuery; } 359cdf0e10cSrcweir 360cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 361cdf0e10cSrcweir // access to additional parameter values 36207a3d7f1SPedro Giffuni // Methods return default of really set values! 363cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- getIFlags() const364cdf0e10cSrcweir sal_uInt32 getIFlags () const { return m_nIFlags ; } getEFlags() const365cdf0e10cSrcweir sal_uInt32 getEFlags () const { return m_nEFlags ; } getSortProp() const366cdf0e10cSrcweir ESortProp getSortProp () const { return m_eSortProp ; } getDescending() const367cdf0e10cSrcweir sal_Bool getDescending () const { return m_bDescending ; } getCaseSensitive() const368cdf0e10cSrcweir sal_Bool getCaseSensitive() const { return m_bCaseSensitive; } getUseOrder() const369cdf0e10cSrcweir sal_Bool getUseOrder () const { return m_bUseOrder ; } getDefaultFirst() const370cdf0e10cSrcweir sal_Bool getDefaultFirst () const { return m_bDefaultFirst ; } 371cdf0e10cSrcweir 372cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 373cdf0e10cSrcweir // this method checks if given string match any supported query. 374cdf0e10cSrcweir // (ignore additional parameters!) 375cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- isQuery(const::rtl::OUString & sQuery)376cdf0e10cSrcweir static sal_Bool isQuery( const ::rtl::OUString& sQuery ) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir return( 379cdf0e10cSrcweir ( sQuery.compareToAscii( "_query_" , 7 ) == 0 ) || // new style 380cdf0e10cSrcweir ( sQuery.compareToAscii( "_filterquery_", 13 ) == 0 ) // old style! 381cdf0e10cSrcweir ); 382cdf0e10cSrcweir } 383cdf0e10cSrcweir 384cdf0e10cSrcweir private: 385cdf0e10cSrcweir EQuery m_eQuery ; 386cdf0e10cSrcweir sal_uInt32 m_nIFlags ; 387cdf0e10cSrcweir sal_uInt32 m_nEFlags ; 388cdf0e10cSrcweir ESortProp m_eSortProp ; 389cdf0e10cSrcweir sal_Bool m_bDescending ; 390cdf0e10cSrcweir sal_Bool m_bCaseSensitive ; 391cdf0e10cSrcweir sal_Bool m_bUseOrder ; 392cdf0e10cSrcweir sal_Bool m_bDefaultFirst ; 393cdf0e10cSrcweir 394cdf0e10cSrcweir }; // class QueryAnalyzer 395cdf0e10cSrcweir 396cdf0e10cSrcweir } // namespace framework 397cdf0e10cSrcweir 398cdf0e10cSrcweir #endif // #ifndef __FRAMEWORK_QUERIES_H_ 399