Scarab commit: svn commit: r10244 - branches/release/b21: src/java/org/tigris/scarab/screens src/java/org/tigris/scarab/util/word xdocs

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: pledbrook
Date: 2006-08-07 07:42:42-0700
New Revision: 10244

Modified:
   branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java
   branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java
   branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java
   branches/release/b21/xdocs/changes.xml

Log:
Rolling back my changes related to sorting on internal attributes and
applying Ronny Voelker's patch instead. This fixes issue SCB1736.
Thanks Ronny!


Modified: branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java?view=diff&rev=10244&p1=branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java&p2=branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java&r1=10243&r2=10244
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/screens/IssueListExport.java	2006-08-07 07:42:42-0700
@@ -174,7 +174,6 @@
         {
             printer.println();
             QueryResult queryResult = (QueryResult)i.next();
-            queryResult.populateInternalAttributes(rmuas, l10n);
             writeRow(printer, mitlist, queryResult);
         }
         // print a newline when we're done to complete the last line;

Modified: branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java?view=diff&rev=10244&p1=branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java&p2=branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java&r1=10243&r2=10244
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearch.java	2006-08-07 07:42:42-0700
@@ -2327,6 +2327,41 @@
             return sortColumn;
     }
 
+    private String setupInternalSortColumn(String sortInternal, StringBuffer sortOuterJoin, Set tableAliases)
+        throws TorqueException
+    {
+        String sortColumn = null;
+        String joinColumn = null;
+        String alias = ACTIVITYSETALIAS + "_sort";
+        if (sortInternal.equals(RModuleUserAttribute.MODIFIED_BY.getName()))
+        {
+               sortColumn = ACTSET_CREATED_BY;
+               joinColumn  = IssuePeer.LAST_TRANS_ID;
+        }
+        else if (sortInternal.equals(RModuleUserAttribute.MODIFIED_DATE.getName()))
+        {
+            sortColumn = ACTSET_CREATED_DATE;
+            joinColumn  = IssuePeer.LAST_TRANS_ID;
+        }
+        else if (sortInternal.equals(RModuleUserAttribute.CREATED_BY.getName()))
+        {
+            sortColumn = ACTSET_CREATED_BY;
+            joinColumn  = IssuePeer.CREATED_TRANS_ID;
+        }
+        else if (sortInternal.equals(RModuleUserAttribute.CREATED_DATE.getName()))
+        {
+            sortColumn = ACTSET_CREATED_DATE;
+            joinColumn  = IssuePeer.CREATED_TRANS_ID;
+        }
+        sortOuterJoin.append(LEFT_OUTER_JOIN)
+            .append(ActivitySetPeer.TABLE_NAME).append(' ')
+            .append(alias).append(ON)
+            .append(alias).append(".TRANSACTION_ID ")
+            .append('=').append(joinColumn).append(')');
+            
+        return alias + "." + sortColumn;
+    }
+
     private List getSearchSqlPieces(StringBuffer from, StringBuffer where,
                                     Set tableAliases)
         throws TorqueException
@@ -2356,15 +2391,10 @@
         }
         else if (sortInternal != null)
         {
-            // WARNING: alias != column name
-            if (sortInternal.equals(RModuleUserAttribute.MODIFIED_BY.getName()))
-                sortColumn = ACTIVITYSETALIAS_MODIFICATION + ".CREATED_BY";
-            else if (sortInternal.equals(RModuleUserAttribute.MODIFIED_DATE.getName()))
-                sortColumn = ACTIVITYSETALIAS_MODIFICATION + ".CREATED_DATE";
-            else if (sortInternal.equals(RModuleUserAttribute.CREATED_BY.getName()))
-                sortColumn = ACTIVITYSETALIAS + ".CREATED_BY";
-            else if (sortInternal.equals(RModuleUserAttribute.CREATED_DATE.getName()))
-                sortColumn = ACTIVITYSETALIAS + "." + ACTSET_CREATED_DATE;
+            sortOuterJoin = new StringBuffer(128);
+            sortColumn = setupInternalSortColumn(sortInternal, sortOuterJoin,
+                                            tableAliases);
+            sql.append(',').append(sortColumn);
         }
 
         sql.append(FROM).append(IssuePeer.TABLE_NAME);
@@ -2414,8 +2444,8 @@
             int valueListSize = rmuas.size();
             StringBuffer outerJoin = new StringBuffer(10 * valueListSize + 20);
 
