diff options
-rw-r--r-- | connectivity/source/commontools/predicateinput.cxx | 13 | ||||
-rw-r--r-- | connectivity/source/inc/sqlscan.hxx | 15 | ||||
-rw-r--r-- | connectivity/source/parse/sqlbison.y | 148 | ||||
-rw-r--r-- | connectivity/source/parse/sqlflex.l | 393 | ||||
-rw-r--r-- | connectivity/source/parse/sqlnode.cxx | 42 | ||||
-rw-r--r-- | connectivity/source/simpledbt/dbtfactory.cxx | 11 | ||||
-rw-r--r-- | connectivity/source/simpledbt/dbtfactory.hxx | 10 | ||||
-rw-r--r-- | connectivity/source/simpledbt/parsenode_s.cxx | 15 | ||||
-rw-r--r-- | connectivity/source/simpledbt/parsenode_s.hxx | 13 | ||||
-rw-r--r-- | connectivity/source/simpledbt/parser_s.cxx | 13 | ||||
-rw-r--r-- | connectivity/source/simpledbt/parser_s.hxx | 11 | ||||
-rw-r--r-- | svx/inc/ParseContext.hxx | 128 | ||||
-rw-r--r-- | svx/source/form/ParseContext.cxx | 245 | ||||
-rw-r--r-- | svx/source/form/fmstring.src | 330 | ||||
-rw-r--r-- | svx/source/form/makefile.mk | 9 | ||||
-rw-r--r-- | svx/source/form/sqlparserclient.cxx | 10 | ||||
-rw-r--r-- | svx/source/inc/sqlparserclient.hxx | 11 |
17 files changed, 1189 insertions, 228 deletions
diff --git a/connectivity/source/commontools/predicateinput.cxx b/connectivity/source/commontools/predicateinput.cxx index e9e7d011bdca..2503ca42fccb 100644 --- a/connectivity/source/commontools/predicateinput.cxx +++ b/connectivity/source/commontools/predicateinput.cxx @@ -2,9 +2,9 @@ * * $RCSfile: predicateinput.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: oj $ $Date: 2002-09-26 07:59:42 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:15:47 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -145,7 +145,7 @@ namespace dbtools //--------------------------------------------------------------------- OPredicateInputController::OPredicateInputController( - const Reference< XMultiServiceFactory >& _rxORB, const Reference< XConnection >& _rxConnection, const OParseContext* _pParseContext ) + const Reference< XMultiServiceFactory >& _rxORB, const Reference< XConnection >& _rxConnection, const IParseContext* _pParseContext ) :m_xORB( _rxORB ) ,m_xConnection( _rxConnection ) ,m_aParser( m_xORB, _pParseContext ) @@ -235,7 +235,7 @@ namespace dbtools || ( DataType::DECIMAL == nType ) ) { - const OParseContext& rParseContext = m_aParser.getContext(); + const IParseContext& rParseContext = m_aParser.getContext(); // get the separators for the locale of our parse context sal_Unicode nCtxDecSep; sal_Unicode nCtxThdSep; @@ -309,7 +309,7 @@ namespace dbtools if ( pParseNode ) { - const OParseContext& rParseContext = m_aParser.getContext(); + const IParseContext& rParseContext = m_aParser.getContext(); sal_Unicode nDecSeparator, nThousandSeparator; getSeparatorChars( rParseContext.getPreferredLocale(), nDecSeparator, nThousandSeparator ); @@ -424,6 +424,9 @@ namespace dbtools /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2002/09/26 07:59:42 oj + * #103685# correct index of replaceAt call + * * Revision 1.1 2002/04/09 14:31:04 fs * initial checkin - helper class for inputting predicate values * diff --git a/connectivity/source/inc/sqlscan.hxx b/connectivity/source/inc/sqlscan.hxx index c1386c7d1c32..78dbd6c6ca4b 100644 --- a/connectivity/source/inc/sqlscan.hxx +++ b/connectivity/source/inc/sqlscan.hxx @@ -2,9 +2,9 @@ * * $RCSfile: sqlscan.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: oj $ $Date: 2002-07-05 07:03:03 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:17:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -63,9 +63,12 @@ #include <stdarg.h> +#ifndef CONNECTIVITY_IPARSECONTEXT_HXX +#include "connectivity/IParseContext.hxx" +#endif + namespace connectivity { - class OParseContext; //========================================================================== //= OSQLScanner //========================================================================== @@ -73,7 +76,7 @@ namespace connectivity */ class OSQLScanner { - const OParseContext* m_pContext; // context for parse, knows all international stuff + const IParseContext* m_pContext; // context for parse, knows all international stuff ::rtl::OString m_sStatement; // statement to parse ::rtl::OUString m_sErrorMessage; @@ -98,10 +101,10 @@ namespace connectivity virtual void SQLyyerror(char *fmt); virtual void output(sal_Int32) { OSL_ASSERT("Internal error in sdblex.l: output not possible"); } virtual void ECHO(void) { OSL_ASSERT("Internal error in sdblex.l: ECHO not possible"); } - virtual sal_Int32 getInternationalTokenID(const char* sToken) const; + virtual IParseContext::InternationalKeyCode getInternationalTokenID(const char* sToken) const; // setting the new information before scanning - void prepareScan(const ::rtl::OUString & rNewStatement, const OParseContext* pContext, sal_Bool bInternational); + void prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational); const ::rtl::OUString& getErrorMessage() const {return m_sErrorMessage;} ::rtl::OString getStatement() const { return m_sStatement; } diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y index d137c40cbfe3..da525ffb46ef 100644 --- a/connectivity/source/parse/sqlbison.y +++ b/connectivity/source/parse/sqlbison.y @@ -1,7 +1,7 @@ %{ //-------------------------------------------------------------------------- // -// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.40 2002-05-14 09:30:32 hr Exp $ +// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.41 2002-09-27 11:10:30 oj Exp $ // // Copyright 2000 Sun Microsystems, Inc. All Rights Reserved. // @@ -9,7 +9,7 @@ // OJ // // Last change: -// $Author: hr $ $Date: 2002-05-14 09:30:32 $ $Revision: 1.40 $ +// $Author: oj $ $Date: 2002-09-27 11:10:30 $ $Revision: 1.41 $ // // Description: // @@ -3103,7 +3103,8 @@ IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_COLUMN, "The column \"#\" is unkno IMPLEMENT_CONSTASCII_STRING(KEY_STR_LIKE, "LIKE"); IMPLEMENT_CONSTASCII_STRING(KEY_STR_NOT, "NOT"); IMPLEMENT_CONSTASCII_STRING(KEY_STR_NULL, "NULL"); -IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True");
+IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True"); + IMPLEMENT_CONSTASCII_STRING(KEY_STR_FALSE, "False"); IMPLEMENT_CONSTASCII_STRING(KEY_STR_IS, "IS"); IMPLEMENT_CONSTASCII_STRING(KEY_STR_BETWEEN, "BETWEEN"); @@ -3178,9 +3179,9 @@ OParseContext::~OParseContext() } //----------------------------------------------------------------------------- -OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const +IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const { - static OParseContext::InternationalKeyCode Intl_TokenID[] = + static IParseContext::InternationalKeyCode Intl_TokenID[] = { KEY_LIKE, KEY_NOT, KEY_NULL, KEY_TRUE, KEY_FALSE, KEY_IS, KEY_BETWEEN, KEY_OR, @@ -3191,6 +3192,7 @@ OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O sal_uInt32 nCount = sizeof Intl_TokenID / sizeof Intl_TokenID[0]; for (sal_uInt32 i = 0; i < nCount; i++) { + ::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]); if (rToken.equalsIgnoreAsciiCase(aKey)) return Intl_TokenID[i]; @@ -3199,35 +3201,64 @@ OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O return KEY_NONE; } -//------------------------------------------------------------------------------
-static Locale& impl_getLocaleInstance( )
-{
- static Locale s_aLocale(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US" ) ),
- ::rtl::OUString( )
- );
- return s_aLocale;
-}
-
-//------------------------------------------------------------------------------
-void OParseContext::setDefaultLocale( const ::com::sun::star::lang::Locale& _rLocale )
-{
- impl_getLocaleInstance() = _rLocale;
-}
-
-//------------------------------------------------------------------------------
-Locale OParseContext::getPreferredLocale( ) const
-{
- return getDefaultLocale();
-}
-
-//------------------------------------------------------------------------------
-const Locale& OParseContext::getDefaultLocale()
-{
- return impl_getLocaleInstance();
-}
-
+//------------------------------------------------------------------------------ + +static Locale& impl_getLocaleInstance( ) + +{ + + static Locale s_aLocale( + + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ), + + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US" ) ), + + ::rtl::OUString( ) + + ); + + return s_aLocale; + +} + + + +//------------------------------------------------------------------------------ + +void OParseContext::setDefaultLocale( const ::com::sun::star::lang::Locale& _rLocale ) + +{ + + impl_getLocaleInstance() = _rLocale; + +} + + + +//------------------------------------------------------------------------------ + +Locale OParseContext::getPreferredLocale( ) const + +{ + + return getDefaultLocale(); + +} + + + +//------------------------------------------------------------------------------ + +const Locale& OParseContext::getDefaultLocale() + +{ + + return impl_getLocaleInstance(); + +} + + + //========================================================================== //= misc //========================================================================== @@ -3346,7 +3377,7 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage, if (!m_sErrorMessage.getLength()) m_sErrorMessage = s_pScanner->getErrorMessage(); if (!m_sErrorMessage.getLength()) - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_GENERAL); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_GENERAL); rErrorMessage = m_sErrorMessage; @@ -3378,11 +3409,51 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage, } } //----------------------------------------------------------------------------- -::rtl::OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const OParseContext* pContext) +::rtl::OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const IParseContext* pContext) { ::rtl::OString aStr; if (pContext) - aStr = pContext->getIntlKeywordAscii((OParseContext::InternationalKeyCode)nTokenID); + + { + + IParseContext::InternationalKeyCode eKeyCode = IParseContext::KEY_NONE; + + switch( nTokenID ) + + { + + case SQL_TOKEN_LIKE: eKeyCode = IParseContext::KEY_LIKE; break; + + case SQL_TOKEN_NOT: eKeyCode = IParseContext::KEY_NOT; break; + + case SQL_TOKEN_NULL: eKeyCode = IParseContext::KEY_NULL; break; + + case SQL_TOKEN_TRUE: eKeyCode = IParseContext::KEY_TRUE; break; + + case SQL_TOKEN_FALSE: eKeyCode = IParseContext::KEY_FALSE; break; + + case SQL_TOKEN_IS: eKeyCode = IParseContext::KEY_IS; break; + + case SQL_TOKEN_BETWEEN: eKeyCode = IParseContext::KEY_BETWEEN; break; + + case SQL_TOKEN_OR: eKeyCode = IParseContext::KEY_OR; break; + + case SQL_TOKEN_AND: eKeyCode = IParseContext::KEY_AND; break; + + case SQL_TOKEN_AVG: eKeyCode = IParseContext::KEY_AVG; break; + + case SQL_TOKEN_COUNT: eKeyCode = IParseContext::KEY_COUNT; break; + + case SQL_TOKEN_MAX: eKeyCode = IParseContext::KEY_MAX; break; + + case SQL_TOKEN_MIN: eKeyCode = IParseContext::KEY_MIN; break; + + case SQL_TOKEN_SUM: eKeyCode = IParseContext::KEY_SUM; break; + + } + aStr = pContext->getIntlKeywordAscii(eKeyCode); + + } if (!aStr.getLength()) { @@ -3707,7 +3778,7 @@ sal_Int16 OSQLParser::buildStringNodes(OSQLParseNode*& pLiteral) } if(SQL_ISRULE(pLiteral,term) || SQL_ISRULE(pLiteral,value_exp_primary)) { - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE); return 0; } return 1; @@ -3783,6 +3854,7 @@ int OSQLParser::SQLlex() /*------------------------------------------------------------------------ $Log: not supported by cvs2svn $ + Revision 1.34.8.1.2.1 2002/05/10 07:53:46 oj #98357# enable = TRUE diff --git a/connectivity/source/parse/sqlflex.l b/connectivity/source/parse/sqlflex.l index a0cdaf9b1932..fbb776bdbe60 100644 --- a/connectivity/source/parse/sqlflex.l +++ b/connectivity/source/parse/sqlflex.l @@ -2,7 +2,7 @@ //-------------------------------------------------------------------------- // -// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.16 2002-03-06 13:07:48 hjs Exp $ +// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.17 2002-09-27 11:10:30 oj Exp $ // // Copyright 2000 Sun Microsystems, Inc. All Rights Reserved. // @@ -10,7 +10,7 @@ // OJ // // Last change: -// $Author: hjs $ $Date: 2002-03-06 13:07:48 $ $Revision: 1.16 $ +// $Author: oj $ $Date: 2002-09-27 11:10:30 $ $Revision: 1.17 $ // // Description: // @@ -112,7 +112,8 @@ OSQLScanner* xxx_pGLOBAL_SQLSCAN = NULL; [Aa][Nn][Dd] {SQL_NEW_KEYWORD(SQL_TOKEN_AND); return SQL_TOKEN_AND; } [Aa][Nn][Yy] {SQL_NEW_KEYWORD(SQL_TOKEN_ANY); return SQL_TOKEN_ANY; } [Aa][Ss] {SQL_NEW_KEYWORD(SQL_TOKEN_AS); return SQL_TOKEN_AS; } -[Aa][Ss][Cc] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASC; }
+[Aa][Ss][Cc] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASC; } + [Aa][Ss][Cc][Ii][Ii] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASCII; } [Aa][Tt] {SQL_NEW_KEYWORD(SQL_TOKEN_AT); return SQL_TOKEN_AT; } [Aa][Uu][Tt][Hh][Oo][Rr][Ii][Zz][Aa][Tt][Ii][Oo][Nn] {SQL_NEW_KEYWORD(SQL_TOKEN_AUTHORIZATION); return SQL_TOKEN_AUTHORIZATION; } @@ -351,9 +352,12 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp) { sal_Int32 ch; static sal_Int32 BUFFERSIZE = 256; - static sal_Char* Buffer = 0;
- if(!Buffer)
- Buffer = new sal_Char[BUFFERSIZE];
+ static sal_Char* Buffer = 0; + + if(!Buffer) + + Buffer = new sal_Char[BUFFERSIZE]; + sal_Char *s = Buffer; sal_Int32 nPos = 0; @@ -372,18 +376,24 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp) switch(nTyp) { case 0: - SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
- delete Buffer;
+ SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME); + + delete Buffer; + Buffer = NULL; return SQL_TOKEN_NAME; case 1: - SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
- delete Buffer;
+ SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING); + + delete Buffer; + Buffer = NULL; return SQL_TOKEN_STRING; case 2: - SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE);
- delete Buffer;
+ SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE); + + delete Buffer; + Buffer = NULL; return SQL_TOKEN_ACCESS_DATE; } @@ -422,12 +432,58 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp) } } *s = '\0'; - YY_FATAL_ERROR("Unterminated name string");
- delete Buffer;
+ YY_FATAL_ERROR("Unterminated name string"); + + delete Buffer; + Buffer = NULL; return SQL_TOKEN_INVALIDSYMBOL; } + + +sal_Int32 mapEnumToToken(IParseContext::InternationalKeyCode _eKeyCode ) + +{ + + sal_Int32 nTokenID = 0; + + switch( _eKeyCode ) + + { + + case IParseContext::KEY_LIKE: nTokenID = SQL_TOKEN_LIKE; break; + + case IParseContext::KEY_NOT: nTokenID = SQL_TOKEN_NOT; break; + + case IParseContext::KEY_NULL: nTokenID = SQL_TOKEN_NULL; break; + + case IParseContext::KEY_TRUE: nTokenID = SQL_TOKEN_TRUE; break; + + case IParseContext::KEY_FALSE: nTokenID = SQL_TOKEN_FALSE; break; + + case IParseContext::KEY_IS: nTokenID = SQL_TOKEN_IS; break; + + case IParseContext::KEY_BETWEEN: nTokenID = SQL_TOKEN_BETWEEN; break; + + case IParseContext::KEY_OR: nTokenID = SQL_TOKEN_OR; break; + + case IParseContext::KEY_AND: nTokenID = SQL_TOKEN_AND; break; + + case IParseContext::KEY_AVG: nTokenID = SQL_TOKEN_AVG; break; + + case IParseContext::KEY_COUNT: nTokenID = SQL_TOKEN_COUNT; break; + + case IParseContext::KEY_MAX: nTokenID = SQL_TOKEN_MAX; break; + + case IParseContext::KEY_MIN: nTokenID = SQL_TOKEN_MIN; break; + + case IParseContext::KEY_SUM: nTokenID = SQL_TOKEN_SUM; break; + + } + return nTokenID; + +} /* * Read SQL Name literal * Valid Names or internatioanl keywords: @@ -435,24 +491,29 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp) */ sal_Int32 gatherName(const sal_Char* text) { + sal_Int32 nToken; + OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!"); - sal_Int32 nToken = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); - switch (nToken) + + IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); + switch (eKeyCode) { - case SQL_TOKEN_LIKE: - case SQL_TOKEN_NOT: - case SQL_TOKEN_NULL: - case SQL_TOKEN_TRUE: - case SQL_TOKEN_FALSE: - case SQL_TOKEN_IS: - case SQL_TOKEN_BETWEEN: - case SQL_TOKEN_OR: - case SQL_TOKEN_AND: - case SQL_TOKEN_COUNT: - case SQL_TOKEN_AVG: - case SQL_TOKEN_MAX: - case SQL_TOKEN_MIN: - case SQL_TOKEN_SUM: + case IParseContext::KEY_LIKE: + case IParseContext::KEY_NOT: + case IParseContext::KEY_NULL: + case IParseContext::KEY_TRUE: + case IParseContext::KEY_FALSE: + case IParseContext::KEY_IS: + case IParseContext::KEY_BETWEEN: + case IParseContext::KEY_OR: + case IParseContext::KEY_AND: + case IParseContext::KEY_COUNT: + case IParseContext::KEY_AVG: + case IParseContext::KEY_MAX: + case IParseContext::KEY_MIN: + case IParseContext::KEY_SUM: + + nToken = mapEnumToToken(eKeyCode); SQL_NEW_KEYWORD(nToken); return nToken; default: @@ -467,44 +528,81 @@ sal_Int32 gatherName(const sal_Char* text) */ sal_Int32 gatherNamePre(const sal_Char* text) { + + sal_Int32 nToken; OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!"); - sal_Int32 nToken = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); - switch (nToken) + IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); + switch (eKeyCode) { - case SQL_TOKEN_LIKE: - case SQL_TOKEN_NOT: - case SQL_TOKEN_NULL: - case SQL_TOKEN_TRUE: - case SQL_TOKEN_FALSE: - case SQL_TOKEN_IS: - case SQL_TOKEN_BETWEEN: - case SQL_TOKEN_OR: - case SQL_TOKEN_AND: - case SQL_TOKEN_COUNT: - case SQL_TOKEN_AVG: - case SQL_TOKEN_MAX: - case SQL_TOKEN_MIN: - case SQL_TOKEN_SUM: - SQL_NEW_KEYWORD(nToken); - break;
- default:
- // we need a special handling for parameter
- {
- ::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement();
- sal_Int32 nLength = strlen(text);
- sal_Int32 nPos = sStmt.getLength() - nLength - 1;
- if (sStmt.getStr()[nPos] == ':')
- {
- SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
- nToken = SQL_TOKEN_NAME;
- }
- else
- {
- SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
- nToken = SQL_TOKEN_STRING;
- }
- }
- }
+ case IParseContext::KEY_LIKE: + + case IParseContext::KEY_NOT: + + case IParseContext::KEY_NULL: + + case IParseContext::KEY_TRUE: + + case IParseContext::KEY_FALSE: + + case IParseContext::KEY_IS: + + case IParseContext::KEY_BETWEEN: + + case IParseContext::KEY_OR: + + case IParseContext::KEY_AND: + + case IParseContext::KEY_COUNT: + + case IParseContext::KEY_AVG: + + case IParseContext::KEY_MAX: + + case IParseContext::KEY_MIN: + + case IParseContext::KEY_SUM: + + nToken = mapEnumToToken(eKeyCode); + SQL_NEW_KEYWORD(nToken); + + break; + + default: + + // we need a special handling for parameter + + { + + ::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement(); + + sal_Int32 nLength = strlen(text); + + sal_Int32 nPos = sStmt.getLength() - nLength - 1; + + if (sStmt.getStr()[nPos] == ':') + + { + + SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME); + + nToken = SQL_TOKEN_NAME; + + } + + else + + { + + SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING); + + nToken = SQL_TOKEN_STRING; + + } + + } + + } + return nToken; } @@ -524,7 +622,8 @@ OSQLScanner::OSQLScanner() , m_bInternational(sal_False) , m_pContext(NULL) , m_nRule(0) // 0 is INITIAL -{
+{ + IN_SQLyyerror = false; } @@ -534,67 +633,117 @@ OSQLScanner::~OSQLScanner() } //------------------------------------------------------------------------------ void OSQLScanner::SQLyyerror(sal_Char *fmt) -{
-
- if(IN_SQLyyerror)
- return;
- IN_SQLyyerror = true;
+{ + + + + if(IN_SQLyyerror) + + return; + + IN_SQLyyerror = true; + OSL_ENSURE(m_pContext, "OSQLScanner::SQLyyerror: No Context set"); m_sErrorMessage = ::rtl::OUString(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8); if (m_nCurrentPos < m_sStatement.getLength()) { m_sErrorMessage += ::rtl::OUString::createFromAscii(": "); -
- ::rtl::OUString aError;
- static sal_Int32 BUFFERSIZE = 256;
- static sal_Char* Buffer = 0;
- if(!Buffer)
- Buffer = new sal_Char[BUFFERSIZE];
-
- sal_Char *s = Buffer;
- sal_Int32 nPos = 1;
- sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' ';
- *s++ = ch;
- while ((ch = yyinput()) != EOF)
- {
- if (ch == ' ')
- {
- if ((ch = yyinput()) != ' ')
- {
- if (ch != EOF)
- unput(ch);
- }
- *s = '\0';
- aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8);
- break;
- }
- else
- {
- *s++ = ch;
- if (++nPos == BUFFERSIZE)
- {
- ::rtl::OString aBuf(Buffer);
- delete Buffer;
- BUFFERSIZE *=2;
- Buffer = new sal_Char[BUFFERSIZE];
- for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer)
- *Buffer = aBuf.getStr()[i];
- s = &Buffer[nPos];
- }
- }
- }
- m_sErrorMessage += aError;
- delete Buffer;
+ + + ::rtl::OUString aError; + + static sal_Int32 BUFFERSIZE = 256; + + static sal_Char* Buffer = 0; + + if(!Buffer) + + Buffer = new sal_Char[BUFFERSIZE]; + + + + sal_Char *s = Buffer; + + sal_Int32 nPos = 1; + + sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' '; + + *s++ = ch; + + while ((ch = yyinput()) != EOF) + + { + + if (ch == ' ') + + { + + if ((ch = yyinput()) != ' ') + + { + + if (ch != EOF) + + unput(ch); + + } + + *s = '\0'; + + aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8); + + break; + + } + + else + + { + + *s++ = ch; + + if (++nPos == BUFFERSIZE) + + { + + ::rtl::OString aBuf(Buffer); + + delete Buffer; + + BUFFERSIZE *=2; + + Buffer = new sal_Char[BUFFERSIZE]; + + for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer) + + *Buffer = aBuf.getStr()[i]; + + s = &Buffer[nPos]; + + } + + } + + } + + m_sErrorMessage += aError; + + delete Buffer; + Buffer = NULL; - }
- IN_SQLyyerror = false;
- YY_FLUSH_BUFFER;
+ } + + IN_SQLyyerror = false; + + YY_FLUSH_BUFFER; + } //------------------------------------------------------------------------------ -void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const OParseContext* pContext, sal_Bool bInternational) -{
+void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational) +{ + YY_FLUSH_BUFFER; BEGIN(m_nRule); @@ -602,7 +751,8 @@ void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const OPars m_sStatement = ::rtl::OString(rNewStatement,rNewStatement.getLength(), RTL_TEXTENCODING_UTF8); m_nCurrentPos = 0; m_bInternational = bInternational; - m_pContext = pContext;
+ m_pContext = pContext; + } //------------------------------------------------------------------------------ @@ -612,10 +762,10 @@ sal_Int32 OSQLScanner::SQLyygetc(void) } //------------------------------------------------------------------------------ -sal_Int32 OSQLScanner::getInternationalTokenID(const sal_Char* sToken) const +IParseContext::InternationalKeyCode OSQLScanner::getInternationalTokenID(const sal_Char* sToken) const { OSL_ENSURE(m_pContext, "OSQLScanner::getInternationalTokenID: No Context set"); - return (m_bInternational) ? m_pContext->getIntlKeyCode(::rtl::OString(sToken)) : 0; + return (m_bInternational) ? m_pContext->getIntlKeyCode(::rtl::OString(sToken) ) : IParseContext::KEY_NONE; } // ------------------------------------------------------------------------- sal_Int32 OSQLScanner::GetCurrentRule() const { return m_nRule; } @@ -637,6 +787,7 @@ sal_Int32 OSQLScanner::SQLlex() /*------------------------------------------------------------------------ $Log: not supported by cvs2svn $ + Revision 1.2 2000/08/01 14:26:02 oj modified diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index 0e6d04ddd033..47b3e4a2a1eb 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sqlnode.cxx,v $ * - * $Revision: 1.30 $ + * $Revision: 1.31 $ * - * last change: $Author: oj $ $Date: 2002-07-01 07:06:44 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:10:32 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -158,12 +158,12 @@ extern ::rtl::OUString ConvertLikeToken(const OSQLParseNode* pTokenNode, const O //------------------------------------------------------------------ OSQLParseNode::SQLParseNodeParameter::SQLParseNodeParameter(const ::rtl::OUString& _rIdentifierQuote, const ::rtl::OUString& _rCatalogSep, const Reference< XNumberFormatter > & _xFormatter, const Reference< XPropertySet > & _xField, const ::com::sun::star::lang::Locale& _rLocale, - const OParseContext* _pContext, sal_Bool _bIntl, sal_Bool _bQuote, sal_Char _cDecSep, + const IParseContext* _pContext, sal_Bool _bIntl, sal_Bool _bQuote, sal_Char _cDecSep, sal_Bool _bPredicate) :aIdentifierQuote(_rIdentifierQuote) ,aCatalogSeparator(_rCatalogSep) ,rLocale(_rLocale) - ,rContext(_pContext ? *_pContext : OSQLParser::s_aDefaultContext) + ,m_pContext(_pContext ? _pContext : &OSQLParser::s_aDefaultContext) ,bInternational(_bIntl) ,bQuote(_bQuote) ,cDecSep(_cDecSep) @@ -214,7 +214,7 @@ OSQLParseNode::SQLParseNodeParameter::SQLParseNodeParameter(const ::rtl::OUStrin //----------------------------------------------------------------------------- void OSQLParseNode::parseNodeToStr(::rtl::OUString& rString, const Reference< XDatabaseMetaData > & xMeta, - const OParseContext* pContext, + const IParseContext* pContext, sal_Bool _bIntl, sal_Bool _bQuote) const { @@ -231,7 +231,7 @@ void OSQLParseNode::parseNodeToPredicateStr(::rtl::OUString& rString, const Reference< XNumberFormatter > & xFormatter, const ::com::sun::star::lang::Locale& rIntl, sal_Char _cDec, - const OParseContext* pContext ) const + const IParseContext* pContext ) const { OSL_ENSURE(xFormatter.is(), "OSQLParseNode::parseNodeToPredicateStr:: no formatter!"); @@ -247,7 +247,7 @@ void OSQLParseNode::parseNodeToPredicateStr(::rtl::OUString& rString, const Reference< XPropertySet > & _xField, const ::com::sun::star::lang::Locale& rIntl, sal_Char _cDec, - const OParseContext* pContext ) const + const IParseContext* pContext ) const { OSL_ENSURE(xFormatter.is(), "OSQLParseNode::parseNodeToPredicateStr:: no formatter!"); @@ -262,7 +262,7 @@ void OSQLParseNode::parseNodeToStr(::rtl::OUString& rString, const Reference< XNumberFormatter > & xFormatter, const Reference< XPropertySet > & _xField, const ::com::sun::star::lang::Locale& rIntl, - const OParseContext* pContext, + const IParseContext* pContext, sal_Bool _bIntl, sal_Bool _bQuote, sal_Char _cDecSep, @@ -636,13 +636,13 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* else { nErg = -1; - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE); } } catch( Exception& ) { nErg = -1; - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE); } } } @@ -651,7 +651,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* break; default: - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE); } break; case SQL_NODE_ACCESS_DATE: @@ -684,24 +684,24 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* else { nErg = -1; - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE); } } catch( Exception& ) { nErg = -1; - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE); } } } else { nErg = -1; - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE); } break; default: - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE); } break; case SQL_NODE_INTNUM: @@ -734,7 +734,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* nErg = buildNode_STR_NUM(pAppend,pLiteral,pCompare); break; default: - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_INT_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_INT_COMPARE); } break; case SQL_NODE_APPROXNUM: @@ -766,7 +766,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* break; case DataType::INTEGER: default: - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_REAL_COMPARE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_REAL_COMPARE); } break; } @@ -841,14 +841,14 @@ sal_Int16 OSQLParser::buildLikeRule(OSQLParseNode*& pAppend, OSQLParseNode*& pLi break; default: { - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_VALUE_NO_LIKE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_VALUE_NO_LIKE); m_sErrorMessage = m_sErrorMessage.replaceAt(m_sErrorMessage.indexOf(::rtl::OUString::createFromAscii("#1")),2,pLiteral->getTokenValue()); } } } break; default: - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_FIELD_NO_LIKE); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_FIELD_NO_LIKE); } return nErg; } @@ -1034,7 +1034,7 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const : if (!m_sErrorMessage.getLength()) m_sErrorMessage = s_pScanner->getErrorMessage(); if (!m_sErrorMessage.getLength()) - m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_GENERAL); + m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_GENERAL); rErrorMessage = m_sErrorMessage; @@ -1067,7 +1067,7 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const : } //============================================================================= //----------------------------------------------------------------------------- -OSQLParser::OSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xServiceFactory,const OParseContext* _pContext) +OSQLParser::OSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xServiceFactory,const IParseContext* _pContext) :m_pContext(_pContext) ,m_pParseTree(NULL) ,m_pLocale(NULL) diff --git a/connectivity/source/simpledbt/dbtfactory.cxx b/connectivity/source/simpledbt/dbtfactory.cxx index 1ee226122b9d..09dcd2863bd2 100644 --- a/connectivity/source/simpledbt/dbtfactory.cxx +++ b/connectivity/source/simpledbt/dbtfactory.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dbtfactory.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fs $ $Date: 2001-08-13 14:54:24 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:15 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -134,9 +134,9 @@ namespace connectivity } //---------------------------------------------------------------- - ::rtl::Reference< simple::ISQLParser > ODataAccessToolsFactory::createSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory) const + ::rtl::Reference< simple::ISQLParser > ODataAccessToolsFactory::createSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext) const { - return new OSimpleSQLParser(_rxServiceFactory); + return new OSimpleSQLParser(_rxServiceFactory,_pContext); } //........................................................................ @@ -146,6 +146,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2001/08/13 14:54:24 fs + * #90761# +createCharsetHelper + * * Revision 1.1 2001/07/25 13:28:12 fs * initial checkin - main factory for load-on-demand usage of DBTOOLS * diff --git a/connectivity/source/simpledbt/dbtfactory.hxx b/connectivity/source/simpledbt/dbtfactory.hxx index 745a2cebe3b5..21d56e64784c 100644 --- a/connectivity/source/simpledbt/dbtfactory.hxx +++ b/connectivity/source/simpledbt/dbtfactory.hxx @@ -2,9 +2,9 @@ * * $RCSfile: dbtfactory.hxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fs $ $Date: 2001-08-13 14:54:24 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:16 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -90,7 +90,8 @@ namespace connectivity // IDataAccessToolsFactory virtual ::rtl::Reference< simple::ISQLParser > createSQLParser( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory, + const IParseContext* _pContext ) const; virtual ::rtl::Reference< simple::IDataAccessCharSet > createCharsetHelper( ) const; @@ -113,6 +114,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2001/08/13 14:54:24 fs + * #90761# +createCharsetHelper + * * Revision 1.1 2001/07/25 13:28:19 fs * initial checkin - main factory for load-on-demand usage of DBTOOLS * diff --git a/connectivity/source/simpledbt/parsenode_s.cxx b/connectivity/source/simpledbt/parsenode_s.cxx index 5ca0b1f53d04..a51d3f839d39 100644 --- a/connectivity/source/simpledbt/parsenode_s.cxx +++ b/connectivity/source/simpledbt/parsenode_s.cxx @@ -2,9 +2,9 @@ * * $RCSfile: parsenode_s.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: fs $ $Date: 2001-07-25 13:29:09 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -111,17 +111,17 @@ namespace connectivity } //---------------------------------------------------------------- - void OSimpleParseNode::parseNodeToStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta) const + void OSimpleParseNode::parseNodeToStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta,const IParseContext* _pContext) const { - m_pFullNode->parseNodeToStr(_rString, _rxMeta); + m_pFullNode->parseNodeToStr(_rString, _rxMeta,_pContext); } //---------------------------------------------------------------- void OSimpleParseNode::parseNodeToPredicateStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta, const Reference< XNumberFormatter >& _rxFormatter, const Reference< XPropertySet >& _rxField, - const Locale& _rIntl, const sal_Char _cDecSeparator) const + const Locale& _rIntl, const sal_Char _cDecSeparator,const IParseContext* _pContext) const { - m_pFullNode->parseNodeToPredicateStr(_rString, _rxMeta, _rxFormatter, _rxField, _rIntl, _cDecSeparator); + m_pFullNode->parseNodeToPredicateStr(_rString, _rxMeta, _rxFormatter, _rxField, _rIntl, _cDecSeparator,_pContext); } //........................................................................ @@ -131,6 +131,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.1 2001/07/25 13:29:09 fs + * initial checkin - main factory for load-on-demand usage of OSQLParseNode + * * * Revision 1.0 24.07.01 16:32:42 fs ************************************************************************/ diff --git a/connectivity/source/simpledbt/parsenode_s.hxx b/connectivity/source/simpledbt/parsenode_s.hxx index 7da7692a2438..938ca190b963 100644 --- a/connectivity/source/simpledbt/parsenode_s.hxx +++ b/connectivity/source/simpledbt/parsenode_s.hxx @@ -2,9 +2,9 @@ * * $RCSfile: parsenode_s.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: fs $ $Date: 2001-07-25 13:29:15 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -92,7 +92,8 @@ namespace connectivity // ISQLParseNode virtual void parseNodeToStr(::rtl::OUString& _rString, - const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxMeta + const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxMeta, + const IParseContext* _pContext ) const; virtual void parseNodeToPredicateStr(::rtl::OUString& _rString, @@ -100,7 +101,8 @@ namespace connectivity const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxFormatter, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxField, const ::com::sun::star::lang::Locale& _rIntl, - const sal_Char _cDecSeparator + const sal_Char _cDecSeparator, + const IParseContext* _pContext ) const; // disambiguate IReference @@ -117,6 +119,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.1 2001/07/25 13:29:15 fs + * initial checkin - main factory for load-on-demand usage of OSQLParseNode + * * * Revision 1.0 24.07.01 16:32:42 fs ************************************************************************/ diff --git a/connectivity/source/simpledbt/parser_s.cxx b/connectivity/source/simpledbt/parser_s.cxx index 5270f7085d92..3f793a198f42 100644 --- a/connectivity/source/simpledbt/parser_s.cxx +++ b/connectivity/source/simpledbt/parser_s.cxx @@ -2,9 +2,9 @@ * * $RCSfile: parser_s.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fs $ $Date: 2001-08-06 07:34:54 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:18 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -83,8 +83,8 @@ namespace connectivity //= OSimpleSQLParser //================================================================ //---------------------------------------------------------------- - OSimpleSQLParser::OSimpleSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory) - :m_aFullParser(_rxServiceFactory) + OSimpleSQLParser::OSimpleSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext) + :m_aFullParser(_rxServiceFactory,_pContext) { } @@ -101,7 +101,7 @@ namespace connectivity } //---------------------------------------------------------------- - const OParseContext& OSimpleSQLParser::getContext() const + const IParseContext& OSimpleSQLParser::getContext() const { return m_aFullParser.getContext(); } @@ -124,6 +124,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2001/08/06 07:34:54 fs + * #90560# no OSimpleParseNode if we do not have a OSQLParseNode + * * Revision 1.1 2001/07/25 13:28:40 fs * initial checkin - main factory for load-on-demand usage of OSQLParser * diff --git a/connectivity/source/simpledbt/parser_s.hxx b/connectivity/source/simpledbt/parser_s.hxx index aabfa0c305bb..2110884fd0c5 100644 --- a/connectivity/source/simpledbt/parser_s.hxx +++ b/connectivity/source/simpledbt/parser_s.hxx @@ -2,9 +2,9 @@ * * $RCSfile: parser_s.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: fs $ $Date: 2001-07-25 13:28:46 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:14:17 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -88,7 +88,7 @@ namespace connectivity OSQLParser m_aFullParser; public: - OSimpleSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory); + OSimpleSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext); // ISQLParser virtual ::rtl::Reference< simple::ISQLParseNode > predicateTree( @@ -98,7 +98,7 @@ namespace connectivity const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxField ) const; - virtual const OParseContext& getContext() const; + virtual const IParseContext& getContext() const; // disambiguate IReference virtual oslInterlockedCount SAL_CALL acquire(); @@ -114,6 +114,9 @@ namespace connectivity /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.1 2001/07/25 13:28:46 fs + * initial checkin - main factory for load-on-demand usage of OSQLParser + * * * Revision 1.0 24.07.01 16:32:42 fs ************************************************************************/ diff --git a/svx/inc/ParseContext.hxx b/svx/inc/ParseContext.hxx new file mode 100644 index 000000000000..a9ecfc9cef46 --- /dev/null +++ b/svx/inc/ParseContext.hxx @@ -0,0 +1,128 @@ +/************************************************************************* + * + * $RCSfile: ParseContext.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: oj $ $Date: 2002-09-27 11:18:41 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ +#ifndef SVX_QUERYDESIGNCONTEXT_HXX +#define SVX_QUERYDESIGNCONTEXT_HXX + + +#ifndef CONNECTIVITY_IPARSECONTEXT_HXX +#include <connectivity/IParseContext.hxx> +#endif + +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif +#ifndef _UNOTOOLS_LOCALEDATAWRAPPER_HXX +#include <unotools/localedatawrapper.hxx> +#endif + +namespace svxform +{ + //========================================================================== + //= OSystemParseContext + //========================================================================== + class OSystemParseContext : public ::connectivity::IParseContext + { + private: + ByteString m_aSQLInternationals; + + public: + OSystemParseContext(); + + virtual ~OSystemParseContext(); + // retrieves language specific error messages + virtual ::rtl::OUString getErrorMessage(ErrorCode _eCodes) const; + + // retrieves language specific keyword strings (only ASCII allowed) + virtual ::rtl::OString getIntlKeywordAscii(InternationalKeyCode _eKey) const; + + // finds out, if we have an international keyword (only ASCII allowed) + virtual InternationalKeyCode getIntlKeyCode(const ::rtl::OString& rToken) const; + + /** get's a locale instance which should be used when parsing in the context specified by this instance + <p>if this is not overridden by derived classes, it returns the static default locale.</p> + */ + virtual ::com::sun::star::lang::Locale getPreferredLocale( ) const; + + public: + // helper methods to ease access to some of the characteristics of the locale + sal_Unicode getNumDecimalSep( ) const; + sal_Unicode getNumThousandSep( ) const; + }; + + //========================================================================== + //= OParseContextClient + //========================================================================== + /** helper class which needs access to a (shared and ref-counted) OSystemParseContext + instance. + */ + class OParseContextClient + { + protected: + OParseContextClient(); + virtual ~OParseContextClient(); + + const OSystemParseContext* getParseContext() const; + }; +} +#endif // SVX_QUERYDESIGNCONTEXT_HXX + + + diff --git a/svx/source/form/ParseContext.cxx b/svx/source/form/ParseContext.cxx new file mode 100644 index 000000000000..af0d6026d992 --- /dev/null +++ b/svx/source/form/ParseContext.cxx @@ -0,0 +1,245 @@ +/************************************************************************* + * + * $RCSfile: ParseContext.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: oj $ $Date: 2002-09-27 11:22:36 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ +#ifndef SVX_QUERYDESIGNCONTEXT_HXX +#include "ParseContext.hxx" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef INCLUDED_SVTOOLS_SYSLOCALE_HXX +#include <svtools/syslocale.hxx> +#endif +#ifndef _SVX_FMRESIDS_HRC +#include "fmresids.hrc" +#endif +#include "dialmgr.hxx" + +using namespace svxform; +using namespace ::connectivity; +//========================================================================== +//= OSystemParseContext +//========================================================================== +DBG_NAME(OSystemParseContext); +//----------------------------------------------------------------------------- +OSystemParseContext::OSystemParseContext() : IParseContext() +{ + DBG_CTOR(OSystemParseContext,NULL); + m_aSQLInternationals = ByteString(SVX_RES(RID_STR_SVT_SQL_INTERNATIONAL),RTL_TEXTENCODING_ASCII_US); +} + +//----------------------------------------------------------------------------- +OSystemParseContext::~OSystemParseContext() +{ + DBG_DTOR(OSystemParseContext,NULL); +} + +//----------------------------------------------------------------------------- +::com::sun::star::lang::Locale OSystemParseContext::getPreferredLocale( ) const +{ + return SvtSysLocale().GetLocaleData().getLocale(); +} + +//----------------------------------------------------------------------------- +::rtl::OUString OSystemParseContext::getErrorMessage(ErrorCode _eCode) const +{ + String aMsg; + switch (_eCode) + { + case ERROR_GENERAL: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ERROR); break; + case ERROR_GENERAL_HINT: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ERROR_BEFORE); break; + case ERROR_VALUE_NO_LIKE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_VALUE_NO_LIKE); break; + case ERROR_FIELD_NO_LIKE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_FIELD_NO_LIKE); break; + case ERROR_INVALID_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_CRIT_NO_COMPARE); break; + case ERROR_INVALID_INT_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_INT_NO_VALID); break; + case ERROR_INVALID_STRING_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_NO_NUM); break; + case ERROR_INVALID_DATE_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ACCESS_DAT_NO_VALID); break; + case ERROR_INVALID_REAL_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_REAL_NO_VALID); break; + case ERROR_INVALID_TABLE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_TABLE); break; + case ERROR_INVALID_COLUMN: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_COLUMN); break; + } + return aMsg; +} + +//----------------------------------------------------------------------------- +::rtl::OString OSystemParseContext::getIntlKeywordAscii(InternationalKeyCode _eKey) const +{ + ByteString aKeyword; + switch (_eKey) + { + case KEY_LIKE: aKeyword = m_aSQLInternationals.GetToken(0); break; + case KEY_NOT: aKeyword = m_aSQLInternationals.GetToken(1); break; + case KEY_NULL: aKeyword = m_aSQLInternationals.GetToken(2); break; + case KEY_TRUE: aKeyword = m_aSQLInternationals.GetToken(3); break; + case KEY_FALSE: aKeyword = m_aSQLInternationals.GetToken(4); break; + case KEY_IS: aKeyword = m_aSQLInternationals.GetToken(5); break; + case KEY_BETWEEN: aKeyword = m_aSQLInternationals.GetToken(6); break; + case KEY_OR: aKeyword = m_aSQLInternationals.GetToken(7); break; + case KEY_AND: aKeyword = m_aSQLInternationals.GetToken(8); break; + case KEY_AVG: aKeyword = m_aSQLInternationals.GetToken(9); break; + case KEY_COUNT: aKeyword = m_aSQLInternationals.GetToken(10); break; + case KEY_MAX: aKeyword = m_aSQLInternationals.GetToken(11); break; + case KEY_MIN: aKeyword = m_aSQLInternationals.GetToken(12); break; + case KEY_SUM: aKeyword = m_aSQLInternationals.GetToken(13); break; + } + return aKeyword; +} + +//----------------------------------------------------------------------------- +static sal_Unicode lcl_getSeparatorChar( const String& _rSeparator, sal_Unicode _nFallback ) +{ + DBG_ASSERT( 0 < _rSeparator.Len(), "::lcl_getSeparatorChar: invalid decimal separator!" ); + + sal_Unicode nReturn( _nFallback ); + if ( _rSeparator.Len() ) + nReturn = static_cast< sal_Char >( _rSeparator.GetBuffer( )[0] ); + return nReturn; +} + +//----------------------------------------------------------------------------- +sal_Unicode OSystemParseContext::getNumDecimalSep( ) const +{ + return lcl_getSeparatorChar( SvtSysLocale().GetLocaleData().getNumDecimalSep(), '.' ); +} + +//----------------------------------------------------------------------------- +sal_Unicode OSystemParseContext::getNumThousandSep( ) const +{ + return lcl_getSeparatorChar( SvtSysLocale().GetLocaleData().getNumThousandSep(), ',' ); +} +// ----------------------------------------------------------------------------- +IParseContext::InternationalKeyCode OSystemParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const +{ + static IParseContext::InternationalKeyCode Intl_TokenID[] = + { + KEY_LIKE, KEY_NOT, KEY_NULL, KEY_TRUE, + KEY_FALSE, KEY_IS, KEY_BETWEEN, KEY_OR, + KEY_AND, KEY_AVG, KEY_COUNT, KEY_MAX, + KEY_MIN, KEY_SUM + }; + + sal_uInt32 nCount = sizeof Intl_TokenID / sizeof Intl_TokenID[0]; + for (sal_uInt32 i = 0; i < nCount; i++) + { + ::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]); + if (rToken.equalsIgnoreAsciiCase(aKey)) + return Intl_TokenID[i]; + } + + return KEY_NONE; +} + + +// ============================================================================= +// ============================================================================= +namespace +{ + // ----------------------------------------------------------------------------- + ::osl::Mutex& getSafteyMutex() + { + static ::osl::Mutex s_aSafety; + return s_aSafety; + } + // ----------------------------------------------------------------------------- + oslInterlockedCount& getCounter() + { + static oslInterlockedCount s_nCounter; + return s_nCounter; + } + // ----------------------------------------------------------------------------- + OSystemParseContext* getSharedContext(OSystemParseContext* _pContext = NULL,sal_Bool _bSet = sal_False) + { + static OSystemParseContext* s_pSharedContext = NULL; + if ( _pContext && !s_pSharedContext || _bSet ) + s_pSharedContext = _pContext; + return s_pSharedContext; + } + // ----------------------------------------------------------------------------- +} +// ----------------------------------------------------------------------------- +OParseContextClient::OParseContextClient() +{ + ::osl::MutexGuard aGuard( getSafteyMutex() ); + if ( 1 == osl_incrementInterlockedCount( &getCounter() ) ) + { // first instance + getSharedContext( new OSystemParseContext ); + } +} + +// ----------------------------------------------------------------------------- +OParseContextClient::~OParseContextClient() +{ + { + ::osl::MutexGuard aGuard( getSafteyMutex() ); + if ( 0 == osl_decrementInterlockedCount( &getCounter() ) ) + delete getSharedContext(NULL,sal_True); + } +} +// ----------------------------------------------------------------------------- +const OSystemParseContext* OParseContextClient::getParseContext() const +{ + return getSharedContext(); +} +// ----------------------------------------------------------------------------- + + + + + diff --git a/svx/source/form/fmstring.src b/svx/source/form/fmstring.src index 8605503558bc..94e23d10ee2d 100644 --- a/svx/source/form/fmstring.src +++ b/svx/source/form/fmstring.src @@ -2,9 +2,9 @@ * * $RCSfile: fmstring.src,v $ * - * $Revision: 1.44 $ + * $Revision: 1.45 $ * - * last change: $Author: rt $ $Date: 2002-09-05 11:27:50 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -7450,7 +7450,333 @@ Resource RID_RES_CONTROL_WIZARDS_ERROR_CONTEXTS Text[ thai ] = "ไม่สามารถเริ่มการนำร่องกล่องการจัดกลุ่มอัตโนมัติได้ "; }; }; +String RID_STR_SVT_SQL_INTERNATIONAL +{ + Text = "WIE;NICHT;LEER;WAHR;FALSCH;IST;ZWISCHEN;ODER;UND;Durchschnitt;Anzahl;Maximum;Minimum;Summe" ; + Text [ ENGLISH ] = "LIKE;NOT;NULL;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum" ; + Text [ english_us ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum" ; + Text [ portuguese ] = "COMO;NO;VAZIO;VERDADEIRO;FALSO;;ENTRE;OU;E;mdia;quantidade;mximo;mnimo;soma" ; + Text [ portuguese_brazilian ] = "WIE;NICHT;LEER;WAHR;FALSCH;IST;ZWISCHEN;ODER;UND" ; + Text [ swedish ] = "SOM;INTE;TOM;SANN;FALSK;R;MELLAN;ELLER;OCH;genomsnitt;antal;maximum;minimum;summa" ; + Text [ danish ] = "SOM;IKKE;TOM;SAND;FALSK;ER;MELLEM;ELLER;OG;Gennemsnit;Antal;Maksimum;Minimum;Sum" ; + Text [ italian ] = "COME;NON;VUOTO;VERO;FALSO;;TRA;O;E;media;quantit;massimo;minimo;totale" ; + Text [ spanish ] = "COMO;NO;VACIO;VERDADERO;FALSO;ES;ENTRE;O;Y;Promedio;Cantidad;Mximo;Mnimo;Suma" ; + Text [ french ] = "COMME;PAS;VIDE;VRAI;FAUX;EST;ENTRE;OU;ET;moyenne;nombre;maximum;minimum;somme" ; + Text [ dutch ] = "ALS;NIET;LEEG;WAAR;ONWAAR;IS;TUSSEN;OF;EN;Gemiddelde;Aantal;Maximum;Minimum;Som" ; + Text[ chinese_simplified ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum"; + Text[ russian ] = ";;;;;;;;;;;;;"; + Text[ polish ] = "JAK;NIE;PUSTY;PRAWDA;FASZ;JEST;POMIDZY;LUB;I;rednia;Numer;Maksimum;Minimum;Suma"; + Text[ japanese ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum"; + Text[ chinese_traditional ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum"; + Text[ arabic ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum"; + Text[ dutch ] = "ALS;NIET;LEEG;WAAR;ONWAAR;IS;TUSSEN;OF;EN;Gemiddelde;Aantal;Maximum;Minimum;Som"; + Text[ chinese_simplified ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum"; + Text[ greek ] = ";;;;;;;;; ;;;;"; + Text[ korean ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;평균;번호;최대;최소;합"; + Text[ turkish ] = "GB;DEL;BO;DORU;YANLI;OLMA;ARADA;YA DA;VE;Ortalama;Adet says;Azami;Asgari;Toplam"; + Text[ finnish ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Keskiarvo;Mr;Enintn;Vhintn;Summa"; + Text[ catalan ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Promig;Recompte;Mxim;Mnim;Suma"; + Text[ thai ] = "เหมือน;ไม่;ว่าง;จริง;เท็จ;อยู่;ระหว่าง;หรือ;และ;เฉลี่ย;นับ;มากที่สุด;น้อยที่สุด;ผลรวม"; +}; + +String RID_STR_SVT_SQL_SYNTAX_ERROR +{ + /* ### ACHTUNG: Neuer Text in Resource? Syntaxfehler im SQL-Ausdruck : Fehlerhafte Syntax */ + Text = "Syntaxfehler im SQL-Ausdruck" ; + Text [ ENGLISH ] = "Syntax error in SQL-expression" ; + Text [ english_us ] = "Syntax error in SQL statement" ; + Text [ portuguese ] = "Erro de sintaxe na expresso SQL" ; + Text [ portuguese_brazilian ] = "Fehlerhafte Syntax" ; + Text [ swedish ] = "Syntaxfel i SQL-uttryck" ; + Text [ danish ] = "Syntaksfejl i SQL-stning" ; + Text [ italian ] = "Errore di sintassi nell'espressione SQL" ; + Text [ spanish ] = "Error de sintaxis en la expresin SQL" ; + Text [ french ] = "Erreur de syntaxe dans l'expression SQL" ; + Text [ dutch ] = "Foutieve syntaxis in SQL-uitdrukking" ; + Text[ chinese_simplified ] = "SQL 表达式语法错误"; + Text[ russian ] = " SQL"; + Text[ polish ] = "Bd skadni w wyraeniu SQL"; + Text[ japanese ] = "SQL 表現のシンタックスエラー"; + Text[ chinese_traditional ] = "SQL 表達語法錯誤"; + Text[ arabic ] = " SQL"; + Text[ dutch ] = "Foutieve syntaxis in SQL-uitdrukking"; + Text[ chinese_simplified ] = "SQL 表达式语法错误"; + Text[ greek ] = " SQL"; + Text[ korean ] = "SQL 식에 구문 오류"; + Text[ turkish ] = "SQL terimi sz dizimi hatas"; + Text[ finnish ] = "Syntaksivirhe SQL-lausekkeessa"; + Text[ catalan ] = "S'ha produt un error de sintaxi en l'expressi SQL"; + Text[ thai ] = "ไวยกรณ์ผิดพลาดในประโยค SQL "; +}; +String RID_STR_SVT_SQL_SYNTAX_ERROR_BEFORE +{ + /* ### ACHTUNG: Neuer Text in Resource? Syntaxfehler im SQL-Ausdruck : Fehlerhafte Syntax */ + Text = "bevor \"#\" Ausdruck." ; + Text [ ENGLISH ] = "before \"#\" expression." ; + Text[ italian ] = "Davanti all'espressione \"#\"."; + Text[ portuguese_brazilian ] = "before \"#\" expression."; + Text[ portuguese ] = "antes da expresso \"#\"."; + Text[ danish ] = "fr \"#\"-udtryk."; + Text[ french ] = "avant l'expression \"#\"."; + Text[ swedish ] = "fre \"#\" uttryck."; + Text[ dutch ] = "voor \"#\" uitdrukking."; + Text[ spanish ] = "expresin anterior a \"#\""; + Text[ english_us ] = "before \"#\" expression."; + Text[ chinese_simplified ] = "\"#\" 表达式之前。"; + Text[ russian ] = " \"#\"."; + Text[ polish ] = "przed wyraeniem \"#\"."; + Text[ japanese ] = "\"#\" 表現の前にあります。"; + Text[ arabic ] = " \"#\"."; + Text[ chinese_traditional ] = "在<#>表達之前"; + Text[ dutch ] = "voor \"#\" uitdrukking."; + Text[ chinese_simplified ] = "\"#\" 表达式之前。"; + Text[ greek ] = " \"#\"."; + Text[ korean ] = "\"#\" 식 전에"; + Text[ turkish ] = "\"#\" teriminden nce."; + Text[ finnish ] = "ennen \"#\" lauseketta."; + Text[ catalan ] = "abans de l'expressi \"#\"."; + Text[ thai ] = "ก่อนการอธิบาย \"#\" "; +}; + +String RID_STR_SVT_SQL_SYNTAX_VALUE_NO_LIKE +{ + Text = "Der Wert #1 kann nicht mit WIE verwendet werden!"; + Text [ ENGLISH ] = "The value #1 can not be used with LIKE!"; + Text[ english_us ] = "The value #1 cannot be used with LIKE!"; + Text[ portuguese ] = "O valor #1 no pode ser utilizado com COMO!"; + Text[ greek ] = " #1 'LIKE'!"; + Text[ dutch ] = "Waarde #1 kan niet worden gebruikt bij ALS!"; + Text[ french ] = "La valeur #1 ne peut pas tre utilise avec COMME !"; + Text[ spanish ] = "El valor #1 no se puede usar con COMO!"; + Text[ swedish ] = "Vrdet #1 kan inte anvndas med SOM!"; + Text[ russian ] = " #1 !"; + Text[ italian ] = "Il valore #1 non pu essere usato con COME!"; + Text[ danish ] = "Vrdien #1 kan ikke anvendes sammen med SOM!"; + Text[ polish ] = "Wartoci #1 nie mona zastosowa z JAK!"; + Text[ portuguese_brazilian ] = "The value #1 can not be used with LIKE!"; + Text[ japanese ] = "#1 の値は LIKE と一緒に使用できません。"; + Text[ korean ] = "값 #1은 LIKE와 같이 사용될 수 없습니다!"; + Text[ chinese_simplified ] = "数值 #1不能与LIKE同时使用!"; + Text[ chinese_traditional ] = "LIKE 和數值 #1 不可以一起使用!"; + Text[ arabic ] = " #1 LIKE!"; + Text[ turkish ] = "#1 deeri, GB ile birlikte kullanlamaz!"; + Text[ finnish ] = "Arvoa #1 ei voi kytt funktion LIKE kanssa."; + Text[ catalan ] = "El valor #1 no es pot utilitzar amb LIKE."; + Text[ thai ] = "ไม่สามารถใช้ค่า #1 กับ LIKE ได้!"; +}; + +String RID_STR_SVT_SQL_SYNTAX_FIELD_NO_LIKE +{ + Text = "WIE kann bei diesem Feld nicht benutzt werden!"; + Text [ ENGLISH ] = "LIKE can not be used with this field!"; + Text[ english_us ] = "LIKE cannot be used with this field!"; + Text[ portuguese ] = "COMO no pode ser utilizado neste campo!"; + Text[ greek ] = " 'LIKE' !"; + Text[ dutch ] = "ALS kan niet worden gebruikt bij dit veld!"; + Text[ french ] = "COMME ne peut pas tre utilis avec ce champ !"; + Text[ spanish ] = "COMO no se puede usar con este campo!"; + Text[ swedish ] = "SOM kan inte anvndas med det hr fltet!"; + Text[ russian ] = " !"; + Text[ italian ] = "COME non pu essere utilizzato in questo campo!"; + Text[ danish ] = "SOM kan ikke bruges ved dette felt!"; + Text[ polish ] = "JAK nie mona uy przy tym polu!"; + Text[ portuguese_brazilian ] = "LIKE can not be used with this field!"; + Text[ japanese ] = "LIKE はこのフィールドで使用できません。"; + Text[ korean ] = "LIKE는 이 필드에서 사용할 수 없습니다!"; + Text[ chinese_simplified ] = "在这个字段中不能使用LIKE!"; + Text[ chinese_traditional ] = "這欄不可以使用 LIKE!"; + Text[ arabic ] = " LIKE !"; + Text[ turkish ] = "GB, bu alanda kullanlamaz!"; + Text[ finnish ] = "Funktiota LIKE ei voi kytt tss kentss."; + Text[ catalan ] = "LIKE no es pot utilitzar amb aquest camp."; + Text[ thai ] = "ไม่สามารถใช้ LIKE กับเขตข้อมูลนี้ได้!"; +}; +String RID_STR_SVT_SQL_SYNTAX_NO_NUM +{ + Text = "Das Feld kann nicht mit einer Zeichenkette verglichen werden!"; + Text [ ENGLISH ] = "The field can not be compared with a string!"; + Text[ english_us ] = "The field cannot be compared with a string."; + Text[ portuguese ] = "Este campo no pode ser comparado a uma cadeia de caracteres!"; + Text[ greek ] = " !"; + Text[ dutch ] = "Het veld kan niet worden vergeleken met een string!"; + Text[ french ] = "Impossible de comparer ce champ avec une chane de caractres !"; + Text[ spanish ] = "El campo no se puede comparar con una cadena de caracteres!"; + Text[ swedish ] = "Fltet kan inte jmfras med en teckenstrng!"; + Text[ russian ] = " !"; + Text[ italian ] = "Il campo non pu essere paragonato a una stringa!"; + Text[ danish ] = "Feltet kan ikke sammenlignes med en streng!"; + Text[ polish ] = "Pola nie mona porwna z cigiem znakw!"; + Text[ portuguese_brazilian ] = "The field can not be compared with a string!"; + Text[ japanese ] = "このフィールドは文字列で比較できません。"; + Text[ korean ] = "필드를 문자열과 비교할 수 없습니다!"; + Text[ chinese_simplified ] = "这个字段不能与字符串相比较!"; + Text[ chinese_traditional ] = "這欄的內容不可以和字串相比較!"; + Text[ arabic ] = " !"; + Text[ turkish ] = "Alan, bir karakter zinciri ile karlatrlamaz!"; + Text[ finnish ] = "Kentt ei voi verrata merkkijonoon."; + Text[ catalan ] = "El camp no es pot comparar amb una cadena."; + Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยสายอักขระได้"; +}; + +String RID_STR_SVT_SQL_SYNTAX_ACCESS_DAT_NO_VALID +{ + Text = "Das Feld kann nicht mit einem Datum verglichen werden!"; + Text [ ENGLISH ] = "The field can not be compared with a date!"; + Text[ english_us ] = "The field cannot be compared with a date."; + Text[ portuguese ] = "Este campo no pode ser comparado com uma data!"; + Text[ greek ] = " !"; + Text[ dutch ] = "Het veld kan niet worden vergeleken met een datum!"; + Text[ french ] = "Impossible de comparer ce champ avec une date !"; + Text[ spanish ] = "El campo no se puede comparar con una fecha!"; + Text[ swedish ] = "Fltet kan inte jmfras med ett datum!"; + Text[ russian ] = " !"; + Text[ italian ] = "Il campo non pu essere paragonato a un dato!"; + Text[ danish ] = "Feltet kan ikke sammenlignes med en dato!"; + Text[ polish ] = "Pola nie mona porwna z dat!"; + Text[ portuguese_brazilian ] = "The field can not be compared with a ACCESS date!"; + Text[ japanese ] = "このフィールドは日付で比較できません。"; + Text[ korean ] = "필드를 날짜와 비교할 수 없습니다!"; + Text[ chinese_simplified ] = "这个字段不能与日期相比较!"; + Text[ chinese_traditional ] = "這欄的內容不可以和一個日期相比較!"; + Text[ arabic ] = " !"; + Text[ turkish ] = "Alan, bir tarih ile karlatrlamaz!"; + Text[ finnish ] = "Kentt ei voi verrata pivmrn."; + Text[ catalan ] = "El camp no es pot comparar amb una data."; + Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยกับวันที่ได้"; +}; + +String RID_STR_SVT_SQL_SYNTAX_INT_NO_VALID +{ + Text = "Das Feld kann nicht mit einem Integer verglichen werden!"; + Text [ ENGLISH ] = "The field can not be compared with a integer!"; + Text[ english_us ] = "The field cannot be compared with an integer."; + Text[ portuguese ] = "Este campo no pode ser comparado com um nmero inteiro!"; + Text[ greek ] = " !"; + Text[ dutch ] = "Het veld kan niet worden vergeleken met een Integer!"; + Text[ french ] = "Impossible de comparer cLe champ avec un nombre entier !"; + Text[ spanish ] = "El campo no se puede comparar con un integral!"; + Text[ swedish ] = "Fltet kan inte jmfras med ett heltal!"; + Text[ russian ] = " !"; + Text[ italian ] = "Il campo non pu essere paragonato a un integrale!"; + Text[ danish ] = "Feltet kan ikke sammenlignes med et heltal!"; + Text[ polish ] = "Porwnanie pola z liczb cakowit nie jest moliwe!"; + Text[ portuguese_brazilian ] = "The field can not be compared with a integer!"; + Text[ japanese ] = "このフィールドは整数で比較できません。"; + Text[ korean ] = "필드를 정수와 비교할 수 없습니다!"; + Text[ chinese_simplified ] = "这个字段不能与一个整数相比较!"; + Text[ chinese_traditional ] = "這欄的內容不可以和整數相比較!"; + Text[ arabic ] = " !"; + Text[ turkish ] = "Alan, bir tamsay ile karlatrlamaz!"; + Text[ finnish ] = "Kentt ei voi verrata muuttujaan."; + Text[ catalan ] = "El camp no es pot comparar amb un enter."; + Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยจำนวนเต็มได้"; +}; +String RID_STR_SVT_SQL_SYNTAX_TABLE +{ + Text = "Die Tabelle \"#\" ist in der Datenbank unbekannt!"; + Text [ ENGLISH ] = "The table \"#\" is unknown in the database!"; + Text[ english_us ] = "The table \"#\" is unknown in the database."; + Text[ portuguese ] = "A tabela \"#\" desconhecida na base de dados!"; + Text[ russian ] = " \"#\" ."; + Text[ greek ] = " \"#\" !"; + Text[ dutch ] = "Tabel \"#\" niet bekend in de database!"; + Text[ french ] = "La table \"#\" est inconnue dans la base de donnes !"; + Text[ spanish ] = "La tabla \"#\" es desconocida en la base de datos!"; + Text[ italian ] = "La tabella \"#\" risulta sconosciuta al database"; + Text[ danish ] = "Tabellen \"#\" er ukendt i databasen!"; + Text[ swedish ] = "Tabellen \"#\" r oknd i databasen!"; + Text[ polish ] = "Tabela \"#\" jest nieznana w bazie danych!"; + Text[ portuguese_brazilian ] = "The table \"#\" is unknown in the database!"; + Text[ japanese ] = "テーブル \"#\" は、データベースでは不明です。"; + Text[ korean ] = "데이터베이스에 알 수 없는 \"#\" 시트가 포함되어 있습니다.!"; + Text[ chinese_simplified ] = "这个表格 \"#\" 对数据库而言是不明的!"; + Text[ chinese_traditional ] = "這個表格<#>對資料庫而言是不明的!"; + Text[ turkish ] = "The table \"#\" is unknown in the database!"; + Text[ arabic ] = " \"#\" !"; + Text[ finnish ] = "Taulukkoa \"#\" ei tunneta tietokannassa."; + Text[ catalan ] = "La taula \"#\" s desconeguda a la base de dades."; + Text[ thai ] = "ไม่รู้จักตาราง \"#\" ในฐานข้อมูล"; +}; +String RID_STR_SVT_SQL_SYNTAX_COLUMN +{ + Text = "Die Spalte \"#\" ist in der Tabelle \"#\" unbekannt!"; + Text [ ENGLISH ] = "The column \"#\" is unknown in the table \"#\"!"; + Text[ english_us ] = "The column \"#\" is unknown in the table \"#\"!"; + Text[ portuguese ] = "A coluna \"#\" desconhecida na tabela \"#\"!"; + Text[ russian ] = " \"#\" \"#\" ."; + Text[ greek ] = " \"#\" \"#\"!"; + Text[ dutch ] = "Kolom \"#\" is onbekend in tabel \"#\"!"; + Text[ french ] = "La colonne \"#\" est inconnue dans la table \"#\" !"; + Text[ spanish ] = "La columna \"#\" es desconocida en la tabla \"#\"!"; + Text[ italian ] = "La colonna \"#\" risulta sconosciuta alla tabella \"#\"!"; + Text[ danish ] = "Kolonnen \"#\" er ukendt i tabellen \"#\"!"; + Text[ swedish ] = "Kolumnen \"#\" r oknd i tabellen \"#\"!"; + Text[ polish ] = "Kolumna \"#\" jest w tabeli \"#\" nieznana!"; + Text[ portuguese_brazilian ] = "The column \"#\" is unknown in the table \"#\"!"; + Text[ japanese ] = "列 \"#\" は、\"#\" のテーブルでは不明です。"; + Text[ korean ] = "\"#\" 표에 알 수 없는 \"#\"열이 포함되어 있습니다.!"; + Text[ chinese_simplified ] = "这个列 \"#\" 对数据库 \"#\" 而言是不明的!"; + Text[ chinese_traditional ] = "這欄位<#>對這個表格<#>而言是不明的!"; + Text[ turkish ] = "The column \"#\" is unknown in the table \"#\"!"; + Text[ arabic ] = " \"#\" \"#\" !"; + Text[ finnish ] = "Saraketta \"#\" ei tunneta taulukossa \"#\"."; + Text[ catalan ] = "La columna \"#\" s desconeguda a la taula \"#\"."; + Text[ thai ] = "ไม่รู้จักคอลัมน์ \"#\" ในตาราง \"#\"!"; +}; +String RID_STR_SVT_SQL_SYNTAX_REAL_NO_VALID +{ + Text = "Das Feld kann nicht mit einer Fliekommazahl verglichen werden!"; + Text [ ENGLISH ] = "The field can not be compared with a real!"; + Text[ english_us ] = "The field cannot be compared with a floating point number."; + Text[ portuguese ] = "Este campo no pode ser comparado com um nmero de vrgula flutuante!"; + Text[ greek ] = " !"; + Text[ dutch ] = "Het veld kan niet worden vergeleken met een drijvende-komma getal!"; + Text[ french ] = "Impossible de comparer le champ avec un nombre virgule flottante !"; + Text[ spanish ] = "El campo no se puede comparar con un nmero de coma flotante!"; + Text[ swedish ] = "Fltet kan inte jmfras med ett flytande kommatal!"; + Text[ russian ] = " !"; + Text[ italian ] = "Il campo non pu essere paragonato a un numero in virgola mobile!"; + Text[ danish ] = "Feltet kan ikke sammenlignes med et flydende tal!"; + Text[ polish ] = "Porwnanie pola z liczb rzeczywist nie jest moliwe!"; + Text[ portuguese_brazilian ] = "The field can not be compared with a real!"; + Text[ japanese ] = "このフィールドは浮動小数で比較できません。"; + Text[ korean ] = "필드를 부동소수점의 수와 비교할 수 없습니다!"; + Text[ chinese_simplified ] = "这个字段不能与一个带可变小数点位数相比较!"; + Text[ chinese_traditional ] = "這欄的內容不可以和小數相比較!"; + Text[ arabic ] = " !"; + Text[ turkish ] = "Alan, bir kayan nokta says ile karlatrlamaz!"; + Text[ finnish ] = "Kentt ei voi verrata irralliseen pistenumeroon."; + Text[ catalan ] = "El camp no es pot comparar amb un nmero de coma flotant."; + Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยตัวเลขทศนิยมได้"; +}; + +String RID_STR_SVT_SQL_SYNTAX_CRIT_NO_COMPARE +{ + Text = "Das angegebene Kriterium kann nicht mit diesem Feld verglichen werden!!"; + Text [ ENGLISH ] = "The entered critisim can not be compared with this field!"; + Text[ english_us ] = "The entered criterion cannot be compared with this field."; + Text[ portuguese ] = "Impossvel comparar o critrio indicado com este campo!"; + Text[ russian ] = " ."; + Text[ greek ] = " !"; + Text[ dutch ] = "Het aangegeven criterium kan niet worden vergeleken met dit veld!"; + Text[ french ] = "Impossible de comparer le critre saisi avec ce champ !"; + Text[ spanish ] = "El criterio indicado no se puede comparar con este campo!"; + Text[ italian ] = "Il criterio specificato non pu essere paragonato a questo campo!"; + Text[ danish ] = "Det angivne kriterium kan ikke sammenlignes med dette felt!!"; + Text[ swedish ] = "Det angivna kriteriet kan inte jmfras med det hr fltet!!"; + Text[ polish ] = "Podanego kryterium nie mona porwna z danym polem!!"; + Text[ portuguese_brazilian ] = "The entered critisim can not be compared with this field!!"; + Text[ japanese ] = "入力した検索条件はこのフィールドで比較できません。"; + Text[ korean ] = "지정한 기준을 이 필드와 비교할 수 없습니다!!"; + Text[ chinese_simplified ] = "设定的条件无法与这个字段比较!"; + Text[ chinese_traditional ] = "指定的條件無法和這個欄位相比較!"; + Text[ arabic ] = " ѡ !!"; + Text[ turkish ] = "Belirtilen lt, bu alan ile karlatrlamaz!!"; + Text[ finnish ] = "Sytetty ehtoa ei voi verrata thn kenttn."; + Text[ catalan ] = "El criteri indicat no es pot comparar amb aquest camp!"; + Text[ thai ] = "ไม่สามารถเปรียบเทียบเกณฑ์ที่ป้อนด้วยเขตข้อมูลนี้ได้"; +}; diff --git a/svx/source/form/makefile.mk b/svx/source/form/makefile.mk index ff2c05ce5cc4..4f2ba3d4c803 100644 --- a/svx/source/form/makefile.mk +++ b/svx/source/form/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.11 $ +# $Revision: 1.12 $ # -# last change: $Author: fs $ $Date: 2002-05-08 07:38:58 $ +# last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -90,8 +90,9 @@ SRC1FILES= \ SLOFILES = \ - $(SLO)$/dbcharsethelper.obj \ - $(SLO)$/typeconversionclient.obj \ + $(SLO)$/dbcharsethelper.obj \ + $(SLO)$/ParseContext.obj \ + $(SLO)$/typeconversionclient.obj \ $(SLO)$/confirmdelete.obj \ $(SLO)$/dbtoolsclient.obj \ $(SLO)$/sqlparserclient.obj \ diff --git a/svx/source/form/sqlparserclient.cxx b/svx/source/form/sqlparserclient.cxx index 6aa7b0d3ee57..43381ada53fb 100644 --- a/svx/source/form/sqlparserclient.cxx +++ b/svx/source/form/sqlparserclient.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sqlparserclient.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fs $ $Date: 2002-09-12 14:15:52 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -62,6 +62,7 @@ #ifndef SVX_SQLPARSERCLIENT_HXX #include "sqlparserclient.hxx" #endif +#include "ParseContext.hxx" //........................................................................ namespace svxform @@ -86,7 +87,7 @@ namespace svxform if (!getFactory().is()) ODbtoolsClient::create(); if (getFactory().is()) - m_xParser = getFactory()->createSQLParser(m_xORB); + m_xParser = getFactory()->createSQLParser(m_xORB,getParseContext()); } //........................................................................ @@ -96,6 +97,9 @@ namespace svxform /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2002/09/12 14:15:52 fs + * #97420# (on behalf of BerryJia@openoffice.org) lazy construction, to load the dbtools lib only if needed + * * Revision 1.1 2001/07/25 13:35:31 fs * initial checkin - base class for load-on-demand usage of the OSQLParser * diff --git a/svx/source/inc/sqlparserclient.hxx b/svx/source/inc/sqlparserclient.hxx index 9bbeeaa90d31..c99b6d2a7a93 100644 --- a/svx/source/inc/sqlparserclient.hxx +++ b/svx/source/inc/sqlparserclient.hxx @@ -2,9 +2,9 @@ * * $RCSfile: sqlparserclient.hxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fs $ $Date: 2002-09-12 14:15:27 $ + * last change: $Author: oj $ $Date: 2002-09-27 11:20:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -65,6 +65,9 @@ #ifndef SVX_DBTOOLSCLIENT_HXX #include "dbtoolsclient.hxx" #endif +#ifndef SVX_QUERYDESIGNCONTEXT_HXX +#include "ParseContext.hxx" +#endif #ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #endif @@ -78,6 +81,7 @@ namespace svxform //= OSQLParserClient //==================================================================== class OSQLParserClient : public ODbtoolsClient + ,public ::svxform::OParseContextClient { private: //add by BerryJia for fixing Bug97420 Time:2002-9-12-11:00(PRC time) @@ -118,6 +122,9 @@ namespace svxform /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.2 2002/09/12 14:15:27 fs + * #97420# (on behalf of BerryJia@openoffice.org) lazy construction, to load the dbtools lib only if needed + * * Revision 1.1 2001/07/25 13:35:23 fs * initial checkin - base class for load-on-demand usage of the OSQLParser * |