/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.springframework.util.StringUtils; /** * A control panel order. */ public class ControlPanelOrder implements Serializable { /** An order part name. */ public static final String ID = "id"; /** An order part name. */ public static final String CREATION_DEPARTMENT = "creationDepartment"; /** An order part name. */ public static final String DEPARTMENT = "department"; /** An order part name. */ public static final String CATEGORY = "category"; /** An order part name. */ public static final String LABEL = "label"; /** An order part name. */ public static final String STATUS = "status"; /** An order part name. */ public static final String PRIORITY = "priority"; /** An order part name. */ public static final String LAST_ACTION_DATE = "lastActionDate"; /** An order part name. */ public static final String OWNER = "owner"; /** An order part name. */ public static final String MANAGER = "manager"; /** * The serialization id. */ private static final long serialVersionUID = -2182251749612671014L; /** * The order part names. */ private static final String [] ALLOWED_PART_NAMES = { ID, CREATION_DEPARTMENT, DEPARTMENT, CATEGORY, LABEL, STATUS, PRIORITY, LAST_ACTION_DATE, OWNER, MANAGER, }; /** * The order spec parts. */ private List<ControlPanelOrderPart> orderParts; /** * Constructor. * @param orderSpec */ public ControlPanelOrder( final String orderSpec) { super(); orderParts = new ArrayList<ControlPanelOrderPart>(); if (StringUtils.hasText(orderSpec)) { for (String orderPartSpec : orderSpec.split(",")) { orderParts.add(new ControlPanelOrderPart(orderPartSpec)); } } if (orderParts.size() == 0) { orderParts.add(new ControlPanelOrderPart("-" + ID)); } } /** * @param partName * @return true if partName is allowed. */ public static boolean isAllowedPartName(final String partName) { for (String allowedPartName : ALLOWED_PART_NAMES) { if (allowedPartName.equals(partName)) { return true; } } return false; } /** * @see java.util.AbstractCollection#toString() */ @Override public String toString() { String separator = ""; String result = ""; for (ControlPanelOrderPart part : orderParts) { result += separator + part.toString(); separator = ","; } return result; } /** * Set the first order part. * @param orderPartSpec */ public void setFirstOrderPart(final String orderPartSpec) { ControlPanelOrderPart part = new ControlPanelOrderPart(orderPartSpec); List<ControlPanelOrderPart> newOrderParts = new ArrayList<ControlPanelOrderPart>(); newOrderParts.add(part); String name = part.getName(); if (!ID.equals(name) && !LAST_ACTION_DATE.equals(name)) { for (ControlPanelOrderPart oldPart : orderParts) { if (!name.equals(oldPart.getName())) { newOrderParts.add(oldPart); } } } orderParts = newOrderParts; } /** * @return the first order part. */ public ControlPanelOrderPart getFirstOrderPart() { return orderParts.get(0); } /** * @return the orderParts */ public List<ControlPanelOrderPart> getOrderParts() { return orderParts; } }