/*
* Copyright (C) 2003-2008 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.faq.service;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import org.exoplatform.ks.common.jcr.KSDataLocation;
/**
* Created by The eXo Platform SARL
* Author : Truong Nguyen
* truong.nguyen@exoplatform.com
* Apr 10, 2008, 4:40:22 PM
*/
public class Utils {
final public static String FAQ_APP = "faqApp".intern();
final public static String DEFAULT_AVATAR_URL = "/faq/skin/DefaultSkin/webui/background/Avatar1.gif";
final public static String QUESTION_HOME = "questions".intern();
final public static String CATEGORY_HOME = KSDataLocation.Locations.FAQ_CATEGORIES_HOME;
final public static String ANSWER_HOME = "faqAnswerHome".intern();
final public static String COMMENT_HOME = "faqCommentHome".intern();
final public static String LANGUAGE_HOME = "languages".intern();
final public static String ALL = "All".intern();
public static final String CATE_SPACE_ID_PREFIX = "CategorySpace".intern();
final public static String UI_FAQ_VIEWER = "UIFAQViewer".intern();
final public static String DELETED = ":deleted".intern();
/**
* This method sort list category is date ascending
* @author Administrator
*
*/
static public class DatetimeComparatorASC implements Comparator<Object> {
public int compare(Object o1, Object o2) throws ClassCastException {
Date date1 = ((Category) o1).getCreatedDate();
Date date2 = ((Category) o2).getCreatedDate();
return date1.compareTo(date2);
}
}
/**
* This method sort list category is name ascending
* @author Administrator
*
*/
static public class NameComparatorASC implements Comparator<Object> {
public int compare(Object o1, Object o2) throws ClassCastException {
String name1 = ((Category) o1).getName();
String name2 = ((Category) o2).getName();
return name1.compareToIgnoreCase(name2);
}
}
/**
* This method sort list category is date descending
* @author Administrator
*
*/
static public class DatetimeComparatorDESC implements Comparator<Object> {
public int compare(Object o1, Object o2) throws ClassCastException {
Date date1 = ((Category) o1).getCreatedDate();
Date date2 = ((Category) o2).getCreatedDate();
return date2.compareTo(date1);
}
}
/**
* This method sort list category is name descending
* @author Administrator
*
*/
static public class NameComparatorDESC implements Comparator<Object> {
public int compare(Object o1, Object o2) throws ClassCastException {
String name1 = ((Category) o1).getName();
String name2 = ((Category) o2).getName();
return name2.compareToIgnoreCase(name1);
}
}
static public boolean hasPermission(List<String> listPlugin, List<String> listOfUser) {
List<String> tem = new ArrayList<String>();
for (String str : listOfUser) {
if (listPlugin.contains(str))
return true;
if (str.contains("*")) {
str = str.substring(str.indexOf("/"), str.length());
tem.add(str);
if (listPlugin.contains(str))
return true;
}
}
for (String s : listPlugin) {
if (tem.contains(s))
return true;
}
return false;
}
static public class NameComparator implements Comparator<Object> {
public int compare(Object o1, Object o2) throws ClassCastException {
String name1 = ((Watch) o1).getUser();
String name2 = ((Watch) o2).getUser();
return name1.compareToIgnoreCase(name2);
}
}
public static long getTimeOfLastActivity(String info) {
if (info == null || info.length() == 0)
return -1;
int dashIndex = info.lastIndexOf("-");
if (dashIndex < 0)
return -1;
try {
return Long.parseLong(info.substring(dashIndex + 1));
} catch (NumberFormatException nfe) {
return -1;
}
}
public static String getAuthorOfLastActivity(String info) {
if (info == null || info.length() == 0)
return null;
int dashIndex = info.lastIndexOf("-");
if (dashIndex < 0)
return null;
return info.substring(0, dashIndex);
}
public static String getOderBy(FAQSetting faqSetting) {
StringBuffer queryString = new StringBuffer();
if (faqSetting.isSortQuestionByVote()) {
queryString.append(FAQNodeTypes.AT).append(FAQNodeTypes.EXO_MARK_VOTE).append(FAQSetting.ORDERBY_DESC).append(", ");
}
// order by and ascending or descending
if (faqSetting.getOrderBy().equals(FAQSetting.DISPLAY_TYPE_POSTDATE)) {
queryString.append(FAQNodeTypes.AT).append(FAQNodeTypes.EXO_CREATED_DATE);
} else {
queryString.append(FAQNodeTypes.AT).append(FAQNodeTypes.EXO_TITLE);
}
if (faqSetting.getOrderType().equals(FAQSetting.ORDERBY_TYPE_ASC)) {
queryString.append(FAQSetting.ORDERBY_ASC);
} else {
queryString.append(FAQSetting.ORDERBY_DESC);
}
return queryString.toString();
}
public static Calendar getInstanceTempCalendar() {
Calendar calendar = GregorianCalendar.getInstance();
calendar.setLenient(false);
int gmtoffset = calendar.get(Calendar.DST_OFFSET) + calendar.get(Calendar.ZONE_OFFSET);
calendar.setTimeInMillis(System.currentTimeMillis() - gmtoffset);
return calendar;
}
}