001
014
015 package com.liferay.portlet.shopping.util.comparator;
016
017 import com.liferay.portal.kernel.util.OrderByComparator;
018 import com.liferay.portal.kernel.util.StringUtil;
019 import com.liferay.portlet.shopping.model.ShoppingItem;
020
021
024 public class ItemNameComparator extends OrderByComparator {
025
026 public static final String ORDER_BY_ASC =
027 "ShoppingItem.categoryId ASC, ShoppingItem.name ASC";
028
029 public static final String ORDER_BY_DESC =
030 "ShoppingItem.categoryId DESC, ShoppingItem.name DESC";
031
032 public static final String[] ORDER_BY_FIELDS = {"categoryId", "name"};
033
034 public ItemNameComparator() {
035 this(false);
036 }
037
038 public ItemNameComparator(boolean ascending) {
039 _ascending = ascending;
040 }
041
042 @Override
043 public int compare(Object obj1, Object obj2) {
044 ShoppingItem item1 = (ShoppingItem)obj1;
045 ShoppingItem item2 = (ShoppingItem)obj2;
046
047 Long categoryId1 = new Long(item1.getCategoryId());
048 Long categoryId2 = new Long(item2.getCategoryId());
049
050 int value = categoryId1.compareTo(categoryId2);
051
052 if (value == 0) {
053 value = StringUtil.toLowerCase(item1.getName()).compareTo(
054 StringUtil.toLowerCase(item2.getName()));
055 }
056
057 if (_ascending) {
058 return value;
059 }
060 else {
061 return -value;
062 }
063 }
064
065 @Override
066 public String getOrderBy() {
067 if (_ascending) {
068 return ORDER_BY_ASC;
069 }
070 else {
071 return ORDER_BY_DESC;
072 }
073 }
074
075 @Override
076 public String[] getOrderByFields() {
077 return ORDER_BY_FIELDS;
078 }
079
080 @Override
081 public boolean isAscending() {
082 return _ascending;
083 }
084
085 private boolean _ascending;
086
087 }