blob: 3b9b2bde6fcff291ae5ac3f50c654ee0f794d6d3 [file] [log] [blame]
/*******************************************************************************
* 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 String[]{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;
}
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;
}
}