001
014
015 package com.liferay.portlet.journal.util.comparator;
016
017 import com.liferay.portal.kernel.util.DateUtil;
018 import com.liferay.portal.kernel.util.OrderByComparator;
019 import com.liferay.portlet.journal.model.JournalArticle;
020
021
024 public class ArticleDisplayDateComparator
025 extends OrderByComparator<JournalArticle> {
026
027 public static final String ORDER_BY_ASC = "displayDate ASC, version ASC";
028
029 public static final String ORDER_BY_DESC = "displayDate DESC, version DESC";
030
031 public static final String[] ORDER_BY_FIELDS = {"displayDate", "version"};
032
033 public ArticleDisplayDateComparator() {
034 this(false);
035 }
036
037 public ArticleDisplayDateComparator(boolean ascending) {
038 _ascending = ascending;
039 }
040
041 @Override
042 public int compare(JournalArticle article1, JournalArticle article2) {
043 int value = DateUtil.compareTo(
044 article1.getDisplayDate(), article2.getDisplayDate());
045
046 if (value == 0) {
047 if (article1.getVersion() < article2.getVersion()) {
048 value = -1;
049 }
050 else if (article1.getVersion() > article2.getVersion()) {
051 value = 1;
052 }
053 }
054
055 if (_ascending) {
056 return value;
057 }
058 else {
059 return -value;
060 }
061 }
062
063 @Override
064 public String getOrderBy() {
065 if (_ascending) {
066 return ORDER_BY_ASC;
067 }
068 else {
069 return ORDER_BY_DESC;
070 }
071 }
072
073 @Override
074 public String[] getOrderByFields() {
075 return ORDER_BY_FIELDS;
076 }
077
078 @Override
079 public boolean isAscending() {
080 return _ascending;
081 }
082
083 private final boolean _ascending;
084
085 }