001/** 002 * Copyright (c) 2014 Digi International Inc., 003 * All rights not expressly granted are reserved. 004 * 005 * This Source Code Form is subject to the terms of the Mozilla Public 006 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 007 * You can obtain one at http://mozilla.org/MPL/2.0/. 008 * 009 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343 010 * ======================================================================= 011 */ 012package com.digi.xbee.api.exceptions; 013 014import com.digi.xbee.api.models.XBeeTransmitStatus; 015 016/** 017 * This exception will be thrown when receiving a transmit status different than 018 * {@code XBeeTransmitStatus#SUCCESS} after sending an XBee API packet. 019 * 020 * @see CommunicationException 021 * @see com.digi.xbee.api.models.XBeeTransmitStatus 022 */ 023public class TransmitException extends CommunicationException { 024 025 // Constants. 026 private static final long serialVersionUID = 1L; 027 private static final String DEFAULT_MESSAGE = "There was a problem transmiting the XBee API packet."; 028 029 // Variables. 030 private final XBeeTransmitStatus transmitStatus; 031 032 /** 033 * Creates a {@code TransmitException} with the provided 034 * {@code XBeeTransmitStatus} indicating the status of the transmission and 035 * {@value #DEFAULT_MESSAGE} as its error detail message. 036 * 037 * @param transmitStatus The status of the transmission. 038 * 039 * @see com.digi.xbee.api.models.XBeeTransmitStatus 040 */ 041 public TransmitException(XBeeTransmitStatus transmitStatus) { 042 super(DEFAULT_MESSAGE); 043 this.transmitStatus = transmitStatus; 044 } 045 046 /** 047 * Creates a {@code TransmitException} with the specified message and 048 * {@code XBeeTransmitStatus} indicating the status of the transmission. 049 * 050 * @param message The associated message. 051 * @param transmitStatus The status of the transmission. 052 * 053 * @see com.digi.xbee.api.models.XBeeTransmitStatus 054 */ 055 public TransmitException(String message, XBeeTransmitStatus transmitStatus) { 056 super(message); 057 this.transmitStatus = transmitStatus; 058 } 059 060 /** 061 * Creates a {@code TransmitException} with the specified message, cause and 062 * {@code XBeeTransmitStatus} indicating the status of the transmission. 063 * 064 * @param message The associated message. 065 * @param cause The cause of this exception. 066 * @param transmitStatus The status of the transmission. 067 * 068 * @see Throwable 069 * @see com.digi.xbee.api.models.XBeeTransmitStatus 070 */ 071 public TransmitException(String message, Throwable cause, XBeeTransmitStatus transmitStatus) { 072 super(message, cause); 073 this.transmitStatus = transmitStatus; 074 } 075 076 /** 077 * Returns the {@code XBeeTransmitStatus} of the exception containing 078 * information about the transmission. 079 * 080 * @return The status of the transmission. 081 * 082 * @see com.digi.xbee.api.models.XBeeTransmitStatus 083 */ 084 public XBeeTransmitStatus getTransmitStatus() { 085 return transmitStatus; 086 } 087 088 /** 089 * Returns the text containing the status of the transmission from 090 * the exception. 091 * 092 * @return The text with the status of the transmission. 093 */ 094 public String getTransmitStatusMessage() { 095 if (transmitStatus != null) 096 return transmitStatus.getDescription(); 097 return null; 098 } 099 100 /* 101 * (non-Javadoc) 102 * @see java.lang.Throwable#getMessage() 103 */ 104 @Override 105 public String getMessage() { 106 if (transmitStatus != null) 107 return super.getMessage() + " > " + transmitStatus.getDescription(); 108 return super.getMessage(); 109 } 110}