package com.idega.block.article.business; import java.text.DateFormat; import java.util.Comparator; import java.util.Date; import java.util.Locale; import com.idega.block.article.bean.ArticleComment; import com.idega.util.StringUtil; public class ArticleCommentComparator implements Comparator<ArticleComment> { private DateFormat dateFormatter; private Locale locale; private int dateStyle = -1; private int timeStyle = -1; private boolean newestEntriesOnTop = true; public ArticleCommentComparator(Locale locale, int dateStyle, int timeStyle, boolean newestEntriesOnTop) { this.locale = locale; this.dateStyle = dateStyle; this.timeStyle = timeStyle; this.newestEntriesOnTop = newestEntriesOnTop; } public int compare(ArticleComment comment1, ArticleComment comment2) { if (dateStyle < 0 || timeStyle < 0 || locale == null) { return 0; } String timestampValue1 = comment1.getPosted(); String timestampValue2 = comment2.getPosted(); if (StringUtil.isEmpty(timestampValue1) || StringUtil.isEmpty(timestampValue2)) { return 0; } if (dateFormatter == null) { dateFormatter = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale); } Date time1 = null; Date time2 = null; try { time1 = dateFormatter.parse(timestampValue1); time2 = dateFormatter.parse(timestampValue2); } catch(Exception e) { e.printStackTrace(); } if (time1 == null || time2 == null) { return 0; } return newestEntriesOnTop ? -time1.compareTo(time2) : time1.compareTo(time2); } }