-            int count = 0, joinCount = 0;
-            final int maxJoin = MAX_JOIN - 3;
+            int count = 0;
+            int maxJoin = MAX_JOIN - 2;
             //List columnSqlList = new ArrayList(valueListSize/maxJoin + 1);
             StringBuffer partialSql = getSelectStart();
             tableAliases = new HashSet(MAX_JOIN);
@@ -2423,124 +2453,41 @@
             {
                 RModuleUserAttribute rmua = (RModuleUserAttribute)i.next();
                 Integer attrPK = rmua.getAttributeId();
+          
                 
-                // Internal attributes require different tables to be JOINed compared
-                // to standard attributes.
-                if (rmua.isInternal())
-                {
-                    String name = rmua.getName();
-                    String alias, transId, value;
-                    if (name.equals(RModuleUserAttribute.MODIFIED_BY.getName()))
-                    {
-                        alias = ACTIVITYSETALIAS_MODIFICATION;
-                        transId = IssuePeer.LAST_TRANS_ID;
-                        value = CREATED_BY;
-                    }
-                    else if (name.equals(RModuleUserAttribute.MODIFIED_DATE.getName()))
-                    {
-                        alias = ACTIVITYSETALIAS_MODIFICATION;
-                        transId = IssuePeer.LAST_TRANS_ID;
-                        value = CREATED_DATE;
-                    }
-                    else if (name.equals(RModuleUserAttribute.CREATED_BY.getName()))
-                    {
-                        alias = ACTIVITYSETALIAS;
-                        transId = IssuePeer.CREATED_TRANS_ID;
-                        value = CREATED_BY;
-                    }
-                    else
-                    {
-                        alias = ACTIVITYSETALIAS;
-                        transId = IssuePeer.CREATED_TRANS_ID;
-                        value = CREATED_DATE;
-                    }
-
-                    // Add the internal attribute to the select.
-                    partialSql.append(',').append(alias).append('.').append(value);
-                    
-                    // Now the JOIN.
-                    if (!tableAliases.contains(alias))
-                    {
-                        outerJoin.append(LEFT_OUTER_JOIN)
-                                 .append(ActivitySetPeer.TABLE_NAME)
-                                 .append(' ').append(alias).append(ON)
-                                 .append(transId).append('=')
-                                 .append(alias).append('.').append(ACTSET_TRAN_ID)
-                                 .append(')');
-                        tableAliases.add(alias);
-                        joinCount++;
-                    }
-                }
-                else
-                {
-                    String id = attrPK.toString();
-                    String alias = AV + id;
-                    // add column to SELECT column clause
-                    partialSql.append(',').append(alias).append(DOT_VALUE);
-                    // if no criteria was specified for a displayed attribute
-                    // add it as an outer join
-                    if (!tableAliases.contains(alias) 
-                        && !attrPK.equals(sortAttrId))
-                    {
-                        outerJoin.append(LEFT_OUTER_JOIN)
-                            .append(AttributeValuePeer.TABLE_NAME).append(' ')
-                            .append(alias).append(ON)
-                            .append(IssuePeer.ISSUE_ID).append('=')
-                            .append(alias).append(".ISSUE_ID AND ").append(alias)
-                            .append(".DELETED=0 AND ").append(alias)
-                            .append(".ATTRIBUTE_ID=").append(id).append(')');
-                        tableAliases.add(alias);
-                        joinCount++;
-                    }
+                String id = attrPK.toString();
+                String alias = AV + id;
+                // add column to SELECT column clause
+                partialSql.append(',').append(alias).append(DOT_VALUE);
+                // if no criteria was specified for a displayed attribute
+                // add it as an outer join
+                if (!tableAliases.contains(alias) 
+                    && !attrPK.equals(sortAttrId))
+                {
+                    outerJoin.append(LEFT_OUTER_JOIN)
+                        .append(AttributeValuePeer.TABLE_NAME).append(' ')
+                        .append(alias).append(ON)
+                        .append(IssuePeer.ISSUE_ID).append('=')
+                        .append(alias).append(".ISSUE_ID AND ").append(alias)
+                        .append(".DELETED=0 AND ").append(alias)
+                        .append(".ATTRIBUTE_ID=").append(id).append(')');
+                    tableAliases.add(alias);
                 }
 
                 count++;
-                if (joinCount == maxJoin || !i.hasNext()) 
+                if (count == maxJoin || !i.hasNext()) 
                 {
                     ColumnBundle cb = new ColumnBundle();
                     cb.size = count;
                     if (sortAttrId != null) 
                     {
-                        cb.sortColumn = setupSortColumn(sortAttrId, outerJoin,
-                                                        tableAliases);
-                        partialSql.append(',').append(
-                            cb.sortColumn);
+                        cb.sortColumn = setupSortColumn(sortAttrId, outerJoin, tableAliases);
+                        partialSql.append(',').append(cb.sortColumn);
                     }
                     else if (sortInternal != null)
                     {
-                        // The sort column must be added to the SELECT section of
-                        // the SQL statement and the ORDER BY section.
-
-                        // WARNING: alias != column name
-                        if (sortInternal.equals(RModuleUserAttribute.MODIFIED_BY.getName()))
-                        {
-                            // First the ORDER BY.
-                            cb.sortColumn = ACTIVITYSETALIAS_MODIFICATION + ".CREATED_BY";
-                        }
-                        else if (sortInternal.equals(RModuleUserAttribute.MODIFIED_DATE.getName()))
-                        {
-                            // First the ORDER BY.
-                            cb.sortColumn = ACTIVITYSETALIAS_MODIFICATION + ".CREATED_DATE";
-                        }
-                        else if (sortInternal.equals(RModuleUserAttribute.CREATED_BY.getName()))
-                        {
-                            // First the ORDER BY.
-                            cb.sortColumn = ACTIVITYSETALIAS + ".CREATED_BY";
-
-                        }
-                        else if (sortInternal.equals(RModuleUserAttribute.CREATED_DATE.getName()))
-                        {
-                            // First the ORDER BY.
-                            cb.sortColumn = ACTIVITYSETALIAS + ".CREATED_DATE";
-                        }
-
-                        // Finally add the column to the select. Note that the sort
-                        // column may already be in the select, so we only add it if
-                        // it's not already there.
-                        if (partialSql.indexOf(cb.sortColumn) == -1)
-                        {
-                            partialSql.append(',').append(cb.sortColumn);
-                        }
+                        cb.sortColumn = setupInternalSortColumn(sortInternal, outerJoin, tableAliases);
+                        partialSql.append(',').append(cb.sortColumn);
                     }
                     cb.select = partialSql;
                     cb.outerJoins = outerJoin;
@@ -2550,7 +2497,6 @@
                     outerJoin = new StringBuffer(512);
                     tableAliases.clear();
                     count = 0;
-                    joinCount = 0;
                 }
             }
         }
