001
014
015 package com.liferay.portlet.documentlibrary.util.comparator;
016
017 import com.liferay.portal.kernel.repository.model.RepositoryEntry;
018 import com.liferay.portal.kernel.util.DateUtil;
019 import com.liferay.portal.kernel.util.OrderByComparator;
020 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
021 import com.liferay.portlet.documentlibrary.model.DLFileShortcut;
022 import com.liferay.portlet.documentlibrary.model.DLFolder;
023
024 import java.util.Date;
025
026
030 public class RepositoryModelModifiedDateComparator<T>
031 extends OrderByComparator<T> {
032
033 public static final String ORDER_BY_ASC = "modifiedDate ASC";
034
035 public static final String ORDER_BY_DESC = "modifiedDate DESC";
036
037 public static final String[] ORDER_BY_FIELDS = {"modifiedDate"};
038
039 public RepositoryModelModifiedDateComparator() {
040 this(false);
041 }
042
043 public RepositoryModelModifiedDateComparator(boolean ascending) {
044 _ascending = ascending;
045 }
046
047 @Override
048 public int compare(T t1, T t2) {
049 Date modifiedDate1 = getModifiedDate(t1);
050 Date modifiedDate2 = getModifiedDate(t2);
051
052 int value = DateUtil.compareTo(modifiedDate1, modifiedDate2);
053
054 if (_ascending) {
055 return value;
056 }
057 else {
058 return -value;
059 }
060 }
061
062 @Override
063 public String getOrderBy() {
064 if (_ascending) {
065 return ORDER_BY_ASC;
066 }
067 else {
068 return ORDER_BY_DESC;
069 }
070 }
071
072 @Override
073 public String[] getOrderByFields() {
074 return ORDER_BY_FIELDS;
075 }
076
077 @Override
078 public boolean isAscending() {
079 return _ascending;
080 }
081
082 protected Date getModifiedDate(Object obj) {
083 if (obj instanceof DLFileEntry) {
084 DLFileEntry dlFileEntry = (DLFileEntry)obj;
085
086 return dlFileEntry.getModifiedDate();
087 }
088 else if (obj instanceof DLFileShortcut) {
089 DLFileShortcut dlFileShortcut = (DLFileShortcut)obj;
090
091 return dlFileShortcut.getModifiedDate();
092 }
093 else if (obj instanceof DLFolder) {
094 DLFolder dlFolder = (DLFolder)obj;
095
096 return dlFolder.getModifiedDate();
097 }
098 else {
099 RepositoryEntry repositoryEntry = (RepositoryEntry)obj;
100
101 return repositoryEntry.getModifiedDate();
102 }
103 }
104
105 private final boolean _ascending;
106
107 }