| /******************************************************************************* |
| * 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(); |
| } |
| } |