Author: sskracic Date: 2005-09-22 12:45:33 +0200 (Thu, 22 Sep 2005) New Revision: 906 Modified: trunk/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl trunk/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java Log: Fix for SF [ 1218253 ] related links ordering bug. Filters cannot be applied to the inner part of queries that use aggregate functions (MIN,MAX,SUM,...). Applying filter to those has a similar affect to that of HAVING clause. Besides that, the whole Link/RelatedLink inheritance scheme is messy. Modified: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java 2005-09-22 10:18:55 UTC (rev 905) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java 2005-09-22 10:45:33 UTC (rev 906) @@ -437,10 +437,12 @@ if (swapNext) { otherKey = key + 1; + query.addOrder("linkOrder ASC"); query.addFilter(query.getFilterFactory() .greaterThan("linkOrder", currentKey, true)); } else { otherKey = key - 1; + query.addOrder("linkOrder DESC"); query.addFilter(query.getFilterFactory() .lessThan("linkOrder", currentKey, true)); } Modified: trunk/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl =================================================================== --- trunk/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl 2005-09-22 10:18:55 UTC (rev 905) +++ trunk/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl 2005-09-22 10:45:33 UTC (rev 906) @@ -45,45 +45,26 @@ where (link_order = :linkOrder or link_order = :nextLinkOrder) and (select owner_id from cms_related_links where related_link_id=link_id) = :ownerID and 2 = (select count(*) from cms_links l, cms_related_links r - where l.link_id=r.related_link_id - and (link_order = :linkOrder or link_order = :nextLinkOrder) + where l.link_id=r.related_link_id + and (link_order = :linkOrder or link_order = :nextLinkOrder) and owner_id = :ownerID) } } -query minRelatedLinkOrderForItem { +query allRelatedLinkOrderForItem { Integer linkOrder; - options { - WRAP_QUERIES = false; - } - do { - select min(link_order) as link_order from cms_links l, cms_related_links r - where owner_id = :ownerID and l.link_id = r.related_link_id + select l.link_order from cms_links l, cms_related_links r + where r.owner_id = :ownerID and l.link_id = r.related_link_id } map { - linkOrder = link_order; + linkOrder = l.link_order; } } -query maxRelatedLinkOrderForItem { - Integer linkOrder; - - options { - WRAP_QUERIES = false; - } - - do { - select max(link_order) as link_order from cms_links l, cms_related_links r - where owner_id = :ownerID and l.link_id = r.related_link_id - } map { - linkOrder = link_order; - } -} - query getReferringRelatedLinks { BigDecimal id; - + do { select l.link_id from cms_links l, cms_related_links r Modified: trunk/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java =================================================================== --- trunk/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java 2005-09-22 10:18:55 UTC (rev 905) +++ trunk/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java 2005-09-22 10:45:33 UTC (rev 906) @@ -203,7 +203,7 @@ * according to the linkOrder */ public void swapWithNext() { - swapWithNext("com.arsdigita.cms.contentassets.minRelatedLinkOrderForItem", + swapWithNext("com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem", "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup"); } @@ -212,7 +212,7 @@ * according to the linkOrder */ public void swapWithPrevious() { - swapWithPrevious("com.arsdigita.cms.contentassets.maxRelatedLinkOrderForItem", + swapWithPrevious("com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem", "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup"); } |