User: hr      
Date: 2007-08-02 14:33:37+0000
Modified:
   dba/reportdesign/source/filter/xml/xmlGroup.cxx

Log:
 INTEGRATION: CWS rpt23fix01 (1.2.2); FILE MERGED
 2007/07/12 12:59:57 oj 1.2.2.1: #i77832# #i77146# impl group on and interval

File Changes:

Directory: /dba/reportdesign/source/filter/xml/
===============================================

File [changed]: xmlGroup.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/filter/xml/xmlGroup.cxx?r1=1.2&r2=1.3
Delta lines:  +60 -4
--------------------
--- xmlGroup.cxx        2007-07-09 11:56:17+0000        1.2
+++ xmlGroup.cxx        2007-08-02 14:33:34+0000        1.3
@@ -151,6 +151,62 @@
                                 --nLen;
                             }
                             sValue = sValue.copy(nPos,nLen-nPos-1);
+                            const ORptFilter::TGroupFunctionMap& aFunctions = 
_rImport.getFunctions();
+                            ORptFilter::TGroupFunctionMap::const_iterator 
aFind = aFunctions.find(sValue);
+                            if ( aFind != aFunctions.end() )
+                            {
+                                sal_Int32 nIndex = 0;
+                                const ::rtl::OUString sCompleteFormula = 
aFind->second->getFormula();
+                                ::rtl::OUString sExpression = 
sCompleteFormula.getToken(1,'[',nIndex);
+                                nIndex = 0;
+                                sExpression = 
sExpression.getToken(0,']',nIndex);
+                                nIndex = 0;
+                                const ::rtl::OUString sFormula = 
sCompleteFormula.getToken(0,'(',nIndex);
+                                ::sal_Int16 nGroupOn = 
report::GroupOn::DEFAULT;
+
+                                if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:LEFT")))
+                                {
+                                    nGroupOn = 
report::GroupOn::PREFIX_CHARACTERS;
+                                    ::rtl::OUString sInterval = 
sCompleteFormula.getToken(1,';',nIndex);
+                                    nIndex = 0;
+                                    sInterval = 
sInterval.getToken(0,')',nIndex);
+                                    
m_xGroup->setGroupInterval(sInterval.toInt32());
+                                }
+                                else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:YEAR")))
+                                    nGroupOn = report::GroupOn::YEAR;
+                                   else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:MONTH")))
+                                {
+                                    if ( 
sCompleteFormula.endsWithIgnoreAsciiCaseAsciiL("\4",2) )
+                                        nGroupOn = report::GroupOn::QUARTAL;
+                                    else
+                                           nGroupOn = report::GroupOn::MONTH;
+                                }
+                                   else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:WEEK")))
+                                       nGroupOn = report::GroupOn::WEEK;
+                                   else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:DAY")))
+                                       nGroupOn = report::GroupOn::DAY;
+                                   else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:HOUR")))
+                                       nGroupOn = report::GroupOn::HOUR;
+                                   else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:MINUTE")))
+                                       nGroupOn = report::GroupOn::MINUTE;
+                                else if ( sFormula 
==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:INT")))
+                                {
+                                    nGroupOn = report::GroupOn::INTERVAL;
+                                    _rImport.removeFunction(sExpression);
+                                    sExpression = 
sExpression.copy(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("INT_count_")).getLength());
+                                    
+                                    nIndex = 0;
+                                    ::rtl::OUString sInterval = 
sCompleteFormula.getToken(1,'/',nIndex);
+                                    nIndex = 0;
+                                    sInterval = 
sInterval.getToken(0,')',nIndex);
+                                    
m_xGroup->setGroupInterval(sInterval.toInt32());
+                                }
+
+                                m_xGroup->setGroupOn(nGroupOn);
+       
+                                _rImport.removeFunction(sValue);
+                                sValue = sExpression;
+                            }
                                                m_xGroup->setExpression(sValue);
                         }
                     }




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

Reply via email to