/******************************************************************************* * Copyright (c) 2001, 2005 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.jst.j2ee.internal; import java.text.MessageFormat; import org.eclipse.emf.ecore.ENamedElement; import org.eclipse.emf.ecore.EObject; import org.eclipse.jst.j2ee.internal.common.XMLResource; /** * @author DABERG * */ public class J2EEStatus implements J2EESpecificationConstants { public static final int COMPLETED_OK = 0; public static final int NOT_NEEDED = 1; public static final int NOT_POSSIBLE = 2; public static final int WARNING = 3; public static final int ERROR = 4; public static final J2EEStatus OK_STATUS = new J2EEStatus(COMPLETED_OK, ""); //$NON-NLS-1$ private static final J2EEStatus[] EmptyStatusArray = new J2EEStatus[0]; private int severity; private String message; private XMLResource resource; private EObject targetObject; public J2EEStatus() { //Default } public J2EEStatus(int aSeverity, String aMessage) { this(aSeverity, (EObject)null, aMessage); } public J2EEStatus(int aSeverity, XMLResource xmlResource) { this(aSeverity, xmlResource, null); } public J2EEStatus(int aSeverity, EObject anObject) { this(aSeverity, anObject, null); } public J2EEStatus(int aSeverity, XMLResource xmlResource, String aMessage) { severity = aSeverity; resource = xmlResource; message = aMessage; } public J2EEStatus(int aSeverity, EObject anObject, String aMessage) { severity = aSeverity; targetObject = anObject; message = aMessage; } public String format(String aPattern, String arg1) { return MessageFormat.format(aPattern, new Object[]{arg1}); } /** * Returns the message. * @return String */ public String getMessage() { if (message == null) message = createDefaultMessage(); return message; } public String getMessageForDisplay() { return getSeverityText()+" "+getMessage(); //$NON-NLS-1$ } protected String getSeverityText() { switch (severity) { case ERROR: return ERROR_TEXT; case WARNING: return WARNING_TEXT; case NOT_NEEDED: case NOT_POSSIBLE: return INFO_TEXT; default: return ""; //$NON-NLS-1$ } } /** * Method createDefaultMessage. * @return String */ private String createDefaultMessage() { String objDesc; if (getResource() != null) objDesc = getResource().getURI().toString(); else if (getTargetObject() != null && getTargetObject() instanceof ENamedElement) objDesc = ((ENamedElement) getTargetObject()).getName(); else return null; switch (getSeverity()) { case COMPLETED_OK : return format(DEFAULT_COMPLETED_STATUS_MSG, objDesc); case NOT_NEEDED : return format(DEFAULT_NOT_NEEDED_STATUS_MSG, objDesc); case NOT_POSSIBLE : return format(DEFAULT_NOT_POSSIBLE_STATUS_MSG, objDesc); case ERROR : return format(DEFAULT_ERROR_STATUS_MSG, objDesc); } return null; } /** * Sets the message. * @param message The message to set */ public void setMessage(String message) { this.message = message; } /** * The migration was completed fine or was not needed. */ public boolean isOK() { return severity == COMPLETED_OK || severity == NOT_NEEDED; } /** * An error ocurred during migration. */ public boolean isError() { return severity == ERROR; } /** * A warning ocurred during migration. */ public boolean isWarning() { return severity == WARNING; } /** * The migration was not required. */ public boolean isNotNeeded() { return severity == NOT_NEEDED; } /** * The migration was not possible. */ public boolean isNotPossible() { return severity == NOT_POSSIBLE; } /** * Returns the severity. * @return int */ public int getSeverity() { return severity; } /** * Sets the severity. * @param severity The severity to set */ public void setSeverity(int severity) { this.severity = severity; } public J2EEStatus[] getChildren() { return EmptyStatusArray; } public boolean isMultiStatus() { return false; } public XMLResource getResource() { return resource; } public EObject getTargetObject() { return targetObject; } @Override public String toString() { StringBuffer buf = new StringBuffer(); buf.append("MigrationStatus "); //$NON-NLS-1$ if (severity == COMPLETED_OK) { buf.append("Completed OK"); //$NON-NLS-1$ } else if (severity == ERROR) { buf.append("ERROR"); //$NON-NLS-1$ } else if (severity == WARNING) { buf.append("WARNING"); //$NON-NLS-1$ } else if (severity == NOT_NEEDED) { buf.append("Not Needed"); //$NON-NLS-1$ } else if (severity == NOT_POSSIBLE) { buf.append("Not Possible"); //$NON-NLS-1$ } else { buf.append("severity="); //$NON-NLS-1$ buf.append(severity); } buf.append(' '); buf.append(message); return buf.toString(); } /** * Append the paramater to this status, and return the resultant status; * clients must be careful to set their cached status to the return value, * as it may be a new instance. */ public J2EEStatus append(J2EEStatus aStatus) { if (aStatus == null) return this; J2EEMultiStatus multi = new J2EEMultiStatus(); multi.merge(this); multi.merge(aStatus); return multi; } }