Tag: cws_src680_dba24c
User: fs      
Date: 2007-09-18 20:05:28+0000
Modified:
   dba/connectivity/source/parse/sqlbison.y
   dba/connectivity/source/parse/sqliterator.cxx
   dba/connectivity/source/parse/sqlnode.cxx

Log:
 during #i81095#: outsourced the CYCLIC_SUB_QUERIES error to the new 
css.sdb.ErrorCondition

File Changes:

Directory: /dba/connectivity/source/parse/
==========================================

File [changed]: sqlbison.y
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqlbison.y?r1=1.57&r2=1.57.18.1
Delta lines:  +2 -4
-------------------
--- sqlbison.y  2007-07-31 13:38:53+0000        1.57
+++ sqlbison.y  2007-09-18 20:05:25+0000        1.57.18.1
@@ -1,7 +1,7 @@
 %{
 //--------------------------------------------------------------------------
 //
-// $Header: /cvs/dba/connectivity/source/parse/sqlbison.y,v 1.57 2007/07/31 
13:38:53 hr Exp $
+// $Header: /cvs/dba/connectivity/source/parse/sqlbison.y,v 1.57.18.1 
2007/09/18 20:05:25 fs Exp $
 //
 // Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
 //
@@ -9,7 +9,7 @@
 //     OJ
 //
 // Last change:
-//     $Author: hr $ $Date: 2007/07/31 13:38:53 $ $Revision: 1.57 $
+//     $Author: fs $ $Date: 2007/09/18 20:05:25 $ $Revision: 1.57.18.1 $
 //
 // Description:
 //
@@ -3136,7 +3136,6 @@
 IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_COLUMN,  "The column \"#1\" is 
unknown in the table \"#2\".");
 IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_TABLE_EXIST,     "The database 
already contains a table or view with name \"#\".");
 IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_QUERY_EXIST,     "The database 
