blob: db0d6276376448a608067df95d3f2801da4baa63 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2018 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.dbgp.internal;
import java.util.Map;
import java.util.TreeMap;
import org.eclipse.dltk.dbgp.IDbgpStatus;
public class DbgpStatus implements IDbgpStatus {
// Reasons
public static final Integer REASON_OK = Integer.valueOf(0);
public static final Integer REASON_ERROR = Integer.valueOf(1);
public static final Integer REASON_ABORTED = Integer.valueOf(2);
public static final Integer REASON_EXCEPTION = Integer.valueOf(3);
// Status
public static final Integer STATUS_STARTING = Integer.valueOf(0);
public static final Integer STATUS_STOPPING = Integer.valueOf(1);
public static final Integer STATUS_STOPPED = Integer.valueOf(2);
public static final Integer STATUS_RUNNING = Integer.valueOf(3);
public static final Integer STATUS_BREAK = Integer.valueOf(4);
private static final Map<String, Integer> statusParser = new TreeMap<>(
String.CASE_INSENSITIVE_ORDER);
private static final Map<String, Integer> reasonParser = new TreeMap<>(
String.CASE_INSENSITIVE_ORDER);
static {
statusParser.put("starting", STATUS_STARTING); //$NON-NLS-1$
statusParser.put("stopping", STATUS_STOPPING); //$NON-NLS-1$
statusParser.put("stopped", STATUS_STOPPED); //$NON-NLS-1$
statusParser.put("running", STATUS_RUNNING); //$NON-NLS-1$
statusParser.put("break", STATUS_BREAK); //$NON-NLS-1$
reasonParser.put("ok", REASON_OK); //$NON-NLS-1$
reasonParser.put("error", REASON_ERROR); //$NON-NLS-1$
reasonParser.put("aborted", REASON_ABORTED); //$NON-NLS-1$
reasonParser.put("exception", REASON_EXCEPTION); //$NON-NLS-1$
}
public static IDbgpStatus parse(String status, String reason) {
return new DbgpStatus(statusParser.get(status),
reasonParser.get(reason));
}
private final Integer status;
private final Integer reason;
public DbgpStatus(Integer status, Integer reason) {
if (status == null) {
throw new IllegalArgumentException();
}
if (reason == null) {
throw new IllegalArgumentException();
}
this.status = status;
this.reason = reason;
}
@Override
public boolean reasonAborred() {
return REASON_ABORTED == reason;
}
@Override
public boolean reasonError() {
return REASON_ERROR == reason;
}
@Override
public boolean reasonException() {
return REASON_EXCEPTION == reason;
}
@Override
public boolean reasonOk() {
return REASON_OK == reason;
}
@Override
public boolean isRunning() {
return STATUS_RUNNING == status;
}
@Override
public boolean isStarting() {
return STATUS_STARTING == status;
}
@Override
public boolean isStopped() {
return STATUS_STOPPED == status;
}
@Override
public boolean isStopping() {
return STATUS_STOPPING == status;
}
@Override
public boolean isBreak() {
return STATUS_BREAK == status;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof DbgpStatus) {
DbgpStatus s = (DbgpStatus) obj;
return this.status == s.status && this.reason == s.reason;
}
return false;
}
@Override
public int hashCode() {
return (status.hashCode() << 8) | reason.hashCode();
}
@Override
public String toString() {
return "Status: " + status.toString() + "; Reason: " //$NON-NLS-1$ //$NON-NLS-2$
+ reason.toString();
}
}