001 /* 002 * JBoss, Home of Professional Open Source. 003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors 004 * as indicated by the @author tags. See the copyright.txt file in the 005 * distribution for a full listing of individual contributors. 006 * 007 * This is free software; you can redistribute it and/or modify it 008 * under the terms of the GNU Lesser General Public License as 009 * published by the Free Software Foundation; either version 2.1 of 010 * the License, or (at your option) any later version. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022 package org.jboss.dna.common.collection; 023 024 import java.util.Collections; 025 import java.util.Iterator; 026 import java.util.List; 027 import org.jboss.dna.common.i18n.I18n; 028 029 /** 030 * A list of problems for some execution context. The problems will be {@link #iterator() returned} in the order in which they 031 * were encountered (although this cannot be guaranteed in contexts involving multiple threads or processes). 032 * 033 * @author Randall Hauch 034 * @author John Verhaeg 035 */ 036 public abstract class AbstractProblems implements Problems { 037 038 protected static final List<Problem> EMPTY_PROBLEMS = Collections.emptyList(); 039 040 public void addError( I18n message, 041 Object... params ) { 042 addProblem(new Problem(Problem.Status.ERROR, Problem.DEFAULT_CODE, message, params, null, null, null)); 043 } 044 045 public void addError( Throwable throwable, 046 I18n message, 047 Object... params ) { 048 addProblem(new Problem(Problem.Status.ERROR, Problem.DEFAULT_CODE, message, params, null, null, throwable)); 049 } 050 051 public void addError( I18n message, 052 String resource, 053 String location, 054 Object... params ) { 055 addProblem(new Problem(Problem.Status.ERROR, Problem.DEFAULT_CODE, message, params, resource, location, null)); 056 } 057 058 public void addError( Throwable throwable, 059 I18n message, 060 String resource, 061 String location, 062 Object... params ) { 063 addProblem(new Problem(Problem.Status.ERROR, Problem.DEFAULT_CODE, message, params, resource, location, throwable)); 064 } 065 066 public void addError( int code, 067 I18n message, 068 Object... params ) { 069 addProblem(new Problem(Problem.Status.ERROR, code, message, params, null, null, null)); 070 } 071 072 public void addError( Throwable throwable, 073 int code, 074 I18n message, 075 Object... params ) { 076 addProblem(new Problem(Problem.Status.ERROR, code, message, params, null, null, throwable)); 077 } 078 079 public void addError( int code, 080 I18n message, 081 String resource, 082 String location, 083 Object... params ) { 084 addProblem(new Problem(Problem.Status.ERROR, code, message, params, resource, location, null)); 085 } 086 087 public void addError( Throwable throwable, 088 int code, 089 I18n message, 090 String resource, 091 String location, 092 Object... params ) { 093 addProblem(new Problem(Problem.Status.ERROR, code, message, params, resource, location, throwable)); 094 } 095 096 public void addWarning( I18n message, 097 Object... params ) { 098 addProblem(new Problem(Problem.Status.WARNING, Problem.DEFAULT_CODE, message, params, null, null, null)); 099 } 100 101 public void addWarning( Throwable throwable, 102 I18n message, 103 Object... params ) { 104 addProblem(new Problem(Problem.Status.WARNING, Problem.DEFAULT_CODE, message, params, null, null, throwable)); 105 } 106 107 public void addWarning( I18n message, 108 String resource, 109 String location, 110 Object... params ) { 111 addProblem(new Problem(Problem.Status.WARNING, Problem.DEFAULT_CODE, message, params, resource, location, null)); 112 } 113 114 public void addWarning( Throwable throwable, 115 I18n message, 116 String resource, 117 String location, 118 Object... params ) { 119 addProblem(new Problem(Problem.Status.WARNING, Problem.DEFAULT_CODE, message, params, resource, location, throwable)); 120 } 121 122 public void addWarning( int code, 123 I18n message, 124 Object... params ) { 125 addProblem(new Problem(Problem.Status.WARNING, code, message, params, null, null, null)); 126 } 127 128 public void addWarning( Throwable throwable, 129 int code, 130 I18n message, 131 Object... params ) { 132 addProblem(new Problem(Problem.Status.WARNING, code, message, params, null, null, throwable)); 133 } 134 135 public void addWarning( int code, 136 I18n message, 137 String resource, 138 String location, 139 Object... params ) { 140 addProblem(new Problem(Problem.Status.WARNING, code, message, params, resource, location, null)); 141 } 142 143 public void addWarning( Throwable throwable, 144 int code, 145 I18n message, 146 String resource, 147 String location, 148 Object... params ) { 149 addProblem(new Problem(Problem.Status.WARNING, code, message, params, resource, location, throwable)); 150 } 151 152 public void addInfo( I18n message, 153 Object... params ) { 154 addProblem(new Problem(Problem.Status.INFO, Problem.DEFAULT_CODE, message, params, null, null, null)); 155 } 156 157 public void addInfo( Throwable throwable, 158 I18n message, 159 Object... params ) { 160 addProblem(new Problem(Problem.Status.INFO, Problem.DEFAULT_CODE, message, params, null, null, throwable)); 161 } 162 163 public void addInfo( I18n message, 164 String resource, 165 String location, 166 Object... params ) { 167 addProblem(new Problem(Problem.Status.INFO, Problem.DEFAULT_CODE, message, params, resource, location, null)); 168 } 169 170 public void addInfo( Throwable throwable, 171 I18n message, 172 String resource, 173 String location, 174 Object... params ) { 175 addProblem(new Problem(Problem.Status.INFO, Problem.DEFAULT_CODE, message, params, resource, location, throwable)); 176 } 177 178 public void addInfo( int code, 179 I18n message, 180 Object... params ) { 181 addProblem(new Problem(Problem.Status.INFO, code, message, params, null, null, null)); 182 } 183 184 public void addInfo( Throwable throwable, 185 int code, 186 I18n message, 187 Object... params ) { 188 addProblem(new Problem(Problem.Status.INFO, code, message, params, null, null, throwable)); 189 } 190 191 public void addInfo( int code, 192 I18n message, 193 String resource, 194 String location, 195 Object... params ) { 196 addProblem(new Problem(Problem.Status.INFO, code, message, params, resource, location, null)); 197 } 198 199 public void addInfo( Throwable throwable, 200 int code, 201 I18n message, 202 String resource, 203 String location, 204 Object... params ) { 205 addProblem(new Problem(Problem.Status.INFO, code, message, params, resource, location, throwable)); 206 } 207 208 public boolean hasProblems() { 209 return getProblems().size() > 0; 210 } 211 212 public boolean hasErrors() { 213 for (Problem problem : this.getProblems()) { 214 if (problem.getStatus() == Problem.Status.ERROR) return true; 215 } 216 return false; 217 } 218 219 public boolean hasWarnings() { 220 for (Problem problem : this.getProblems()) { 221 if (problem.getStatus() == Problem.Status.WARNING) return true; 222 } 223 return false; 224 } 225 226 public boolean hasInfo() { 227 for (Problem problem : this.getProblems()) { 228 if (problem.getStatus() == Problem.Status.INFO) return true; 229 } 230 return false; 231 } 232 233 public boolean isEmpty() { 234 return getProblems().isEmpty(); 235 } 236 237 public int size() { 238 return getProblems().size(); 239 } 240 241 /** 242 * {@inheritDoc} 243 * 244 * @see org.jboss.dna.common.collection.Problems#iterator() 245 */ 246 public Iterator<Problem> iterator() { 247 return getProblems().iterator(); 248 } 249 250 protected abstract void addProblem( Problem problem ); 251 252 protected abstract List<Problem> getProblems(); 253 }