blob: e8e3dba48f82814922e0ba0d651df824d23482a7 [file] [log] [blame]
package org.eclipse.jst.validation.sample.filesystem;
/*
* Licensed Material - Property of IBM
* (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
*
* DISCLAIMER OF WARRANTIES.
* The following [enclosed] code is sample code created by IBM
* Corporation. This sample code is not part of any standard or IBM
* product and is provided to you solely for the purpose of assisting
* you in the development of your applications. The code is provided
* "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
* NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
* THIS CODE. THIS CODE MAY CONTAIN ERRORS. IBM shall not be liable
* for any damages arising out of your use of the sample code, even
* if it has been advised of the possibility of such damages.
*
*/
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.eclipse.wst.validation.internal.provisional.core.IValidator;
/**
* This class is the file system specific implementation of an incremental IReporter.
* It caches validation messages, so that messages can both be added and deleted.
*/
public class IncrementalReporter implements IReporter {
public IncrementalReporter() {
super();
}
/**
* @see IReporter#addMessage(IValidator, IMessage)
*/
public void addMessage(IValidator validator, IMessage message) {
if (validator == null) {
return;
}
if (message == null) {
return;
}
ValidatorMessages vm = MessageManager.getManager().getMessages(validator);
if (vm != null) {
vm.addValidationMessage(message);
}
}
/**
* @see IReporter#displaySubtask(IValidator, IMessage)
*/
public void displaySubtask(IValidator validator, IMessage message) {
// Flush the message to the user immediately.
System.err.println(message.getText());
}
/**
* @see IReporter#getMessages()
*/
public List getMessages() {
return null;
}
/**
* Return a Map of String fully-qualified validator class names,
* with a value of Collection, and the Collection contains the
* MessageMetaData reported by the validator, of the given severity.
*/
public Map getMessages(int messageType) {
return MessageManager.getManager().getMessages(messageType);
}
/**
* @see IReporter#isCancelled()
*/
public boolean isCancelled() {
// For simplicity, never allow cancellation.
// In a production system, this method might query another object to find out its cancellation status.
return false;
}
/**
* @see IReporter#removeAllMessages(IValidator)
*/
public void removeAllMessages(IValidator validator) {
if (validator == null) {
return;
}
MessageManager.getManager().removeAllMessages(validator);
}
/**
* @see IReporter#removeAllMessages(IValidator, Object)
*/
public void removeAllMessages(IValidator validator, Object object) {
if (validator == null) {
return;
}
MessageManager.getManager().removeAllMessages(validator, object);
}
/**
* @see IReporter#removeMessageSubset(IValidator, Object, String)
*/
public void removeMessageSubset(IValidator validator, Object obj, String groupName) {
// implement later
}
/**
* Display a formatted list of all of the problems found while
* validating the file.
*/
public void report() {
System.out.println();
System.out.println("Error messages"); //$NON-NLS-1$
Map messages = getMessages(IMessage.HIGH_SEVERITY);
report(messages);
System.out.println();
System.out.println("Warning messages"); //$NON-NLS-1$
messages = getMessages(IMessage.NORMAL_SEVERITY);
report(messages);
System.out.println();
System.out.println("Information messages"); //$NON-NLS-1$
messages = getMessages(IMessage.LOW_SEVERITY);
report(messages);
}
/**
* @see IReporter#report(Map)
*/
protected static void report(Map messages) {
if(messages.size() == 0) {
return;
}
Iterator iterator = messages.keySet().iterator();
while(iterator.hasNext()) {
String validatorClassName = (String)iterator.next();
IValidator validator = FilesystemManager.getManager().getValidator(validatorClassName);
IFilesystemHelper helper = FilesystemManager.getManager().getHelper(validator);
List mssgList = (List)messages.get(validator);
if(mssgList == null) {
continue;
}
Collections.sort(mssgList, MessageManager.getManager().getMessageComparator(helper));
for(int i=0; i<mssgList.size(); i++) {
IMessage mssg = (IMessage)mssgList.get(i);
System.out.println(MessageManager.formatMessage(validator, mssg));
}
}
}
}