package org.exoplatform.forum.service; public class SortSettings { private SortField field = SortField.ORDER; // Name , Order, createdDate, laspostDate, postCount, topicCount, isLock, lastPostDate, viewCount, numberAttachments private Direction direction = Direction.ASC; // ascending or descending public SortSettings(String field, String direction) { this.field = toField(field); this.direction = toDirection(direction); } public SortSettings(SortField field, Direction direction) { this.field = field; this.direction = direction; } public SortField getField() { return field; } public Direction getDirection() { return direction; } private SortField toField(String sortBy) { if ("name".equalsIgnoreCase(sortBy)) return SortField.NAME; else if ("createdDate".equalsIgnoreCase(sortBy)) return SortField.CREATED; else if ("isLock".equalsIgnoreCase(sortBy)) return SortField.ISLOCK; else if ("topicCount".equalsIgnoreCase(sortBy)) return SortField.TOPICCOUNT; else if ("lastPostDate".equalsIgnoreCase(sortBy)) return SortField.LASTPOST; else if ("postCount".equalsIgnoreCase(sortBy)) return SortField.POSTCOUNT; else if ("viewCount".equalsIgnoreCase(sortBy)) return SortField.VIEWCOUNT; else if ("numberAttachments".equalsIgnoreCase(sortBy)) return SortField.ATTACHMENTS; else return SortField.ORDER; } private Direction toDirection(String direction) { return ("descending".equalsIgnoreCase(direction)) ? Direction.DESC : Direction.ASC; } public enum Direction { ASC("ascending"), DESC("descending"); private final String name; Direction(String name) { this.name = name; } public String toString() { return name; } }; public enum SortField { NAME("name"), ORDER("forumOrder"), CREATED("createdDate"), LASTPOST("lastPostDate"), POSTCOUNT("postCount"), TOPICCOUNT("topicCount"), ISLOCK("isLock"), VIEWCOUNT("viewCount"), ATTACHMENTS("numberAttachments"); private final String name; SortField(String name) { this.name = name; } public String toString() { return name; } }; }