blob: 2c030f443499e354a2f848dcd9d921e2775d7f91 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 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
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20070510 180567 sengpl@ca.ibm.com - Seng Phung-Lu
*******************************************************************************/
package org.eclipse.wst.command.internal.env.eclipse;
import java.util.ArrayList;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.wst.common.environment.Choice;
import org.eclipse.wst.common.environment.StatusException;
public class AccumulateStatusHandler extends BaseStatusHandler{
ArrayList statusList_ = null;
ArrayList errorList_ = null;
ArrayList warningList_ = null;
/**
* Constructor
*/
public AccumulateStatusHandler(){
resetStatus();
}
/**
* Constructor for reloading status values and using the utility methods
*/
public AccumulateStatusHandler(IStatus[] status){
resetStatus();
for (int i=0;i<status.length;i++)
statusList_.add(status[i]);
}
public IStatus getStatus() {
IStatus worstStatus = Status.OK_STATUS;
// Find the worst error status code
for( int index = 0; index < statusList_.size(); index++ )
{
IStatus status = (IStatus)statusList_.get( index );
if( status.getSeverity() > worstStatus.getSeverity() )
{
worstStatus = status;
}
}
return worstStatus;
}
public void resetStatus() {
statusList_ = new ArrayList();
errorList_ = null;
warningList_ = null;
}
public void report(IStatus status) throws StatusException {
statusList_.add(status);
}
public Choice report(IStatus status, Choice[] choices) {
Choice result = null;
// Always take the first choice if available.
if( choices != null && choices.length > 0 )
{
result = choices[0];
}
statusList_.add( status );
return result;
}
public void reportError(IStatus status) {
statusList_.add(status);
}
public void reportInfo(IStatus status) {
statusList_.add(status);
}
/**
* For use by assertion methods
* @return IStatus[]
*/
public IStatus[] getAllReports(){
if (statusList_==null || statusList_.isEmpty()){
return new IStatus[]{Status.OK_STATUS};
}
return (IStatus[])statusList_.toArray(new IStatus[0]);
}
/**
* Get error statuses only
* @return IStatus[]
*/
public IStatus[] getErrorReports(){
if (errorList_==null)
sortReports();
return (IStatus[])errorList_.toArray(new IStatus[0]);
}
/**
* Get warning statuses only
* @return IStatus[]
*/
public IStatus[] getWarningReports(){
if (warningList_==null)
sortReports();
return (IStatus[])warningList_.toArray(new IStatus[0]);
}
/**
* Sort all status reports
*/
private void sortReports(){
errorList_ = new ArrayList();
warningList_ = new ArrayList();
// Sort according to error status code
for( int index = 0; index < statusList_.size(); index++ )
{
IStatus status = (IStatus)statusList_.get(index);
if( status.getSeverity()== IStatus.ERROR){
errorList_.add(status);
}
else if (status.getSeverity()==IStatus.WARNING){
warningList_.add(status);
}
}
}
}