All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.equinox.common.src.org.eclipse.core.runtime.MultiStatus Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2000, 2006 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.core.runtime;

/**
 * A concrete multi-status implementation, 
 * suitable either for instantiating or subclassing.
 * 

* This class can be used without OSGi running. *

*/ public class MultiStatus extends Status { /** List of child statuses. */ private IStatus[] children; /** * Creates and returns a new multi-status object with the given children. * * @param pluginId the unique identifier of the relevant plug-in * @param code the plug-in-specific status code * @param newChildren the list of children status objects * @param message a human-readable message, localized to the * current locale * @param exception a low-level exception, or null if not * applicable */ public MultiStatus(String pluginId, int code, IStatus[] newChildren, String message, Throwable exception) { this(pluginId, code, message, exception); Assert.isLegal(newChildren != null); int maxSeverity = getSeverity(); for (int i = 0; i < newChildren.length; i++) { Assert.isLegal(newChildren[i] != null); int severity = newChildren[i].getSeverity(); if (severity > maxSeverity) maxSeverity = severity; } this.children = new IStatus[newChildren.length]; setSeverity(maxSeverity); System.arraycopy(newChildren, 0, this.children, 0, newChildren.length); } /** * Creates and returns a new multi-status object with no children. * * @param pluginId the unique identifier of the relevant plug-in * @param code the plug-in-specific status code * @param message a human-readable message, localized to the * current locale * @param exception a low-level exception, or null if not * applicable */ public MultiStatus(String pluginId, int code, String message, Throwable exception) { super(OK, pluginId, code, message, exception); children = new IStatus[0]; } /** * Adds the given status to this multi-status. * * @param status the new child status */ public void add(IStatus status) { Assert.isLegal(status != null); IStatus[] result = new IStatus[children.length + 1]; System.arraycopy(children, 0, result, 0, children.length); result[result.length - 1] = status; children = result; int newSev = status.getSeverity(); if (newSev > getSeverity()) { setSeverity(newSev); } } /** * Adds all of the children of the given status to this multi-status. * Does nothing if the given status has no children (which includes * the case where it is not a multi-status). * * @param status the status whose children are to be added to this one */ public void addAll(IStatus status) { Assert.isLegal(status != null); IStatus[] statuses = status.getChildren(); for (int i = 0; i < statuses.length; i++) { add(statuses[i]); } } /* (Intentionally not javadoc'd) * Implements the corresponding method on IStatus. */ public IStatus[] getChildren() { return children; } /* (Intentionally not javadoc'd) * Implements the corresponding method on IStatus. */ public boolean isMultiStatus() { return true; } /** * Merges the given status into this multi-status. * Equivalent to add(status) if the * given status is not a multi-status. * Equivalent to addAll(status) if the * given status is a multi-status. * * @param status the status to merge into this one * @see #add(IStatus) * @see #addAll(IStatus) */ public void merge(IStatus status) { Assert.isLegal(status != null); if (!status.isMultiStatus()) { add(status); } else { addAll(status); } } /** * Returns a string representation of the status, suitable * for debugging purposes only. */ public String toString() { StringBuffer buf = new StringBuffer(super.toString()); buf.append(" children=["); //$NON-NLS-1$ for (int i = 0; i < children.length; i++) { if (i != 0) { buf.append(" "); //$NON-NLS-1$ } buf.append(children[i].toString()); } buf.append("]"); //$NON-NLS-1$ return buf.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy