blob: a2cd946cbfb4e93ec3da28570b6ab10be3e52e83 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.validation.internal.provisional.core;
import java.util.List;
/*
* CCM - Reporter is now passed locale-independent messages.
* Messages should only be translated to a locale upon access.
* Or in special locale-dependent reporter implementations (console logger).
*/
/**
* The interface used by IValidator's to report messages. The implementation of the IReporter could
* simply log the messages to stdout, a file, or retain them in a buffer for later access by a user
* interface.
*
* Reporter implementations should keep non-localized versions of their messages
*
* Any messages which need to be displayed to the user are done through this class, and if the user
* cancels the current function, this class is the one which registers the cancellation.
*
* The IReporter instance is created at the time validation begins and ends when validation is complete.
* There is only one IReporter instance created for all validators that are run on a IResource. The IResource
* provides a way to get messages put out each validator and add and delete messages for one validator
* at a time.
* ]
*/
public interface IReporter {
/**
* <p>
* Add a locale-independent validation message. It will be displayed later, with all of the
* other validation messages.
* </p>
* <p>
* The IValidator passed in is needed for incremental validation (when a message needs to be
* removed, one validator should not remove messages entered by another validator.) The
* validator is also queried for information about its resource bundle, to enable support for
* localization of messages in a client-server environment.
* </p>
* <p>
* Both parameters must not be null.
* </p>
* @param origin
* The validator which is the source of the message.
* @param message
* A message to be reported
* @exception MessageLimitException
* is thrown when the total number of messages reported exceeds the maximum
* allowed.
* [issue: LM - This exception seems questionable to me. Why do validators need to know how
* to handle a MessageLimitException? Seems to me that this is a validation framework
* specific issue and that client validators shouldn't know about this at all. ]
*/
public abstract void addMessage(IValidator origin, IMessage message);
/**
* <p>
* Show a text representation of this message, formatted in the default Locale, to the user
* immediately. This message indicates which subtask is currently being processed. The message
* is not stored. The subtask message in this context is the subtask in a IProgressMontior
*
* @see subTask(String name) in IProgressMonitor
* </p>
* <p>
* Both parameters must not be null.
* </p>
*
* @param IValidator
* validator The validator issuing the subtask message.
* @param IMessage
* message The message to be displayed to the user.
*
*/
public abstract void displaySubtask(IValidator validator, IMessage message);
/**
* @return the message access interface to this reporter, or null if message access is not
* supported.
*
*/
public List getMessages();
/**
* <p>
* Return true if the user cancelled validation, and false otherwise. This method should be
* called by IValidators periodically, because no event is fired to notify IValidators that the
* user cancelled validation. If a validator does not check this method, a cancellation request
* is ignored.
* </p>
*
* @return true if the user cancelled validation, and false otherwise.
*
*/
public abstract boolean isCancelled();
/**
* <p>
* Remove all validation messages entered by the identified validator. This method is provided
* for incremental validation.
* </p>
* <p>
* The IValidator parameter must not be null.
* </p>
* @param origin
* originator validator of the message.
*/
public abstract void removeAllMessages(IValidator origin);
/**
* Remove all validation messages, entered by the identified validator, pertaining to the Object
* provided. This method is provided for incremental validation. <br>
* <br>
* If <code>object</code> is null, then this method should remove all messages owned by the
* validator. (i.e., the same behaviour as the removeAllMessages(IValidator) method.) <br>
* <br>
* <p>
* The IValidator parameter must not be null.
* </p>
* @param origin
* originator validator of the message.
* @param object
* Object to which the message belongs. Object is the target object that was set on the IMessage
* when adding the message as problem marker.
*
*/
public abstract void removeAllMessages(IValidator origin, Object object);
/**
* To support removal of a subset of validation messages, an IValidator may assign group names
* to IMessages. An IMessage subset will be identified by the name of its group. This method
* will remove only the IMessage's that are in the group identified by groupName. <br>
* <br>
* <br>
*
* The IValidator parameter must not be null. <br>
* <br>
*
* If <code>object</code> is null, then this method should remove all messages owned by the
* validator. (i.e., the same behaviour as the removeAllMessages(IValidator) method.)
*
* If groupName is null, that's the same as no group (i.e., the same behaviour as the
* <code>removeAllMessages(IValidator, Object)</code> method.) <br>
*
* @param origin
* originator validator of the message.
* @param object
* Object to which the message belongs.
* @param groupName
* name of the group to which the message belongs.
*/
public void removeMessageSubset(IValidator validator, Object obj, String groupName);
}