Author: kschenk
Date: Tue Aug 11 18:04:11 2015
New Revision: 1695343

URL: http://svn.apache.org/r1695343
Log:
#i121492# Merge r1626099 to AOO410 branch.



Modified:
    openoffice/branches/AOO410/main/dbaccess/   (props changed)
    
openoffice/branches/AOO410/main/dbaccess/source/core/api/SingleSelectQueryComposer.cxx

Propchange: openoffice/branches/AOO410/main/dbaccess/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Aug 11 18:04:11 2015
@@ -0,0 +1,5 @@
+/openoffice/branches/AOO400/main/dbaccess:1503684
+/openoffice/branches/ia2/main/dbaccess:1417739-1541842
+/openoffice/branches/ooxml-osba/main/dbaccess:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283
+/openoffice/branches/rejuvenate01/main/dbaccess:1480411,1534063,1534098,1536312,1549902,1560617
+/openoffice/trunk/main/dbaccess:1571617,1571677,1572569,1572577,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585261,1586242,1586249,1586583,1587468,1589050,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1626099,1677190,1687177,1692551

Modified: 
openoffice/branches/AOO410/main/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/dbaccess/source/core/api/SingleSelectQueryComposer.cxx?rev=1695343&r1=1695342&r2=1695343&view=diff
==============================================================================
--- 
openoffice/branches/AOO410/main/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
 (original)
+++ 
openoffice/branches/AOO410/main/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
 Tue Aug 11 18:04:11 2015
@@ -1507,7 +1507,44 @@ Reference< XIndexAccess > SAL_CALL OSing
 // 
-----------------------------------------------------------------------------
 namespace
 {
-       ::rtl::OUString lcl_getCondition(const Sequence< Sequence< 
PropertyValue > >& filter,const OPredicateInputController& 
i_aPredicateInputController,const Reference< XNameAccess >& i_xSelectColumns)
+    ::rtl::OUString lcl_getDecomposedColumnName( const ::rtl::OUString& 
rComposedName, const ::rtl::OUString& rQuoteString )
+    {
+        const sal_Int32 nQuoteLength = rQuoteString.getLength();
+        ::rtl::OUString sName = rComposedName.trim();
+        ::rtl::OUString sColumnName;
+        sal_Int32 nPos, nRPos = 0;
+        
+        for (;;)
+        {
+            nPos = sName.indexOf( rQuoteString, nRPos );
+            if ( nPos >= 0 )
+            {
+                nRPos = sName.indexOf( rQuoteString, nPos + nQuoteLength );
+                if ( nRPos > nPos )
+                {
+                    if ( nRPos + nQuoteLength < sName.getLength() )
+                    {
+                        nRPos += nQuoteLength; // -1 + 1 skip dot
+                    }
+                    else
+                    {
+                        sColumnName = sName.copy( nPos + nQuoteLength, nRPos - 
nPos - nQuoteLength );
+                        break;
+                    }
+                }
+                else
+                    break;
+            }
+            else
+                break;
+        }
+        return sColumnName.isEmpty() ? rComposedName : sColumnName;
+    }
+    
+       ::rtl::OUString lcl_getCondition(const Sequence< Sequence< 
PropertyValue > >& filter,
+            const OPredicateInputController& i_aPredicateInputController,
+            const Reference< XNameAccess >& i_xSelectColumns, 
+            const ::rtl::OUString& rQuoteString )
        {
                ::rtl::OUStringBuffer sRet;
                const Sequence< PropertyValue >* pOrIter = 
filter.getConstArray();
@@ -1524,9 +1561,10 @@ namespace
                                        sRet.append(pAndIter->Name);
                                        ::rtl::OUString sValue;
                                        pAndIter->Value >>= sValue;
-                    if ( i_xSelectColumns.is() && 
i_xSelectColumns->hasByName(pAndIter->Name) )
+                    const ::rtl::OUString sColumnName = 
lcl_getDecomposedColumnName( pAndIter->Name, rQuoteString );
+                    if ( i_xSelectColumns.is() && 
i_xSelectColumns->hasByName(sColumnName) )
                     {
-                        Reference<XPropertySet> 
xColumn(i_xSelectColumns->getByName(pAndIter->Name),UNO_QUERY);
+                        Reference<XPropertySet> 
xColumn(i_xSelectColumns->getByName(sColumnName),UNO_QUERY);
                         sValue = 
i_aPredicateInputController.getPredicateValue(sValue,xColumn,sal_True);
                     }
                     else
@@ -1552,14 +1590,14 @@ void SAL_CALL OSingleSelectQueryComposer
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "[email protected]", 
"OSingleSelectQueryComposer::setStructuredFilter" );
     OPredicateInputController 
aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
-       setFilter(lcl_getCondition(filter,aPredicateInput,getColumns()));
+       setFilter(lcl_getCondition(filter,aPredicateInput,getColumns(), 
m_xMetaData->getIdentifierQuoteString()));
 }
 // 
-----------------------------------------------------------------------------
 void SAL_CALL OSingleSelectQueryComposer::setStructuredHavingClause( const 
Sequence< Sequence< PropertyValue > >& filter ) throw (SQLException, 
RuntimeException)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "[email protected]", 
"OSingleSelectQueryComposer::setStructuredHavingClause" );
     OPredicateInputController 
aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
-       setHavingClause(lcl_getCondition(filter,aPredicateInput,getColumns()));
+       setHavingClause(lcl_getCondition(filter,aPredicateInput,getColumns(), 
m_xMetaData->getIdentifierQuoteString()));
 }
 // 
-----------------------------------------------------------------------------
 void OSingleSelectQueryComposer::setConditionByColumn( const Reference< 
XPropertySet >& column, sal_Bool andCriteria 
,::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString>& 
_aSetFunctor,sal_Int32 filterOperator)


Reply via email to