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]