already contains a query with name \"#\".");
-IMPLEMENT_CONSTASCII_STRING(ERROR_STR_CYCLIC_SUB_QUERIES,   "The statement 
contains a cyclic reference to one or more sub queries.");
 
 IMPLEMENT_CONSTASCII_STRING(KEY_STR_LIKE, "LIKE");
 IMPLEMENT_CONSTASCII_STRING(KEY_STR_NOT, "NOT");
@@ -3188,7 +3187,6 @@
                case ERROR_INVALID_COLUMN:                      aMsg = 
ERROR_STR_INVALID_COLUMN; break;
                case ERROR_INVALID_TABLE_EXIST:         aMsg = 
ERROR_STR_INVALID_TABLE_EXIST; break;
                case ERROR_INVALID_QUERY_EXIST:         aMsg = 
ERROR_STR_INVALID_QUERY_EXIST; break;
-               case ERROR_CYCLIC_SUB_QUERIES:      aMsg = 
ERROR_STR_CYCLIC_SUB_QUERIES; break;
         default:
             OSL_ENSURE( false, "OParseContext::getErrorMessage: unknown error 
code!" );
             break;

File [changed]: sqliterator.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqliterator.cxx?r1=1.54&r2=1.54.20.1
Delta lines:  +11 -10
---------------------
--- sqliterator.cxx     2007-07-31 13:39:08+0000        1.54
+++ sqliterator.cxx     2007-09-18 20:05:25+0000        1.54.20.1
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: sqliterator.cxx,v $
  *
- *  $Revision: 1.54 $
+ *  $Revision: 1.54.20.1 $
  *
- *  last change: $Author: hr $ $Date: 2007/07/31 13:39:08 $
+ *  last change: $Author: fs $ $Date: 2007/09/18 20:05:25 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -49,6 +49,9 @@
 #ifndef _CONNECTIVITY_DBTOOLS_HXX_
 #include <connectivity/dbtools.hxx>
 #endif
+#ifndef CONNECTIVITY_SQLERROR_HXX
+#include <connectivity/sqlerror.hxx>
+#endif
 #ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
 #include <com/sun/star/sdbc/ColumnValue.hpp>
 #endif
@@ -61,6 +64,9 @@
 #ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
 #include <com/sun/star/sdb/XQueriesSupplier.hpp>
 #endif
+#ifndef _COM_SUN_STAR_SDB_ERRORCONDITION_HPP_
+#include <com/sun/star/sdb/ErrorCondition.hpp>
+#endif
 #ifdef SQL_TEST_PARSETREEITERATOR
 #include <iostream>
 #endif
@@ -94,6 +100,7 @@
 using namespace ::connectivity::sdbcx;
 using namespace ::dbtools;
 using namespace ::connectivity::parse;
+using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::sdbcx;
@@ -443,13 +450,7 @@
             {
                 if  ( !m_pImpl->isQueryAllowed( sComposedName ) )
                 {
-                    impl_appendError( SQLException(
-                        m_rParser.getContext().getErrorMessage( 
IParseContext::ERROR_CYCLIC_SUB_QUERIES ),
-                        NULL,
-                        getStandardSQLState( SQL_CYCLIC_SUB_QUERIES ),
-                        0,
-                        Any()
-                    ) );
+                    impl_appendError( 
m_rParser.getErrorHelper().getSQLException( 
sdb::ErrorCondition::PARSER_CYCLIC_SUB_QUERIES, NULL ) );
                     return NULL;
                 }
 

File [changed]: sqlnode.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqlnode.cxx?r1=1.47&r2=1.47.34.1
Delta lines:  +63 -27
---------------------
--- sqlnode.cxx 2007-07-06 06:48:59+0000        1.47
+++ sqlnode.cxx 2007-09-18 20:05:25+0000        1.47.34.1
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: sqlnode.cxx,v $
  *
- *  $Revision: 1.47 $
+ *  $Revision: 1.47.34.1 $
  *
- *  last change: $Author: rt $ $Date: 2007/07/06 06:48:59 $
+ *  last change: $Author: fs $ $Date: 2007/09/18 20:05:25 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -40,6 +40,9 @@
 #ifndef _CONNECTIVITY_SQLNODE_HXX
 #include <connectivity/sqlnode.hxx>
 #endif
+#ifndef CONNECTIVITY_SQLERROR_HXX
+#include <connectivity/sqlerror.hxx>
+#endif
 #ifndef _CONNECTIVITY_SQLINTERNALNODE_HXX
 #include <internalnode.hxx>
 #endif
@@ -76,6 +79,9 @@
 #ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
 #include <com/sun/star/sdb/XQueriesSupplier.hpp>
 #endif
+#ifndef _COM_SUN_STAR_SDB_ERRORCONDITION_HPP_
+#include <com/sun/star/sdb/ErrorCondition.hpp>
+#endif
 #ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
 #include <com/sun/star/util/XNumberFormatter.hpp>
 #endif
@@ -122,6 +128,9 @@
 #ifndef _COMPHELPER_NUMBERS_HXX_
 #include <comphelper/numbers.hxx>
 #endif
+#ifndef _COMPHELPER_PROCESSFACTORY_HXX_
+#include <comphelper/processfactory.hxx>
+#endif
 #ifndef _COMPHELPER_STLTYPES_HXX_
 #include <comphelper/stl_types.hxx>
 #endif
@@ -131,6 +140,9 @@
 #ifndef CONNECTIVITY_INC_CONNECTIVITY_DBMETADATA_HXX
 #include "connectivity/dbmetadata.hxx"
 #endif
+#ifndef CONNECTIVITY_SQLERROR_HXX
+#include "connectivity/sqlerror.hxx"
+#endif
 #ifndef TOOLS_DIAGNOSE_EX_H
 #include <tools/diagnose_ex.h>
 #endif
@@ -143,6 +155,7 @@
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::lang;
 using namespace ::com::sun::star::i18n;
+using namespace ::com::sun::star;
 using namespace ::osl;
 using namespace ::dbtools;
 using namespace ::comphelper;
@@ -212,6 +225,18 @@
 {
 
 //=============================================================================
+struct OSQLParser_Data
+{
+    ::com::sun::star::lang::Locale  aLocale;
+    ::connectivity::SQLError        aErrors;
+
+    OSQLParser_Data( const Reference< XMultiServiceFactory >& _xServiceFactory 
)
+        :aErrors( _xServiceFactory )
+    {
+    }
+};
+
+//=============================================================================
 //= SQLParseNodeParameter
 //=============================================================================
 //-----------------------------------------------------------------------------
@@ -668,9 +693,17 @@
         if ( rParam.pSubQueryHistory->find( sTableOrQueryName ) != 
rParam.pSubQueryHistory->end() )
         {
             ::rtl::OUString sMessage( ::rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM( "cyclic sub queries" ) ) );
+            OSL_ENSURE( rParam.pParser, 
"OSQLParseNode::impl_parseTableNameNodeToString_throw: no parser?" );
             if ( rParam.pParser )
-                sMessage = rParam.pParser->getContext().getErrorMessage( 
IParseContext::ERROR_CYCLIC_SUB_QUERIES );
-            ::dbtools::throwSQLException( sMessage, SQL_CYCLIC_SUB_QUERIES, 
NULL );
+            {
+                const SQLError& rErrors( rParam.pParser->getErrorHelper() );
+                rErrors.raiseException( 
sdb::ErrorCondition::PARSER_CYCLIC_SUB_QUERIES );
+            }
+            else
+            {
+                SQLError aErrors( ::comphelper::getProcessServiceFactory() );
+                aErrors.raiseException( 
sdb::ErrorCondition::PARSER_CYCLIC_SUB_QUERIES );
+            }
         }
         rParam.pSubQueryHistory->insert( sTableOrQueryName );
 
@@ -859,7 +892,7 @@
 {
     if ( pLiteral )
        {
-        if ( 
s_xLocaleData->getLocaleItem(*m_pLocale).decimalSeparator.toChar() == ',' )
+        if ( s_xLocaleData->getLocaleItem( m_pData->aLocale 
).decimalSeparator.toChar() == ',' )
                {
                    pLiteral->m_aNodeValue = 
pLiteral->m_aNodeValue.replace('.', sal_Unicode());
                    // and replace decimal
@@ -1174,14 +1207,14 @@
        {
                try
                {
-                       ParseResult aResult = 
m_xCharClass->parsePredefinedToken(KParseType::ANY_NUMBER,_rValue,0,*m_pLocale,0,::rtl::OUString(),KParseType::ANY_NUMBER,::rtl::OUString());
+                       ParseResult aResult = 
m_xCharClass->parsePredefinedToken(KParseType::ANY_NUMBER,_rValue,0,m_pData->aLocale,0,::rtl::OUString(),KParseType::ANY_NUMBER,::rtl::OUString());
                        if((aResult.TokenType & KParseType::IDENTNAME) && 
aResult.EndPos == _rValue.getLength())
                        {
                                aValue = 
::rtl::OUString::valueOf(aResult.Value);
                                sal_Int32 nPos = 
aValue.lastIndexOf(::rtl::OUString::createFromAscii("."));
                                if((nPos+_nScale) < aValue.getLength())
                                        aValue = 
aValue.replaceAt(nPos+_nScale,aValue.getLength()-nPos-_nScale,::rtl::OUString());
-                               aValue = 
aValue.replaceAt(aValue.lastIndexOf(::rtl::OUString::createFromAscii(".")),1,s_xLocaleData->getLocaleItem(*m_pLocale).decimalSeparator);
+                               aValue = 
aValue.replaceAt(aValue.lastIndexOf(::rtl::OUString::createFromAscii(".")),1,s_xLocaleData->getLocaleItem(m_pData->aLocale).decimalSeparator);
                                return aValue;
                        }
                }
@@ -1216,13 +1249,6 @@
 
 
        // reset the parser
-       if (!m_pLocale)
-       {
-               Locale aPreferredLocale( m_pContext->getPreferredLocale( ) );
-                       // this temporary is due to an MSVC compiler bug
-               m_pLocale = new Locale( aPreferredLocale );
-       }
-
        m_xField                = xField;
        m_xFormatter    = xFormatter;
 
@@ -1265,10 +1291,10 @@
                        OSL_ENSURE(aValue.getValueType() == 
::getCppuType((const ::com::sun::star::lang::Locale*)0), 
"OSQLParser::PredicateTree : invalid language property !");
 
                        if (aValue.getValueType() == ::getCppuType((const 
::com::sun::star::lang::Locale*)0))
-                               aValue >>= *m_pLocale;
+                               aValue >>= m_pData->aLocale;
                }
                else
-                       *m_pLocale = m_pContext->getPreferredLocale();
+                       m_pData->aLocale = m_pContext->getPreferredLocale();
 
                if ( m_xFormatter.is() )
                {
@@ -1309,7 +1335,7 @@
                                
s_pScanner->SetRule(s_pScanner->GetSTRINGRule());
                                break;
                        default:
-                               if (m_pLocale && 
s_xLocaleData->getLocaleItem(*m_pLocale).decimalSeparator.toChar() == ',')
+                               if ( s_xLocaleData->getLocaleItem( 
m_pData->aLocale ).decimalSeparator.toChar() == ',' )
                                        
s_pScanner->SetRule(s_pScanner->GetGERRule());
                                else
                                        
s_pScanner->SetRule(s_pScanner->GetENGRule());
@@ -1370,12 +1396,13 @@
                return m_pParseTree;
        }
 }
+
 //=============================================================================
 //-----------------------------------------------------------------------------
 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)
+       ,m_pData( new OSQLParser_Data( _xServiceFactory ) )
                   ,m_nFormatKey(0)
                   ,m_nDateFormatKey(0)
                   ,m_xServiceFactory(_xServiceFactory)
@@ -1517,6 +1544,8 @@
        if (m_pContext == NULL)
                // take the default context
                m_pContext = &s_aDefaultContext;
+
+    m_pData->aLocale = m_pContext->getPreferredLocale();
 }
 
 // 
-----------------------------------------------------------------------------
@@ -1551,7 +1580,7 @@
        try
        {
                if ( !m_nFormatKey && xFormatTypes.is() )
-                       m_nFormatKey = ::dbtools::getDefaultNumberFormat( 
m_xField, xFormatTypes, *m_pLocale );
+                       m_nFormatKey = ::dbtools::getDefaultNumberFormat( 
m_xField, xFormatTypes, m_pData->aLocale );
     }
     catch( Exception& ) { }
     ::rtl::OUString sValue = pLiteral->getTokenValue();
@@ -1563,7 +1592,7 @@
     {
                try
                {
-            nTryFormat = xFormatTypes->getStandardFormat( NumberFormat::DATE, 
*m_pLocale );
+            nTryFormat = xFormatTypes->getStandardFormat( NumberFormat::DATE, 
m_pData->aLocale );
                }
         catch( Exception& ) { }
         bSuccess = lcl_saveConvertToNumber( m_xFormatter, nTryFormat, sValue, 
_rfValue );
@@ -1574,7 +1603,7 @@
     {
                try
                {
-            nTryFormat = xFormatTypes->getFormatIndex( 
NumberFormatIndex::DATE_DIN_YYYYMMDD, *m_pLocale );
+            nTryFormat = xFormatTypes->getFormatIndex( 
NumberFormatIndex::DATE_DIN_YYYYMMDD, m_pData->aLocale );
                }
         catch( Exception& ) { }
         bSuccess = lcl_saveConvertToNumber( m_xFormatter, nTryFormat, sValue, 
_rfValue );
@@ -2579,6 +2608,13 @@
 
     return nType;
 }
+
+// 
-----------------------------------------------------------------------------
+const SQLError& OSQLParser::getErrorHelper() const
+{
+    return m_pData->aErrors;
+}
+
 // 
-----------------------------------------------------------------------------
 OSQLParseNode::Rule OSQLParseNode::getKnownRuleID() const
 {




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to