Scarab commit: svn commit: r10478 - trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: ronvoe122
Date: 2007-11-07 13:24:45-0800
New Revision: 10478

Modified:
   trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java

Log:
[SCB1894] fixed search for empty attribute option values (was broken after restructuring in b22)
Thanks to Andrey Larionov.

Modified: trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java?view=diff&rev=10478&p1=trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java&p2=trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java&r1=10477&r2=10478
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java	(original)
+++ trunk/src/java/org/tigris/scarab/util/word/IssueSearch.java	2007-11-07 13:24:45-0800
@@ -907,19 +907,19 @@
         if (dateString != null) 
         {
             Matcher m = RELATIVE_DATE_PATTERN.matcher(dateString);
-        	   if(m.matches())
-        	   {
+        	if(m.matches())
+        	{
                 date = new Date();
 
         		    String dateDifference = m.group(3);
         		    String sign = m.group(2);
         		    if(dateDifference!=null)
-        	       {
+        		{
                     long hours = Long.parseLong(dateDifference);  
                     if (sign.equals("-")) hours = hours * -1;
                     date.setTime(date.getTime() + hours * 3600000 );
-                }
-        	   }
+        		}
+        	}
             else if (dateString.indexOf(':') == -1)
             {
                 String[] patterns = {
@@ -1171,15 +1171,8 @@
     {           
         crit.addAlias(SORT_TABLE, AttributeValuePeer.TABLE_NAME);
 
-        crit.addJoin(
-            IssuePeer.ISSUE_ID,
-            useAlias(SORT_TABLE, AttributeValuePeer.ISSUE_ID) 
-             + ( " AND "  
-             + useAlias(SORT_TABLE, AttributeValuePeer.DELETED) + " = 0 AND " +
-            useAlias(SORT_TABLE, AttributeValuePeer.ATTRIBUTE_ID) + " = " + sortAttrId
-            ).replace('.', DOT_REPLACEMENT_IN_JOIN_CONDITION ), 
-            Criteria.LEFT_JOIN
-        );
+        joinAttributeValue(crit, SORT_TABLE, sortAttrId, Criteria.LEFT_JOIN);
+
         crit.addSelectColumn(useAlias(SORT_TABLE, AttributeValuePeer.VALUE_ID));
 
         String sortColumn;
@@ -1638,24 +1631,35 @@
             List options = (List) options4Attribute.getValue();
             Integer attributeId = (Integer) options4Attribute.getKey();
             String alias = "av" + attributeId;
-                        
+            
             crit.addAlias(alias, AttributeValuePeer.TABLE_NAME);
-            crit.addJoin(
-                   IssuePeer.ISSUE_ID, 
-                   useAlias(alias, AttributeValuePeer.ISSUE_ID), 
-                   Criteria.INNER_JOIN
-                )
-                .and(useAlias(alias, AttributeValuePeer.DELETED), false)
-                .and(useAlias(alias, AttributeValuePeer.ATTRIBUTE_ID), attributeId)
-                .andIn(useAlias(alias, AttributeValuePeer.OPTION_ID), options );
+            joinAttributeValue(crit, alias, attributeId, Criteria.LEFT_JOIN);
+             
+            crit.andIn(useAlias(alias, AttributeValuePeer.OPTION_ID), options );
 
             if (options.contains(NUMBERKEY_0)) //is 'empty' option selected?
             {                
-                crit.or(useAlias(alias, AttributeValuePeer.OPTION_ID), Criteria.ISNULL);
+                crit.or(useAlias(alias, AttributeValuePeer.OPTION_ID), (Object) null, Criteria.ISNULL);
             }
         }
     }
 
+    private void joinAttributeValue(Criteria crit, String alias, Integer attributeId, SqlEnum operator)
+    {
+        crit.addJoin(
+            IssuePeer.ISSUE_ID,
+            useAlias(alias, AttributeValuePeer.ISSUE_ID) 
+            + ( 
+                " AND " 
+                + useAlias(alias, AttributeValuePeer.DELETED) 
+                + " = 0 AND " 
+                + useAlias(alias, AttributeValuePeer.ATTRIBUTE_ID) 
+                + " = " + attributeId
+              ).replace('.', DOT_REPLACEMENT_IN_JOIN_CONDITION ), 
+            operator
+        );
+    }
+
     /**
      * Get a List of Issues that match the criteria given by this
      * SearchIssue's searchWords and the quick search attribute values.
@@ -1819,4 +1823,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
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.