| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Eclipse Public License, Version 1.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/org/documents/epl-v10.php |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ide.eclipse.adt.internal.build; |
| |
| /** |
| * Base exception class containing the error code and output of an external tool failed exec. |
| * |
| */ |
| class ExecResultException extends Exception { |
| private static final long serialVersionUID = 1L; |
| |
| private final int mErrorCode; |
| private final String[] mOutput; |
| |
| protected ExecResultException(int errorCode, String[] output) { |
| mErrorCode = errorCode; |
| mOutput = output; |
| } |
| |
| /** |
| * Returns the full output of aapt. |
| */ |
| public String[] getOutput() { |
| return mOutput; |
| } |
| |
| /** |
| * Returns the aapt return code. |
| */ |
| public int getErrorCode() { |
| return mErrorCode; |
| } |
| |
| public String getLabel() { |
| return "Command-line"; |
| } |
| |
| @Override |
| public String toString() { |
| String result = String.format("%1$s Error %2$d", getLabel(), mErrorCode); |
| if (mOutput != null && mOutput.length > 0) { |
| // Note : the "error detail" window in Eclipse seem to ignore the \n, |
| // so we prefix them with a space. It's not optimal but it's slightly readable. |
| result += " \nOutput:"; |
| for (String o : mOutput) { |
| if (o != null) { |
| result += " \n" + o; |
| } |
| } |
| } |
| return result; |
| } |
| |
| @Override |
| public String getMessage() { |
| return toString(); |
| } |
| } |