/* * ModeShape (http://www.modeshape.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.modeshape.common.collection; import java.io.Serializable; import java.util.EnumSet; import java.util.Iterator; import org.modeshape.common.collection.Problem.Status; import org.modeshape.common.function.Consumer; import org.modeshape.common.i18n.I18n; import org.modeshape.common.logging.Logger; /** * An interface for a collection of {@link Problem} objects, with multiple overloaded methods for adding errors, warnings, and * informational messages. */ public interface Problems extends Iterable<Problem>, Serializable { /** * Add an error message with the parameters that should be used when localizing the message. * * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( I18n message, Object... params ); /** * Add an error exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the error; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( Throwable throwable, I18n message, Object... params ); /** * Add an error message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( String resource, String location, I18n message, Object... params ); /** * Add an error exception and message with a description of the resource, its location, and the parameters that should be used * when localizing the message * * @param throwable the exception that represents the error; may be null * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( Throwable throwable, String resource, String location, I18n message, Object... params ); /** * Add an error message with the parameters that should be used when localizing the message. * * @param code the error code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( int code, I18n message, Object... params ); /** * Add an error exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the error; may be null * @param code the error code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( Throwable throwable, int code, I18n message, Object... params ); /** * Add an error message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param code the error code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( int code, String resource, String location, I18n message, Object... params ); /** * Add an error exception and message with a description of the resource, its location, and the parameters that should be used * when localizing the message * * @param throwable the exception that represents the error; may be null * @param code the error code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addError( Throwable throwable, int code, String resource, String location, I18n message, Object... params ); /** * Add a warning message with the parameters that should be used when localizing the message. * * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( I18n message, Object... params ); /** * Add a warning exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the error; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( Throwable throwable, I18n message, Object... params ); /** * Add a warning message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( String resource, String location, I18n message, Object... params ); /** * Add a warning exception and message with a description of the resource, its location, and the parameters that should be * used when localizing the message * * @param throwable the exception that represents the warning; may be null * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( Throwable throwable, String resource, String location, I18n message, Object... params ); /** * Add a warning message with the parameters that should be used when localizing the message. * * @param code the problem code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( int code, I18n message, Object... params ); /** * Add a warning exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the warning; may be null * @param code the problem code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( Throwable throwable, int code, I18n message, Object... params ); /** * Add a warning message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param code the problem code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( int code, String resource, String location, I18n message, Object... params ); /** * Add a warning exception and message with a description of the resource, its location, and the parameters that should be * used when localizing the message * * @param throwable the exception that represents the warning; may be null * @param code the problem code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addWarning( Throwable throwable, int code, String resource, String location, I18n message, Object... params ); /** * Add a informational message with the parameters that should be used when localizing the message. * * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( I18n message, Object... params ); /** * Add an informational exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the warning; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( Throwable throwable, I18n message, Object... params ); /** * Add an informational message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( String resource, String location, I18n message, Object... params ); /** * Add an informational exception and message with a description of the resource, its location, and the parameters that should * be used when localizing the message * * @param throwable the exception that represents the problem; may be null * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( Throwable throwable, String resource, String location, I18n message, Object... params ); /** * Add a informational message with the parameters that should be used when localizing the message. * * @param code the problem code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( int code, I18n message, Object... params ); /** * Add a informational exception and message with the parameters that should be used when localizing the message. * * @param throwable the exception that represents the warning; may be null * @param code the problem code * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( Throwable throwable, int code, I18n message, Object... params ); /** * Add an informational message with a description of the resource, its location, and the parameters that should be used when * localizing the message * * @param code the problem code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( int code, String resource, String location, I18n message, Object... params ); /** * Add an informational exception and message with a description of the resource, its location, and the parameters that should * be used when localizing the message * * @param throwable the exception that represents the problem; may be null * @param code the problem code * @param resource the description of the resource; may be null * @param location the location of the resource; may be null * @param message the internationalized message describing the problem * @param params the values for the parameters in the message */ void addInfo( Throwable throwable, int code, String resource, String location, I18n message, Object... params ); /** * Add all of the problems in the supplied list. * * @param problems the problems to add to this list; this method does nothing if null or empty */ void addAll( Iterable<Problem> problems ); /** * Get the number of problems that are in this collection * * @return the number of problems; never negative * @see #hasProblems() * @see #isEmpty() */ int size(); /** * Determine if this collection is empty. * * @return true if the there are no problems, or false if there is at least one * @see #hasProblems() * @see #size() */ boolean isEmpty(); /** * Determine if there are problems in this collection. * * @return true if there is at least one problem, or false if it is empty * @see #isEmpty() * @see #size() */ boolean hasProblems(); /** * Determine if there is at least one error in this collection. * * @return true if there is at least one error in this collection, or false if there are no errors */ boolean hasErrors(); /** * Determine if there is at least one warning in this collection. * * @return true if there is at least one warning in this collection, or false if there are no warnings */ boolean hasWarnings(); /** * Determine if there is at least one informational problem in this collection. * * @return true if there is at least one informational problem in this collection, or false if there are no informational * problems */ boolean hasInfo(); /** * Determine the number of errors within these results. * * @return the number of errors; always 0 or a positive number */ int errorCount(); /** * Determine the number of warnings within these results. * * @return the number of warnings; always 0 or a positive number */ int warningCount(); /** * Determine the number of information messages within these results. * * @return the number of information messages; always 0 or a positive number */ int infoCount(); /** * Determine the number of problems (that is, errors and warnings) within these results. * * @return the number of errors and warnings; always 0 or a positive number */ int problemCount(); @Override Iterator<Problem> iterator(); /** * Apply the consumer to each of the problems. This method does nothing if the consumer is null. * * @param consumer the consumer, which operates with side effects */ void apply( Consumer<Problem> consumer ); /** * Apply the consumer to each of the problems with the supplied status. This method does nothing if the status or consumer are * null. * * @param status the status of the problems to be consumed * @param consumer the consumer, which operates with side effects */ void apply( Status status, Consumer<Problem> consumer ); /** * Apply the consumer to each of the problems with the supplied status. This method does nothing if the status or consumer are * null. * * @param statuses the statuses of the problems to be consumed * @param consumer the consumer, which operates with side effects */ void apply( EnumSet<Status> statuses, Consumer<Problem> consumer ); /** * Write the problems to the supplied logger. * * @param logger the logger */ void writeTo( Logger logger ); /** * Write the problems to the supplied logger. * * @param logger the logger * @param firstStatus the first status to be logged * @param additionalStatuses the additional statuses to be logged */ void writeTo( Logger logger, Status firstStatus, Status... additionalStatuses ); }