Author: ajaquith
Date: Sat Jan 30 15:33:03 2010
New Revision: 904796
URL: http://svn.apache.org/viewvc?rev=904796&view=rev
Log:
Added option to PageTimeComparator to allow descending order sorts, used by
AbstractPageActionBean. Also replaced several spurious uses of the default
constructor that should have used the static instance instead.
Modified:
incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/rss/RSSGenerator.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/util/PageTimeComparator.java
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java
URL:
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java?rev=904796&r1=904795&r2=904796&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java Sat Jan 30
15:33:03 2010
@@ -170,7 +170,7 @@
/** If this property is set to false, we don't allow the creation of empty
pages */
public static final String PROP_ALLOW_CREATION_OF_EMPTY_PAGES =
"jspwiki.allowCreationOfEmptyPages";
- private static final Comparator<WikiPage> PAGE_TIME_COMPARATOR = new
PageTimeComparator();
+ private static final Comparator<WikiPage> PAGE_TIME_COMPARATOR =
PageTimeComparator.DEFAULT_PAGETIME_COMPARATOR;
/** Should the user info be saved with the page data as well? */
private boolean m_saveUserInfo = true;
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/rss/RSSGenerator.java
URL:
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/rss/RSSGenerator.java?rev=904796&r1=904795&r2=904796&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/rss/RSSGenerator.java
(original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/rss/RSSGenerator.java Sat
Jan 30 15:33:03 2010
@@ -524,7 +524,7 @@
feed.setChannelDescription( channelDescription );
}
- Collections.sort( changed, new PageTimeComparator() );
+ Collections.sort( changed,
PageTimeComparator.DEFAULT_PAGETIME_COMPARATOR );
int items = 0;
for( Iterator i = changed.iterator(); i.hasNext() && items < 15;
items++ )
@@ -608,7 +608,7 @@
feed.setChannelDescription( channelDescription );
}
- Collections.sort( changed, new PageTimeComparator() );
+ Collections.sort( changed,
PageTimeComparator.DEFAULT_PAGETIME_COMPARATOR );
int items = 0;
for( Iterator i = changed.iterator(); i.hasNext() && items < 15;
items++ )
Modified:
incubator/jspwiki/trunk/src/java/org/apache/wiki/util/PageTimeComparator.java
URL:
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/util/PageTimeComparator.java?rev=904796&r1=904795&r2=904796&view=diff
==============================================================================
---
incubator/jspwiki/trunk/src/java/org/apache/wiki/util/PageTimeComparator.java
(original)
+++
incubator/jspwiki/trunk/src/java/org/apache/wiki/util/PageTimeComparator.java
Sat Jan 30 15:33:03 2010
@@ -38,12 +38,53 @@
{
private static final long serialVersionUID = 0L;
+ private final Order m_order;
+
static Logger log = LoggerFactory.getLogger( PageTimeComparator.class );
// A special singleton instance for quick access
- public static final Comparator<WikiPage> DEFAULT_PAGETIME_COMPARATOR = new
PageTimeComparator();
+ public static final Comparator<WikiPage> DEFAULT_PAGETIME_COMPARATOR = new
PageTimeComparator( Order.ASCENDING );
+
+ /**
+ * Enum specifying the sort order for the PageTimeComparator.
+ */
+ public static enum Order
+ {
+ /**
+ * Ascending order; the earliest date will be placed first in the
sorted
+ * Collection.
+ */
+ ASCENDING,
+
+ /**
+ * Descending order, the latest date will be placed first in the sorted
+ * Collection.
+ */
+ DESCENDING;
+ }
+
+ /**
+ * Constructs a new PageTimeComparator that sorts pages in ascending order
+ * based on last modification time.
+ */
+ public PageTimeComparator()
+ {
+ this( Order.ASCENDING );
+ }
/**
+ * Constructs a new PageTimeComparator, for sorting pages in ascending or
+ * descending order based on last modification time.
+ *
+ * @param order the sort order for the Collection this PageTimeComparator
+ * will be used with.
+ */
+ public PageTimeComparator( Order order )
+ {
+ m_order = order;
+ }
+
+ /**
* {...@inheritdoc}
*/
public int compare( WikiPage w1, WikiPage w2 )
@@ -69,7 +110,7 @@
}
// This gets most recent on top
- int timecomparison = w2LastMod.compareTo( w1LastMod );
+ int timecomparison = w2LastMod.compareTo( w1LastMod ) * ( m_order ==
Order.DESCENDING ? 1 : -1 );
if( timecomparison == 0 )
{