1 /* 2 * $HeadURL: $ 3 * $Date: $ 4 * $Revision: $ 5 * $Author: $ 6 * 7 * Copyright (c) 2006 MindTree Consulting Ltd. 8 * 9 * This file is part of Insight. 10 * 11 * Insight is free software: you can redistribute it and/or modify it under the 12 * terms of the GNU General Public License as published by the Free Software 13 * Foundation, either version 3 of the License, or (at your option) any later 14 * version. 15 * 16 * Insight is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 19 * Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License along with 22 * Insight. If not, see <http://www.gnu.org/licenses/>. 23 */ 24 package com.mindtree.techworks.insight.reporting.jobs.message; 25 26 import java.util.ArrayList; 27 import java.util.Iterator; 28 import java.util.List; 29 30 import com.mindtree.techworks.insight.filter.criteria.FilterCriteria; 31 32 /** 33 * A simple implementation of <code>JobMessage</code>. All <code>Job</code>s 34 * support this message type. An instance of this class would contain just a 35 * list of <code>String</code> messages. 36 * 37 * @see com.mindtree.techworks.insight.reporting.jobs.message.JobMessage 38 * @see com.mindtree.techworks.insight.reporting.jobs.Job 39 * 40 * @author <a href="mailto:bindul_bhowmik@mindtree.com">Bindul Bhowmik</a> 41 * @version $Revision: 27 $ $Date: 2007-12-16 04:58:03 -0700 (Sun, 16 Dec 2007) $ 42 * @since Insight 1.5 43 */ 44 public class DefaultJobMessage implements JobMessage { 45 46 // ------------------------------------------------------------------------- 47 // Class fields 48 // ------------------------------------------------------------------------- 49 50 /** 51 * Serial Version UID for the serialized form of the class. 52 */ 53 private static final long serialVersionUID = 6336374138580664199L; 54 55 // ------------------------------------------------------------------------- 56 // Instance fields 57 // ------------------------------------------------------------------------- 58 59 /** 60 * The action that caused the message 61 */ 62 private int _action; 63 64 /** 65 * The mode insight was running in. 66 */ 67 private short _mode; 68 69 /** 70 * The criteria in use during message creation. 71 */ 72 private FilterCriteria _criteria; 73 74 /** 75 * The messages in this object. 76 */ 77 private List _messages; 78 79 // ------------------------------------------------------------------------- 80 // Constructors 81 // ------------------------------------------------------------------------- 82 83 /** 84 * Creates a new instance of <code>DefaultJobMessage</code>. Defaults the 85 * action to <code>ACTION_FILTER</code> and the mode to 86 * <code>MODE_INTERACTIVE</code>. 87 */ 88 public DefaultJobMessage() { 89 this(JobMessage.ACTION_FILTER, JobMessage.MODE_INTERACTIVE); 90 } 91 92 /** 93 * Creates a new instance of <code>DefaultJobMessage</code> with the mode 94 * provided. Defaults the action to <code>ACTION_FILTER</code>. 95 * 96 * @param mode 97 * The mode in which Insight is running. 98 */ 99 public DefaultJobMessage(short mode) { 100 this(JobMessage.ACTION_FILTER, mode); 101 } 102 103 /** 104 * Creates a new instance of <code>DefaultJobMessage</code> with the mode 105 * and action provided. 106 * 107 * @param action 108 * The action which caused the message. 109 * @param mode 110 * The mode in which Insight is running. 111 */ 112 public DefaultJobMessage(int action, short mode) { 113 this._action = action; 114 this._mode = mode; 115 this._messages = new ArrayList(); 116 } 117 118 // ------------------------------------------------------------------------- 119 // Methods implemented from 120 // com.mindtree.techworks.insight.reporting.jobs.message.JobMessage 121 // ------------------------------------------------------------------------- 122 123 /** 124 * @see JobMessage#getJobMessageType() 125 */ 126 public String getJobMessageType() { 127 128 return DefaultJobMessage.class.getName(); 129 } 130 131 /** 132 * @see JobMessage#getAction() 133 */ 134 public int getAction() { 135 136 return this._action; 137 } 138 139 /** 140 * @see JobMessage#getFilterCriteria() 141 */ 142 public FilterCriteria getFilterCriteria() { 143 144 return this._criteria; 145 } 146 147 /** 148 * @see JobMessage#getInsightMode() 149 */ 150 public short getInsightMode() { 151 152 return this._mode; 153 } 154 155 // ------------------------------------------------------------------------- 156 // Accessor methods 157 // ------------------------------------------------------------------------- 158 159 /** 160 * Sets the criteria which caused the message. 161 * 162 * @param filterCriteria The criteria executed to get the message. 163 */ 164 public void setFilterCriteria(FilterCriteria filterCriteria) { 165 166 this._criteria = filterCriteria; 167 } 168 169 /** 170 * Adds a message to the <code>DefaultJobMessage</code>. 171 * 172 * @param message The message to be added. 173 */ 174 public void addMessage(String message) { 175 176 this._messages.add(message); 177 } 178 179 /** 180 * Returns an <code>Iterator</code> for all the messages in the instance. 181 * 182 * @return An Iterator for all the messages. 183 */ 184 public Iterator iterateMessages() { 185 186 return this._messages.iterator(); 187 } 188 189 /** 190 * Returns the number of messages in the instance. 191 * 192 * @return The number of messages in the instance. 193 */ 194 public int getMessageCount() { 195 196 return this._messages.size(); 197 } 198 199 /** 200 * Returns the message at the specified index. 201 * 202 * @param index 203 * The index at which the message is required. 204 * @return The message at the index. 205 * @throws ArrayIndexOutOfBoundsException 206 * If there is no message at the specified index. 207 */ 208 public String getMessage(int index) { 209 210 return (String) this._messages.get(index); 211 } 212 }