@@ -3017,7 +2963,7 @@
                             sql.append(FROM).append(IssuePeer.TABLE_NAME);
                             if (cb.outerJoins != null) 
                             {
-                                sql.append(cb.outerJoins);
+                                sql.append(cb.outerJoins);    
                             }
                             sql.append(WHERE).append(IssuePeer.ISSUE_ID)
                                 .append(IN).append(pks).append(')');
@@ -3100,6 +3046,7 @@
                 }
                 index += size;
             }
+            qr.populateInternalAttributes(issueListAttributeColumns, L10N);
         }
 
         private void queryResultStarted(ResultSet rs, QueryResult qr, 

Modified: branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java?view=diff&rev=10244&p1=branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java&p2=branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java&r1=10243&r2=10244
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/util/word/QueryResult.java	2006-08-07 07:42:42-0700
@@ -250,7 +250,7 @@
         for (int i=0; i<preferences.size(); i++)
         {
             RModuleUserAttribute rmua = (RModuleUserAttribute)preferences.get(i);
-            if (rmua.isInternal() && attributeValues != null)
+            if (rmua.isInternal())
             {
                 List list = new ArrayList();
                 if (rmua.getInternalAttribute().equals(RModuleUserAttribute.CREATED_BY.getName()))

Modified: branches/release/b21/xdocs/changes.xml
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/xdocs/changes.xml?view=diff&rev=10244&p1=branches/release/b21/xdocs/changes.xml&p2=branches/release/b21/xdocs/changes.xml&r1=10243&r2=10244
==============================================================================
--- branches/release/b21/xdocs/changes.xml	(original)
+++ branches/release/b21/xdocs/changes.xml	2006-08-07 07:42:42-0700
@@ -7,6 +7,10 @@
 
   <body>
     <release version="b21" date="in-development">
+      <action dev="pledbrook" type="fix" due-to="Ronny Voelker" fix="SCB1736">
+       Sorting on the "Created By" and "Modified By" attributes now works
+       without any problems.
+      </action>
       <action dev="pledbrook" type="fix" due-to="Ronny Voelker" fix="SCB1773">
        Permission and role changes no longer require the container, e.g. tomcat,
        to be restarted in order for them to take effect.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.