Scarab commit: svn commit: r10987 - trunk/src/java/org/tigris/scarab: actions om tools

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2010-04-16 08:20:31-0700
New Revision: 10987

Modified:
   trunk/src/java/org/tigris/scarab/actions/Login.java
   trunk/src/java/org/tigris/scarab/om/AbstractScarabUser.java
   trunk/src/java/org/tigris/scarab/om/QueryPeer.java
   trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java

Log:
SCB3036: Fixed configuration issue when multiple users have customized their own start page for a given module.

Modified: trunk/src/java/org/tigris/scarab/actions/Login.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/actions/Login.java?view=diff&pathrev=10987&r1=10986&r2=10987
==============================================================================
--- trunk/src/java/org/tigris/scarab/actions/Login.java	(original)
+++ trunk/src/java/org/tigris/scarab/actions/Login.java	2010-04-16 08:20:31-0700
@@ -175,7 +175,7 @@
                     {
                         data.getParameters().remove(ScarabConstants.NEXT_TEMPLATE);
                         
-                        Query defaultQuery = QueryPeer.getDefaultQuery(uniqueModule);
+                        Query defaultQuery = QueryPeer.getDefaultQuery(uniqueModule, user.getUserId());
                         ParameterParser pp = data.getParameters();
                         if(defaultQuery != null)
                         {

Modified: trunk/src/java/org/tigris/scarab/om/AbstractScarabUser.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/AbstractScarabUser.java?view=diff&pathrev=10987&r1=10986&r2=10987
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/AbstractScarabUser.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/AbstractScarabUser.java	2010-04-16 08:20:31-0700
@@ -383,7 +383,7 @@
     }
 
     /**
-     * Returns all modules which are editable fur user.
+     * Returns all modules which are editable for user.
      * @see org.tigris.scarab.om.ScarabUser#getEditableModules(Module)
      */
     public List getEditableModules(Module currEditModule)
@@ -765,7 +765,7 @@
         String result;
         if(homePage.equals("IssueList.vm"))
         {
-            Query q = QueryPeer.getDefaultQuery(module);
+            Query q = QueryPeer.getDefaultQuery(module, this.getUserId());
             if(q != null)
             {
                 homePage="IssueList.vm";
@@ -800,7 +800,7 @@
                 else
                 {
                     
-                    Query q = QueryPeer.getDefaultQuery(module);
+                    Query q = QueryPeer.getDefaultQuery(module, this.getUserId());
                     if(q != null)
                     {
                         homePage="IssueList.vm";

Modified: trunk/src/java/org/tigris/scarab/om/QueryPeer.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/QueryPeer.java?view=diff&pathrev=10987&r1=10986&r2=10987
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/QueryPeer.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/QueryPeer.java	2010-04-16 08:20:31-0700
@@ -46,6 +46,7 @@
  * individuals on behalf of Collab.Net.
  */ 
 
+import java.util.Iterator;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.Serializable;
@@ -390,7 +391,9 @@
 
 
     /**
-     * Return the 
+     * Return the module's default query as it was set by the module owner.
+     * If you want to get the user customized default query, then use 
+     * the method getDefaultQuery(module, userId) instead
      * @param module
      * @param user
      * @return
@@ -398,15 +401,31 @@
      */
     public static Query getDefaultQuery(Module module) throws TorqueException 
     {
+        Integer moduleOwnerId = module.getOwnerId();
+        return getDefaultQuery(module, moduleOwnerId);
+    }
+        
+    /**
+     * Return the module's default query as it was set by the given userId.
+     * If the user has not customized the default query yet, this method returns
+     * the default query as it was preset by the module Owner.
+     * @param module
+     * @param user
+     * @return
+     * @throws TorqueException
+     */
+    public static Query getDefaultQuery(Module module, Integer userId) throws TorqueException 
+    {
         List<Query> queries = null;
         Object obj = QueryManager.getMethodResult()
             .get(QUERY_PEER, GET_MODULE_QUERIES, module, "homePage");
         if (obj == null) 
-        {
+        {       
+            Integer moduleId      = module.getModuleId();
             Criteria crit = new Criteria()
                 .add(QueryPeer.DELETED, 0);
             crit.add(QueryPeer.HOME_PAGE, 1);
-            crit.add(QueryPeer.MODULE_ID, module.getModuleId());
+            crit.add(QueryPeer.MODULE_ID, moduleId);
             queries = QueryPeer.doSelect(crit);
             QueryManager.getMethodResult()
                 .put(queries, QUERY_PEER, GET_MODULE_QUERIES, module, "homePage");
@@ -416,14 +435,27 @@
             queries = (List)obj;
         }
         
-        Query result;
-        if(queries != null &&queries.size() == 1)
-        {
-            result = queries.get(0);
-        }
-        else
+        Integer moduleOwnerId = module.getOwnerId();
+        Query result = null;
+        if(queries != null)
         {
-            result = null;
+            Iterator<Query> iter = queries.iterator();
+            while(iter.hasNext())
+            {
+                Query candidate = iter.next();
+                Integer candidateId = candidate.getUserId();
+                if(candidateId.equals(userId) || candidateId.equals(moduleOwnerId))
+                {
+                    result = candidate; // We found a customized query.
+                }
+                if(candidateId.equals(userId))
+                {
+                    break; // It is the user's custom query. Take that and be happy.
+                }
+            }
+            // Now result contains either the user's customized query, 
+            // or the module owner's query, if the user hasn't configured one by himself,
+            // or null, if no query could be found at all for either the user or the module owner.
         }
         return result;
     }

Modified: trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java?view=diff&pathrev=10987&r1=10986&r2=10987
==============================================================================
--- trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java	(original)
+++ trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java	2010-04-16 08:20:31-0700
@@ -2245,18 +2245,21 @@
     }
     
     /**
-     * Return the default query for the current module.
-     * Typical usage as home page for that module.
+     * Return the default query for the current module/user combination.
+     * Typical usage as home page for the current user of that module.
      * @return
      * @throws Exception
      */
     public Query getDefaultQuery() throws Exception
     {
-        return getDefaultQuery(getCurrentModule());
+        Module currentModule   = getCurrentModule();
+        ScarabUser currentUser = getCurrentUser();
+        Integer currentUserId  = (currentUser==null)? null:currentUser.getUserId();
+        return getDefaultQuery(currentModule, currentUserId);
     }
 
     /**
-     * Return the default query for the given module.
+     * Return the default query (as set by the module owner) for the given module.
      * Typical usage as home page for the given module.
      * @param module
      * @return
@@ -2264,7 +2267,20 @@
      */
     public Query getDefaultQuery(Module module) throws Exception
     {
-        return QueryPeer.getDefaultQuery(module);
+        Integer ownerId = (module != null) ? module.getOwnerId():null;
+        return getDefaultQuery(module, ownerId);
+    }
+
+    /**
+     * Return the default query (as set by the given user) for the given module.
+     * Typical usage as home page for the given module.
+     * @param module
+     * @return
+     * @throws Exception
+     */
+    public Query getDefaultQuery(Module module, Integer userId) throws Exception
+    {
+        return QueryPeer.getDefaultQuery(module, userId);
     }
 
     /**

------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2585424
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.