<div dir="ltr"><div>At the end of last week I worked on getting my </div><div>ReportDesign test through code review and ultimately </div><div>merged. Unfortunately, it turns out that the test is modifying </div><div>the test file in place, thank you Stephan Bergmann for </div><div>bringing this to my attention today. </div><div><br></div><div>I've been working on fixing the issue, but have not</div><div>had any success so far. I've found the cause of the</div><div>problem, by using the odiff tool on the test document</div><div>I've found that something is modifying the manifest.xml</div><div>of the document. Experimenting with the code it looks </div><div>like the following lines are the offending parties. </div><div><br></div><div>    Reference<sdb::application::XDatabaseDocumentUI> xUI(xController, UNO_QUERY_THROW);</div><div>    xUI->connect();<br>    Reference<XConnection> xActiveConnection = xUI->getActiveConnection();</div><div><br></div><div>I've tried different ways of opening and saving the test</div><div>document for instance as read only, with no success. My </div><div>next step will be to look into the XDatabaseDocumentUI </div><div>class to see if I can find where its modifying the document </div><div>and to see if I can find a work around. </div><div><br></div><div>Until today, I was working on implementing the second</div><div>half of the Grouping functionality in a Report. The ability to</div><div>group fields by prefix character, entire field, interval, and various</div><div>date functions(i.e. by month, or week). I had been concerned</div><div>that if this was implemented in C++ it would involve lots of </div><div>text and more concerning, date processing. In my weekly </div><div>meeting with my mentors we discussed this and Michael and </div><div>Hossein both suggested that if possible, to use SQL statements</div><div>to do as much of the work as possible. </div><div><br></div><div>So I spent quite a bit of time going over various SQL constructs</div><div>for sorting and grouping and ultimately came up with the idea</div><div>to use SQL CASE statements to logically determine matching</div><div>fields and then add a column to the SQL result that denotes </div><div>which Group(s) a field matches. Using the SQL statement to do</div><div>the matching offloads the complexities of string and date parsing </div><div>to the underlying database. </div><div><br></div><div>Currently I'm working on the C++ code that takes the type of </div><div>matching determined in the report::GroupOn struct and using </div><div>it to build the appropriate SQL CASE statement. So far I have </div><div>a limited prefix character function implemented and I'm using it</div><div>to test the concept with great results so far.</div><div><br></div><div>After finishing the GroupOn to SQL CASE statement </div><div>implementations, I will work on how the actual headers and </div><div>footers for groups are written to the xml doc, this could be a </div><div>little tricky as its currently a recursive call and my new implementation</div><div>may or may not break that. When the headers and footers are</div><div>being written to the correct places the Grouping functionality will</div><div>be finished and it will be time to move on to my TODO list of </div><div>smaller singular issues. </div><div><br></div><div>That's all for now, thanks for reading and have a good week,</div><div>Adam Seskunas</div><div><br></div><div><br></div></div>