package ca.deadman.gjtapi.raw.remote.webservices; import javax.telephony.media.*; import ca.deadman.gjtapi.raw.remote.MovableEventIds; import net.sourceforge.gjtapi.media.*; /* Copyright (c) 2003 Richard Deadman, Deadman Consulting (www.deadman.ca) All rights reserved. This software is dual licenced under the GPL and a commercial license. If you wish to use under the GPL, the following license applies, otherwise please contact Deadman Consulting at sales@deadman.ca for commercial licensing. --- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * @author rdeadman * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class MobileResourceException extends Exception { private MobileResourceEvent resEv = null; /** * Constructor for a MobileResourceException containg a MobileResourceEvent. * @param message */ public MobileResourceException(MobileResourceEvent ev) { super(); this.resEv = ev; } /** * Create a MobileResourceException from the JTAPI exception. * @param mrex */ public MobileResourceException(MediaResourceException mrex) { super(); ResourceEvent re = mrex.getResourceEvent(); if (re instanceof PlayerEvent) { PlayerEvent pe = (PlayerEvent)re; this.resEv = new MobileResourceEvent(MovableEventIds.MEDIA_PLAY, pe.getEventID(), pe.getMediaService().getTerminalName(), pe.getError(), pe.getQualifier(), pe.getRTCTrigger()); this.resEv.playerChange = pe.getChangeType().hashCode(); this.resEv.index = pe.getIndex(); this.resEv.offset = pe.getOffset(); } else if (re instanceof RecorderEvent) { RecorderEvent ev = (RecorderEvent)re; this.resEv = new MobileResourceEvent(MovableEventIds.MEDIA_RECORD, ev.getEventID(), ev.getMediaService().getTerminalName(), ev.getError(), ev.getQualifier(), ev.getRTCTrigger()); this.resEv.duration = ev.getDuration(); } else if (re instanceof SignalDetectorEvent) { SignalDetectorEvent ev = (SignalDetectorEvent)re; this.resEv = new MobileResourceEvent(MovableEventIds.MEDIA_DETECT, ev.getEventID(), ev.getMediaService().getTerminalName(), ev.getError(), ev.getQualifier(), ev.getRTCTrigger()); this.resEv.index = ev.getPatternIndex(); Symbol[] sbuf = ev.getSignalBuffer(); int len = sbuf.length; int[] buf = new int[len]; for (int i = 0; i < len; i++) buf[i] = sbuf[i].hashCode(); this.resEv.buffer = buf; } else if (re instanceof SignalGeneratorEvent) { SignalGeneratorEvent ev = (SignalGeneratorEvent)re; this.resEv = new MobileResourceEvent(MovableEventIds.MEDIA_GENERATE, ev.getEventID(), ev.getMediaService().getTerminalName(), ev.getError(), ev.getQualifier(), ev.getRTCTrigger()); } else { // unknown event } } /** * Get the Exception data * @return MobileResourceEvent */ public MobileResourceEvent getResourceEvent() { return this.resEv; } /** * Turn myself into the JTapi MediaResourceException * @return MediaResourceException */ public MediaResourceException morph() { MobileResourceEvent ev = this.getResourceEvent(); ResourceEvent resEv = null; // create the proper sub-event switch (ev.type) { case MovableEventIds.MEDIA_PLAY : resEv = new GenericPlayerEvent(Symbol.getSymbol(ev.id), ev.termName, Symbol.getSymbol(ev.error), Symbol.getSymbol(ev.qualifier), Symbol.getSymbol(ev.rtcTrigger), Symbol.getSymbol(ev.playerChange), ev.index, ev.offset); break; case MovableEventIds.MEDIA_RECORD : resEv = new GenericRecorderEvent(Symbol.getSymbol(ev.id), ev.termName, Symbol.getSymbol(ev.error), Symbol.getSymbol(ev.qualifier), Symbol.getSymbol(ev.rtcTrigger), ev.duration); break; case MovableEventIds.MEDIA_DETECT : int[] evBuf = ev.buffer; int len = evBuf.length; Symbol[] sBuf = new Symbol[len]; for (int i = 0; i < len; i++) sBuf[i] = Symbol.getSymbol(evBuf[i]); resEv = new GenericSignalDetectorEvent(Symbol.getSymbol(ev.id), ev.termName, Symbol.getSymbol(ev.error), Symbol.getSymbol(ev.qualifier), Symbol.getSymbol(ev.rtcTrigger), ev.index, sBuf); break; case MovableEventIds.MEDIA_GENERATE : resEv = new GenericSignalGeneratorEvent(Symbol.getSymbol(ev.id), ev.termName, Symbol.getSymbol(ev.error), Symbol.getSymbol(ev.qualifier), Symbol.getSymbol(ev.rtcTrigger)); break; default : break; } if (resEv == null) return null; else return new MediaResourceException(resEv); } }