/* * This software is distributed under the terms of the FSF * Gnu Lesser General Public License (see lgpl.txt). * * This program is distributed WITHOUT ANY WARRANTY. See the * GNU General Public License for more details. */ package com.scooterframework.web.controller; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.scooterframework.common.util.Message; /** * FlashMessage contains information for the next request only. * * @author (Fei) John Chen */ public class FlashMessage implements Serializable { /** * generated serialVersionUID */ private static final long serialVersionUID = 4864574800679802319L; public void addMessage(String type, String message) { addMessage(type, new Message(message)); } public void addMessage(String type, Message message) { List<Message> messages = (List<Message>)typedMessages.get(type); if (messages == null) { messages = new ArrayList<Message>(); typedMessages.put(type, messages); } messages.add(message); } /** * Returns all messages for the specific type. * * @param type * @return list of messages associated with the type */ public List<Message> getAll(String type) { if (type == null || "".equals(type)) return null; return (List<Message>)typedMessages.get(type); } /** * Returns the first message for the specific type * * @param type * @return message associated with the type */ public String getFirst(String type) { List<Message> messages = getAll(type); if (messages == null || messages.size() == 0) return null; Message message = (Message) messages.get(0); return (message != null)?message.getContent():null; } /** * Returns the last message for the specific type * * @param type * @return message associated with the type */ public String getLast(String type) { List<Message> messages = getAll(type); if (messages == null || messages.size() == 0) return null; Message message = (Message) messages.get(messages.size()-1); return (message != null)?message.getContent():null; } /** * Counts number of messages. * * @return int number of messages. */ public int count() { int total = 0; for (Map.Entry<String, List<Message>> entry : typedMessages.entrySet()) { List<Message> list = entry.getValue(); if (list == null) continue; total += list.size(); } return total; } private Map<String, List<Message>> typedMessages = new HashMap<String, List<Message>>(); }