Java tutorial
/* * Copyright (C) 2013-2016 terasoluna.org * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.terasoluna.gfw.common.message; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.springframework.util.StringUtils; import static org.terasoluna.gfw.common.message.StandardResultMessageType.*; /** * Messages which have {@link ResultMessageType} and list of {@link ResultMessage} */ public class ResultMessages implements Serializable, Iterable<ResultMessage> { /** * serial version UID. */ private static final long serialVersionUID = -7323120914608188540L; /** * message type */ private final ResultMessageType type; /** * message list */ private final List<ResultMessage> list = new ArrayList<ResultMessage>(); /** * default attribute name for ResultMessages */ public static final String DEFAULT_MESSAGES_ATTRIBUTE_NAME = StringUtils .uncapitalize(ResultMessages.class.getSimpleName()); /** * Constructor. * @param type message type */ public ResultMessages(ResultMessageType type) { this(type, (ResultMessage[]) null); } /** * Constructor. * @param type message type * @param messages messages to add */ public ResultMessages(ResultMessageType type, ResultMessage... messages) { if (type == null) { throw new IllegalArgumentException("type must not be null!"); } this.type = type; if (messages != null) { addAll(messages); } } /** * returns type * @return type */ public ResultMessageType getType() { return type; } /** * returns messages * @return messages */ public List<ResultMessage> getList() { return list; } /** * add a ResultMessage * @param message ResultMessage instance * @return this result messages */ public ResultMessages add(ResultMessage message) { if (message != null) { this.list.add(message); } else { throw new IllegalArgumentException("message must not be null"); } return this; } /** * add code to create and add ResultMessages * @param code message code * @return this result messages */ public ResultMessages add(String code) { if (code != null) { this.add(ResultMessage.fromCode(code)); } else { throw new IllegalArgumentException("code must not be null"); } return this; } /** * add code and args to create and add ResultMessages * @param code message code * @param args replacement values of message format * @return this result messages */ public ResultMessages add(String code, Object... args) { if (code != null) { this.add(ResultMessage.fromCode(code, args)); } else { throw new IllegalArgumentException("code must not be null"); } return this; } /** * add all messages (excludes <code>null</code> message)<br> * <p> * if <code>messages</code> is <code>null</code>, no message is added. * </p> * @param messages messages to add * @return this messages */ public ResultMessages addAll(ResultMessage... messages) { if (messages != null) { for (ResultMessage message : messages) { add(message); } } else { throw new IllegalArgumentException("messages must not be null"); } return this; } /** * add all messages (excludes <code>null</code> message)<br> * <p> * if <code>messages</code> is <code>null</code>, no message is added. * </p> * @param messages messages to add * @return this messages */ public ResultMessages addAll(Collection<ResultMessage> messages) { if (messages != null) { for (ResultMessage message : messages) { add(message); } } else { throw new IllegalArgumentException("messages must not be null"); } return this; } /** * returns whether messages are not empty. * @return whether messages are not empty */ public boolean isNotEmpty() { return !list.isEmpty(); } /** * factory method for success messages. * @return success messages */ public static ResultMessages success() { return new ResultMessages(SUCCESS); } /** * factory method for info messages. * @return info messages */ public static ResultMessages info() { return new ResultMessages(INFO); } /** * factory method for warn messages. * @return warn messages * @deprecated Instead of this method, please use {@link #warning()}. This method will be removed in the future. */ @Deprecated public static ResultMessages warn() { return new ResultMessages(WARN); } /** * factory method for warning messages. * @return warning messages * @since 5.0.0 */ public static ResultMessages warning() { return new ResultMessages(WARNING); } /** * factory method for error messages. * @return error messages */ public static ResultMessages error() { return new ResultMessages(ERROR); } /** * factory method for danger messages. * @return error messages */ public static ResultMessages danger() { return new ResultMessages(DANGER); } /** * Returns {@link Iterator} instance that iterates over a list of {@link ResultMessage} * @see java.lang.Iterable#iterator() */ @Override public Iterator<ResultMessage> iterator() { return list.iterator(); } /** * Outputs type of messages in this {@code ResultMessages} and the list of messages itself * @see java.lang.Object#toString() */ @Override public String toString() { return "ResultMessages [type=" + type + ", list=" + list + "]"; } /** * special handling for the serialization and deserialization process * @param out ObjectOutputStream * @throws IOException * @see java.io.Serializable */ private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } /** * special handling for the serialization and deserialization process * @param in ObjectInputStream * @throws IOException * @throws ClassNotFoundException * @see java.io.Serializable */ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); } }