/*
* TeleStax, Open Source Cloud Communications
* Copyright 2012, Telestax Inc and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
/**
* Start time:08:17:13 2009-07-17<br>
* Project: mobicents-isup-stack<br>
*
* @author <a href="mailto:baranowb@gmail.com">Bartosz Baranowski </a>
*
*/
package org.mobicents.protocols.ss7.isup.impl.message;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.mobicents.protocols.ss7.isup.ISUPParameterFactory;
import org.mobicents.protocols.ss7.isup.ParameterException;
import org.mobicents.protocols.ss7.isup.impl.message.parameter.AbstractISUPParameter;
import org.mobicents.protocols.ss7.isup.impl.message.parameter.MessageTypeImpl;
import org.mobicents.protocols.ss7.isup.message.InitialAddressMessage;
import org.mobicents.protocols.ss7.isup.message.parameter.ApplicationTransport;
import org.mobicents.protocols.ss7.isup.message.parameter.CCSS;
import org.mobicents.protocols.ss7.isup.message.parameter.CallDiversionTreatmentIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.CallOfferingTreatmentIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.CallReference;
import org.mobicents.protocols.ss7.isup.message.parameter.CalledDirectoryNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.CalledINNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.CalledPartyNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.CallingPartyCategory;
import org.mobicents.protocols.ss7.isup.message.parameter.CallingPartyNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.CircuitAssigmentMap;
import org.mobicents.protocols.ss7.isup.message.parameter.ClosedUserGroupInterlockCode;
import org.mobicents.protocols.ss7.isup.message.parameter.CollectCallRequest;
import org.mobicents.protocols.ss7.isup.message.parameter.ConferenceTreatmentIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.ConnectionRequest;
import org.mobicents.protocols.ss7.isup.message.parameter.CorrelationID;
import org.mobicents.protocols.ss7.isup.message.parameter.EchoControlInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.ForwardCallIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.ForwardGVNS;
import org.mobicents.protocols.ss7.isup.message.parameter.GenericDigits;
import org.mobicents.protocols.ss7.isup.message.parameter.GenericNotificationIndicator;
import org.mobicents.protocols.ss7.isup.message.parameter.GenericNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.GenericReference;
import org.mobicents.protocols.ss7.isup.message.parameter.HopCounter;
import org.mobicents.protocols.ss7.isup.message.parameter.LocationNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.MLPPPrecedence;
import org.mobicents.protocols.ss7.isup.message.parameter.MessageName;
import org.mobicents.protocols.ss7.isup.message.parameter.MessageType;
import org.mobicents.protocols.ss7.isup.message.parameter.NatureOfConnectionIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.NetworkManagementControls;
import org.mobicents.protocols.ss7.isup.message.parameter.NetworkRoutingNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.NetworkSpecificFacility;
import org.mobicents.protocols.ss7.isup.message.parameter.OptionalForwardCallIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.OriginalCalledINNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.OriginalCalledNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.OriginatingISCPointCode;
import org.mobicents.protocols.ss7.isup.message.parameter.ParameterCompatibilityInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.PivotCapability;
import org.mobicents.protocols.ss7.isup.message.parameter.PivotCounter;
import org.mobicents.protocols.ss7.isup.message.parameter.PivotRoutingForwardInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.PropagationDelayCounter;
import org.mobicents.protocols.ss7.isup.message.parameter.QueryOnReleaseCapability;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectCapability;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectCounter;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectForwardInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectStatus;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectingNumber;
import org.mobicents.protocols.ss7.isup.message.parameter.RedirectionInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.RemoteOperations;
import org.mobicents.protocols.ss7.isup.message.parameter.SCFID;
import org.mobicents.protocols.ss7.isup.message.parameter.ServiceActivation;
import org.mobicents.protocols.ss7.isup.message.parameter.TransimissionMediumRequierementPrime;
import org.mobicents.protocols.ss7.isup.message.parameter.TransitNetworkSelection;
import org.mobicents.protocols.ss7.isup.message.parameter.TransmissionMediumRequirement;
import org.mobicents.protocols.ss7.isup.message.parameter.UIDCapabilityIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.UserServiceInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.UserServiceInformationPrime;
import org.mobicents.protocols.ss7.isup.message.parameter.UserTeleserviceInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.UserToUserIndicators;
import org.mobicents.protocols.ss7.isup.message.parameter.UserToUserInformation;
import org.mobicents.protocols.ss7.isup.message.parameter.accessTransport.AccessTransport;
/**
* Start time:08:17:13 2009-07-17<br>
* Project: mobicents-isup-stack<br>
*
* @author <a href="mailto:baranowb@gmail.com">Bartosz Baranowski </a>
*/
public class InitialAddressMessageImpl extends ISUPMessageImpl implements InitialAddressMessage {
public static final MessageType _MESSAGE_TYPE = new MessageTypeImpl(MessageName.InitialAddress);
private static final int _MANDATORY_VAR_COUNT = 1;
// mandatory fixed L
static final int _INDEX_F_MessageType = 0;
static final int _INDEX_F_NatureOfConnectionIndicators = 1;
static final int _INDEX_F_ForwardCallIndicators = 2;
static final int _INDEX_F_CallingPartyCategory = 3;
static final int _INDEX_F_TransmissionMediumRequirement = 4;
// mandatory variable L
static final int _INDEX_V_CalledPartyNumber = 0;
// optional
static final int _INDEX_O_TransitNetworkSelection = 0;
static final int _INDEX_O_CallReference = 1;
static final int _INDEX_O_CallingPartyNumber = 2;
static final int _INDEX_O_OptionalForwardCallIndicators = 3;
static final int _INDEX_O_RedirectingNumber = 4;
static final int _INDEX_O_RedirectionInformation = 5;
static final int _INDEX_O_ClosedUserGroupInterlockCode = 6;
static final int _INDEX_O_ConnectionRequest = 7;
static final int _INDEX_O_OriginalCalledNumber = 8;
static final int _INDEX_O_UserToUserInformation = 9;
static final int _INDEX_O_AccessTransport = 10;
static final int _INDEX_O_UserServiceInformation = 11;
static final int _INDEX_O_User2UIndicators = 12;
static final int _INDEX_O_GenericNumber = 13;
static final int _INDEX_O_PropagationDelayCounter = 14;
static final int _INDEX_O_UserServiceInformationPrime = 15;
static final int _INDEX_O_NetworkSPecificFacility = 16;
static final int _INDEX_O_GenericDigits = 17;
static final int _INDEX_O_OriginatingISCPointCode = 18;
static final int _INDEX_O_UserTeleserviceInformation = 19;
static final int _INDEX_O_RemoteOperations = 20;
static final int _INDEX_O_ParameterCompatibilityInformation = 21;
static final int _INDEX_O_GenericNotificationIndicator = 22;
static final int _INDEX_O_ServiceActivation = 23;
static final int _INDEX_O_GenericReference = 24;
static final int _INDEX_O_MLPPPrecedence = 25;
static final int _INDEX_O_TransimissionMediumRequierementPrime = 26;
static final int _INDEX_O_LocationNumber = 27;
static final int _INDEX_O_ForwardGVNS = 28;
static final int _INDEX_O_CCSS = 29;
static final int _INDEX_O_NetworkManagementControls = 30;
static final int _INDEX_O_CircuitAssigmentMap = 31;
static final int _INDEX_O_CorrelationID = 32;
static final int _INDEX_O_CallDiversionTreatmentIndicators = 33;
static final int _INDEX_O_CalledINNumber = 34;
static final int _INDEX_O_CallOfferingTreatmentIndicators = 35;
static final int _INDEX_O_ConferenceTreatmentIndicators = 36;
static final int _INDEX_O_SCFID = 37;
static final int _INDEX_O_UIDCapabilityIndicators = 38;
static final int _INDEX_O_EchoControlInformation = 39;
static final int _INDEX_O_HopCounter = 40;
static final int _INDEX_O_CollectCallRequest = 41;
static final int _INDEX_O_ApplicationTransport = 42;
static final int _INDEX_O_PivotCapability = 43;
static final int _INDEX_O_CalledDirectoryNumber = 44;
static final int _INDEX_O_OriginalCalledINNumber = 45;
static final int _INDEX_O_NetworkRoutingNumber = 46;
static final int _INDEX_O_QueryOnReleaseCapability = 47;
static final int _INDEX_O_PivotCounter = 48;
static final int _INDEX_O_PivotRoutingForwardInformation = 49;
static final int _INDEX_O_RedirectCapability = 50;
static final int _INDEX_O_RedirectCounter = 51;
static final int _INDEX_O_RedirectStatus = 52;
static final int _INDEX_O_RedirectForwardInformation = 53;
static final int _INDEX_O_EndOfOptionalParameters = 54;
protected static final List<Integer> mandatoryParam;
static {
List<Integer> tmp = new ArrayList<Integer>();
tmp.add(_INDEX_F_MessageType);
tmp.add(_INDEX_F_NatureOfConnectionIndicators);
tmp.add(_INDEX_F_ForwardCallIndicators);
tmp.add(_INDEX_F_CallingPartyCategory);
tmp.add(_INDEX_F_TransmissionMediumRequirement);
mandatoryParam = Collections.unmodifiableList(tmp);
}
InitialAddressMessageImpl(Set<Integer> mandatoryCodes, Set<Integer> mandatoryVariableCodes, Set<Integer> optionalCodes,
Map<Integer, Integer> mandatoryCode2Index, Map<Integer, Integer> mandatoryVariableCode2Index,
Map<Integer, Integer> optionalCode2Index) {
super(mandatoryCodes, mandatoryVariableCodes, optionalCodes, mandatoryCode2Index, mandatoryVariableCode2Index,
optionalCode2Index);
super.f_Parameters.put(_INDEX_F_MessageType, this.getMessageType());
super.o_Parameters.put(_INDEX_O_EndOfOptionalParameters, _END_OF_OPTIONAL_PARAMETERS);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.isup.messages.ISUPMessage#decodeMandatoryParameters(byte[], int)
*/
protected int decodeMandatoryParameters(ISUPParameterFactory parameterFactory, byte[] b, int index)
throws ParameterException {
int localIndex = index;
index += super.decodeMandatoryParameters(parameterFactory, b, index);
if (b.length - index > 5) {
try {
byte[] natureOfConnectionIndicators = new byte[1];
natureOfConnectionIndicators[0] = b[index++];
NatureOfConnectionIndicators _nai = parameterFactory.createNatureOfConnectionIndicators();
((AbstractISUPParameter) _nai).decode(natureOfConnectionIndicators);
this.setNatureOfConnectionIndicators(_nai);
} catch (Exception e) {
// AIOOBE or IllegalArg
throw new ParameterException("Failed to parse NatureOfConnectionIndicators due to: ", e);
}
try {
byte[] body = new byte[2];
body[0] = b[index++];
body[1] = b[index++];
ForwardCallIndicators v = parameterFactory.createForwardCallIndicators();
((AbstractISUPParameter) v).decode(body);
this.setForwardCallIndicators(v);
} catch (Exception e) {
// AIOOBE or IllegalArg
throw new ParameterException("Failed to parse ForwardCallIndicators due to: ", e);
}
try {
byte[] body = new byte[1];
body[0] = b[index++];
CallingPartyCategory v = parameterFactory.createCallingPartyCategory();
((AbstractISUPParameter) v).decode(body);
this.setCallingPartCategory(v);
} catch (Exception e) {
// AIOOBE or IllegalArg
throw new ParameterException("Failed to parse CallingPartyCategory due to: ", e);
}
try {
byte[] body = new byte[1];
body[0] = b[index++];
TransmissionMediumRequirement v = parameterFactory.createTransmissionMediumRequirement();
((AbstractISUPParameter) v).decode(body);
this.setTransmissionMediumRequirement(v);
} catch (Exception e) {
// AIOOBE or IllegalArg
throw new ParameterException("Failed to parse TransmissionMediumRequirement due to: ", e);
}
return index - localIndex;
} else {
throw new ParameterException("byte[] must have atleast eight octets");
}
}
/**
* @param parameterBody
* @param parameterCode
* @throws ParameterException
*/
protected void decodeMandatoryVariableBody(ISUPParameterFactory parameterFactory, byte[] parameterBody, int parameterIndex)
throws ParameterException {
switch (parameterIndex) {
case _INDEX_V_CalledPartyNumber:
CalledPartyNumber cpn = parameterFactory.createCalledPartyNumber();
((AbstractISUPParameter) cpn).decode(parameterBody);
this.setCalledPartyNumber(cpn);
break;
default:
throw new ParameterException("Unrecognized parameter index for mandatory variable part: " + parameterIndex);
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.isup.messages.ISUPMessage#decodeOptionalBody(byte[], byte)
*/
protected void decodeOptionalBody(ISUPParameterFactory parameterFactory, byte[] parameterBody, byte parameterCode)
throws ParameterException {
// TODO Auto-generated method stub
switch (parameterCode & 0xFF) {
case TransitNetworkSelection._PARAMETER_CODE:
TransitNetworkSelection v = parameterFactory.createTransitNetworkSelection();
((AbstractISUPParameter) v).decode(parameterBody);
setTransitNetworkSelection(v);
break;
case CallReference._PARAMETER_CODE:
CallReference cr = parameterFactory.createCallReference();
((AbstractISUPParameter) cr).decode(parameterBody);
this.setCallReference(cr);
break;
case CallingPartyNumber._PARAMETER_CODE:
CallingPartyNumber cpn = parameterFactory.createCallingPartyNumber();
((AbstractISUPParameter) cpn).decode(parameterBody);
this.setCallingPartyNumber(cpn);
break;
case OptionalForwardCallIndicators._PARAMETER_CODE:
OptionalForwardCallIndicators ofci = parameterFactory.createOptionalForwardCallIndicators();
((AbstractISUPParameter) ofci).decode(parameterBody);
this.setOptForwardCallIndicators(ofci);
break;
case RedirectingNumber._PARAMETER_CODE:
RedirectingNumber rn = parameterFactory.createRedirectingNumber();
((AbstractISUPParameter) rn).decode(parameterBody);
this.setRedirectingNumber(rn);
break;
case RedirectionInformation._PARAMETER_CODE:
RedirectionInformation ri = parameterFactory.createRedirectionInformation();
((AbstractISUPParameter) ri).decode(parameterBody);
this.setRedirectionInformation(ri);
break;
case ClosedUserGroupInterlockCode._PARAMETER_CODE:
ClosedUserGroupInterlockCode cugic = parameterFactory.createClosedUserGroupInterlockCode();
((AbstractISUPParameter) cugic).decode(parameterBody);
this.setCUserGroupInterlockCode(cugic);
break;
case ConnectionRequest._PARAMETER_CODE:
ConnectionRequest cr2 = parameterFactory.createConnectionRequest();
((AbstractISUPParameter) cr2).decode(parameterBody);
this.setConnectionRequest(cr2);
break;
case OriginalCalledNumber._PARAMETER_CODE:
OriginalCalledNumber orn = parameterFactory.createOriginalCalledNumber();
((AbstractISUPParameter) orn).decode(parameterBody);
this.setOriginalCalledNumber(orn);
break;
case UserToUserInformation._PARAMETER_CODE:
UserToUserInformation u2ui = parameterFactory.createUserToUserInformation();
((AbstractISUPParameter) u2ui).decode(parameterBody);
this.setU2UInformation(u2ui);
break;
case AccessTransport._PARAMETER_CODE:
AccessTransport at = parameterFactory.createAccessTransport();
((AbstractISUPParameter) at).decode(parameterBody);
this.setAccessTransport(at);
break;
case UserServiceInformation._PARAMETER_CODE:
UserServiceInformation usi = parameterFactory.createUserServiceInformation();
((AbstractISUPParameter) usi).decode(parameterBody);
this.setUserServiceInformation(usi);
break;
case UserToUserIndicators._PARAMETER_CODE:
UserToUserIndicators utui = parameterFactory.createUserToUserIndicators();
((AbstractISUPParameter) utui).decode(parameterBody);
this.setU2UIndicators(utui);
break;
case GenericNumber._PARAMETER_CODE:
GenericNumber gn = parameterFactory.createGenericNumber();
((AbstractISUPParameter) gn).decode(parameterBody);
this.setGenericNumber(gn);
break;
case PropagationDelayCounter._PARAMETER_CODE:
PropagationDelayCounter pdc = parameterFactory.createPropagationDelayCounter();
((AbstractISUPParameter) pdc).decode(parameterBody);
this.setPropagationDelayCounter(pdc);
break;
case UserServiceInformationPrime._PARAMETER_CODE:
UserServiceInformationPrime usip = parameterFactory.createUserServiceInformationPrime();
((AbstractISUPParameter) usip).decode(parameterBody);
this.setUserServiceInformationPrime(usip);
break;
case NetworkSpecificFacility._PARAMETER_CODE:
NetworkSpecificFacility nsf = parameterFactory.createNetworkSpecificFacility();
((AbstractISUPParameter) nsf).decode(parameterBody);
this.setNetworkSpecificFacility(nsf);
break;
case GenericDigits._PARAMETER_CODE:
GenericDigits gd = parameterFactory.createGenericDigits();
((AbstractISUPParameter) gd).decode(parameterBody);
this.setGenericDigits(gd);
break;
case OriginatingISCPointCode._PARAMETER_CODE:
OriginatingISCPointCode vv = parameterFactory.createOriginatingISCPointCode();
((AbstractISUPParameter) vv).decode(parameterBody);
this.setOriginatingISCPointCode(vv);
break;
case UserTeleserviceInformation._PARAMETER_CODE:
UserTeleserviceInformation uti = parameterFactory.createUserTeleserviceInformation();
((AbstractISUPParameter) uti).decode(parameterBody);
this.setUserTeleserviceInformation(uti);
break;
case RemoteOperations._PARAMETER_CODE:
RemoteOperations ro = parameterFactory.createRemoteOperations();
((AbstractISUPParameter) ro).decode(parameterBody);
this.setRemoteOperations(ro);
break;
case ParameterCompatibilityInformation._PARAMETER_CODE:
ParameterCompatibilityInformation pci = parameterFactory.createParameterCompatibilityInformation();
((AbstractISUPParameter) pci).decode(parameterBody);
this.setParameterCompatibilityInformation(pci);
break;
case GenericNotificationIndicator._PARAMETER_CODE:
GenericNotificationIndicator gni = parameterFactory.createGenericNotificationIndicator();
((AbstractISUPParameter) gni).decode(parameterBody);
this.setGenericNotificationIndicator(gni);
break;
case ServiceActivation._PARAMETER_CODE:
ServiceActivation sa = parameterFactory.createServiceActivation();
((AbstractISUPParameter) sa).decode(parameterBody);
this.setServiceActivation(sa);
break;
case GenericReference._PARAMETER_CODE:
GenericReference gr = parameterFactory.createGenericReference();
((AbstractISUPParameter) gr).decode(parameterBody);
this.setGenericReference(gr);
break;
case MLPPPrecedence._PARAMETER_CODE:
MLPPPrecedence mlpp = parameterFactory.createMLPPPrecedence();
((AbstractISUPParameter) mlpp).decode(parameterBody);
this.setMLPPPrecedence(mlpp);
break;
case TransmissionMediumRequirement._PARAMETER_CODE:
TransmissionMediumRequirement tmr = parameterFactory.createTransmissionMediumRequirement();
((AbstractISUPParameter) tmr).decode(parameterBody);
this.setTransmissionMediumRequirement(tmr);
break;
case LocationNumber._PARAMETER_CODE:
LocationNumber ln = parameterFactory.createLocationNumber();
((AbstractISUPParameter) ln).decode(parameterBody);
this.setLocationNumber(ln);
break;
case ForwardGVNS._PARAMETER_CODE:
ForwardGVNS fgvns = parameterFactory.createForwardGVNS();
((AbstractISUPParameter) fgvns).decode(parameterBody);
this.setForwardGVNS(fgvns);
break;
case CCSS._PARAMETER_CODE:
CCSS ccss = parameterFactory.createCCSS();
((AbstractISUPParameter) ccss).decode(parameterBody);
this.setCCSS(ccss);
break;
case NetworkManagementControls._PARAMETER_CODE:
NetworkManagementControls nmc = parameterFactory.createNetworkManagementControls();
((AbstractISUPParameter) nmc).decode(parameterBody);
this.setNetworkManagementControls(nmc);
break;
case CircuitAssigmentMap._PARAMETER_CODE:
CircuitAssigmentMap cam = parameterFactory.createCircuitAssigmentMap();
((AbstractISUPParameter) cam).decode(parameterBody);
this.setCircuitAssigmentMap(cam);
break;
case CorrelationID._PARAMETER_CODE:
CorrelationID cid = parameterFactory.createCorrelationID();
((AbstractISUPParameter) cid).decode(parameterBody);
this.setCorrelationID(cid);
break;
case CallDiversionTreatmentIndicators._PARAMETER_CODE:
CallDiversionTreatmentIndicators cdti = parameterFactory.createCallDiversionTreatmentIndicators();
((AbstractISUPParameter) cdti).decode(parameterBody);
this.setCallDiversionTreatmentIndicators(cdti);
break;
case CalledINNumber._PARAMETER_CODE:
CalledINNumber cin = parameterFactory.createCalledINNumber();
((AbstractISUPParameter) cin).decode(parameterBody);
this.setCalledINNumber(cin);
break;
case CallOfferingTreatmentIndicators._PARAMETER_CODE:
CallOfferingTreatmentIndicators coti = parameterFactory.createCallOfferingTreatmentIndicators();
((AbstractISUPParameter) coti).decode(parameterBody);
this.setCallOfferingTreatmentIndicators(coti);
break;
case ConferenceTreatmentIndicators._PARAMETER_CODE:
ConferenceTreatmentIndicators cti = parameterFactory.createConferenceTreatmentIndicators();
((AbstractISUPParameter) cti).decode(parameterBody);
this.setConferenceTreatmentIndicators(cti);
break;
case SCFID._PARAMETER_CODE:
SCFID scfid = parameterFactory.createSCFID();
((AbstractISUPParameter) scfid).decode(parameterBody);
this.setSCFID(scfid);
break;
case UIDCapabilityIndicators._PARAMETER_CODE:
UIDCapabilityIndicators uci = parameterFactory.createUIDCapabilityIndicators();
((AbstractISUPParameter) uci).decode(parameterBody);
this.setUIDCapabilityIndicators(uci);
break;
case EchoControlInformation._PARAMETER_CODE:
EchoControlInformation eci = parameterFactory.createEchoControlInformation();
((AbstractISUPParameter) eci).decode(parameterBody);
this.setEchoControlInformation(eci);
break;
case HopCounter._PARAMETER_CODE:
HopCounter hc = parameterFactory.createHopCounter();
((AbstractISUPParameter) hc).decode(parameterBody);
this.setHopCounter(hc);
break;
case CollectCallRequest._PARAMETER_CODE:
CollectCallRequest ccr = parameterFactory.createCollectCallRequest();
((AbstractISUPParameter) ccr).decode(parameterBody);
this.setCollectCallRequest(ccr);
break;
case ApplicationTransport._PARAMETER_CODE:
ApplicationTransport atr = parameterFactory.createApplicationTransport();
((AbstractISUPParameter) atr).decode(parameterBody);
this.setApplicationTransport(atr);
break;
case PivotCapability._PARAMETER_CODE:
PivotCapability pc = parameterFactory.createPivotCapability();
((AbstractISUPParameter) pc).decode(parameterBody);
this.setPivotCapability(pc);
break;
case CalledDirectoryNumber._PARAMETER_CODE:
CalledDirectoryNumber cdn = parameterFactory.createCalledDirectoryNumber();
((AbstractISUPParameter) cdn).decode(parameterBody);
this.setCalledDirectoryNumber(cdn);
break;
case OriginalCalledINNumber._PARAMETER_CODE:
OriginalCalledINNumber ocin = parameterFactory.createOriginalCalledINNumber();
((AbstractISUPParameter) ocin).decode(parameterBody);
this.setOriginalCalledINNumber(ocin);
break;
case NetworkRoutingNumber._PARAMETER_CODE:
NetworkRoutingNumber nrn = parameterFactory.createNetworkRoutingNumber();
((AbstractISUPParameter) nrn).decode(parameterBody);
this.setNetworkRoutingNumber(nrn);
break;
case QueryOnReleaseCapability._PARAMETER_CODE:
QueryOnReleaseCapability qorc = parameterFactory.createQueryOnReleaseCapability();
((AbstractISUPParameter) qorc).decode(parameterBody);
this.setQueryOnReleaseCapability(qorc);
break;
case PivotCounter._PARAMETER_CODE:
PivotCounter pcntr = parameterFactory.createPivotCounter();
((AbstractISUPParameter) pcntr).decode(parameterBody);
this.setPivotCounter(pcntr);
break;
case PivotRoutingForwardInformation._PARAMETER_CODE:
PivotRoutingForwardInformation prfi = parameterFactory.createPivotRoutingForwardInformation();
((AbstractISUPParameter) prfi).decode(parameterBody);
this.setPivotRoutingForwardInformation(prfi);
break;
case RedirectCapability._PARAMETER_CODE:
RedirectCapability rc = parameterFactory.createRedirectCapability();
((AbstractISUPParameter) rc).decode(parameterBody);
this.setRedirectCapability(rc);
break;
case RedirectCounter._PARAMETER_CODE:
RedirectCounter rcntr = parameterFactory.createRedirectCounter();
((AbstractISUPParameter) rcntr).decode(parameterBody);
this.setRedirectCounter(rcntr);
break;
case RedirectStatus._PARAMETER_CODE:
RedirectStatus rs = parameterFactory.createRedirectStatus();
((AbstractISUPParameter) rs).decode(parameterBody);
this.setRedirectStatus(rs);
break;
case RedirectForwardInformation._PARAMETER_CODE:
RedirectForwardInformation rfi = parameterFactory.createRedirectForwardInformation();
((AbstractISUPParameter) rfi).decode(parameterBody);
this.setRedirectForwardInformation(rfi);
break;
default:
throw new ParameterException("Unrecognized parameter code for optional part: " + parameterCode);
}
}
/*
* (non-Javadoc)
*
* @seeorg.mobicents.isup.messages.ISUPMessage# getNumberOfMandatoryVariableLengthParameters()
*/
protected int getNumberOfMandatoryVariableLengthParameters() {
return _MANDATORY_VAR_COUNT;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.isup.messages.ISUPMessage#getMessageType()
*/
public MessageType getMessageType() {
return this._MESSAGE_TYPE;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.isup.messages.ISUPMessage#hasAllMandatoryParameters()
*/
public boolean hasAllMandatoryParameters() {
if (!super.f_Parameters.keySet().containsAll(mandatoryParam) || super.f_Parameters.values().contains(null)) {
return false;
}
if (!super.v_Parameters.containsKey(_INDEX_V_CalledPartyNumber)
|| super.v_Parameters.get(_INDEX_V_CalledPartyNumber) == null) {
return false;
}
return true;
}
public NatureOfConnectionIndicators getNatureOfConnectionIndicators() {
return (NatureOfConnectionIndicators) super.f_Parameters.get(_INDEX_F_NatureOfConnectionIndicators);
}
public void setNatureOfConnectionIndicators(NatureOfConnectionIndicators v) {
super.f_Parameters.put(_INDEX_F_NatureOfConnectionIndicators, v);
}
public ForwardCallIndicators getForwardCallIndicators() {
return (ForwardCallIndicators) super.f_Parameters.get(_INDEX_F_ForwardCallIndicators);
}
public void setForwardCallIndicators(ForwardCallIndicators v) {
super.f_Parameters.put(_INDEX_F_ForwardCallIndicators, v);
}
public CallingPartyCategory getCallingPartCategory() {
return (CallingPartyCategory) super.f_Parameters.get(_INDEX_F_CallingPartyCategory);
}
public void setCallingPartCategory(CallingPartyCategory v) {
super.f_Parameters.put(_INDEX_F_CallingPartyCategory, v);
}
public TransmissionMediumRequirement getTransmissionMediumRequirement() {
return (TransmissionMediumRequirement) super.f_Parameters.get(_INDEX_F_TransmissionMediumRequirement);
}
public void setTransmissionMediumRequirement(TransmissionMediumRequirement v) {
super.f_Parameters.put(_INDEX_F_TransmissionMediumRequirement, v);
}
public CalledPartyNumber getCalledPartyNumber() {
return (CalledPartyNumber) super.v_Parameters.get(_INDEX_V_CalledPartyNumber);
}
public void setCalledPartyNumber(CalledPartyNumber v) {
super.v_Parameters.put(_INDEX_V_CalledPartyNumber, v);
}
public TransitNetworkSelection getTransitNetworkSelection() {
return (TransitNetworkSelection) super.o_Parameters.get(_INDEX_O_TransitNetworkSelection);
}
public void setTransitNetworkSelection(TransitNetworkSelection v) {
super.o_Parameters.put(_INDEX_O_TransitNetworkSelection, v);
}
public CallReference getCallReference() {
return (CallReference) super.o_Parameters.get(_INDEX_O_CallReference);
}
public void setCallReference(CallReference v) {
super.o_Parameters.put(_INDEX_O_CallReference, v);
}
public CallingPartyNumber getCallingPartyNumber() {
return (CallingPartyNumber) super.o_Parameters.get(_INDEX_O_CallingPartyNumber);
}
public void setCallingPartyNumber(CallingPartyNumber v) {
super.o_Parameters.put(_INDEX_O_CallingPartyNumber, v);
}
public OptionalForwardCallIndicators getOptForwardCallIndicators() {
return (OptionalForwardCallIndicators) super.o_Parameters.get(_INDEX_O_OptionalForwardCallIndicators);
}
public void setOptForwardCallIndicators(OptionalForwardCallIndicators v) {
super.o_Parameters.put(_INDEX_O_OptionalForwardCallIndicators, v);
}
public RedirectingNumber getRedirectingNumber() {
return (RedirectingNumber) super.o_Parameters.get(_INDEX_O_RedirectingNumber);
}
public void setRedirectingNumber(RedirectingNumber v) {
super.o_Parameters.put(_INDEX_O_RedirectingNumber, v);
}
public RedirectionInformation getRedirectionInformation() {
return (RedirectionInformation) super.o_Parameters.get(_INDEX_O_RedirectionInformation);
}
public void setRedirectionInformation(RedirectionInformation v) {
super.o_Parameters.put(_INDEX_O_RedirectionInformation, v);
}
public ClosedUserGroupInterlockCode getCUserGroupInterlockCode() {
return (ClosedUserGroupInterlockCode) super.o_Parameters.get(_INDEX_O_ClosedUserGroupInterlockCode);
}
public void setCUserGroupInterlockCode(ClosedUserGroupInterlockCode v) {
super.o_Parameters.put(_INDEX_O_ClosedUserGroupInterlockCode, v);
}
public ConnectionRequest getConnectionRequest() {
return (ConnectionRequest) super.o_Parameters.get(_INDEX_O_ConnectionRequest);
}
public void setConnectionRequest(ConnectionRequest v) {
super.o_Parameters.put(_INDEX_O_ConnectionRequest, v);
}
public OriginalCalledNumber getOriginalCalledNumber() {
return (OriginalCalledNumber) super.o_Parameters.get(_INDEX_O_OriginalCalledNumber);
}
public void setOriginalCalledNumber(OriginalCalledNumber v) {
super.o_Parameters.put(_INDEX_O_OriginalCalledNumber, v);
}
public UserToUserInformation getU2UInformation() {
return (UserToUserInformation) super.o_Parameters.get(_INDEX_O_UserToUserInformation);
}
public void setU2UInformation(UserToUserInformation v) {
super.o_Parameters.put(_INDEX_O_UserToUserInformation, v);
}
public UserServiceInformation getUserServiceInformation() {
return (UserServiceInformation) super.o_Parameters.get(_INDEX_O_UserServiceInformation);
}
public void setUserServiceInformation(UserServiceInformation v) {
super.o_Parameters.put(_INDEX_O_UserServiceInformation, v);
}
public NetworkSpecificFacility getNetworkSpecificFacility() {
return (NetworkSpecificFacility) super.o_Parameters.get(_INDEX_O_NetworkSPecificFacility);
}
public void setNetworkSpecificFacility(NetworkSpecificFacility v) {
super.o_Parameters.put(_INDEX_O_NetworkSPecificFacility, v);
}
public GenericDigits getGenericDigits() {
return (GenericDigits) super.o_Parameters.get(_INDEX_O_GenericDigits);
}
public void setGenericDigits(GenericDigits v) {
super.o_Parameters.put(_INDEX_O_GenericDigits, v);
}
public OriginatingISCPointCode getOriginatingISCPointCode() {
return (OriginatingISCPointCode) super.o_Parameters.get(_INDEX_O_OriginatingISCPointCode);
}
public void setOriginatingISCPointCode(OriginatingISCPointCode v) {
super.o_Parameters.put(_INDEX_O_OriginatingISCPointCode, v);
}
public UserTeleserviceInformation getUserTeleserviceInformation() {
return (UserTeleserviceInformation) super.o_Parameters.get(_INDEX_O_UserTeleserviceInformation);
}
public void setUserTeleserviceInformation(UserTeleserviceInformation v) {
super.o_Parameters.put(_INDEX_O_UserTeleserviceInformation, v);
}
public RemoteOperations getRemoteOperations() {
return (RemoteOperations) super.o_Parameters.get(_INDEX_O_RemoteOperations);
}
public void setRemoteOperations(RemoteOperations v) {
super.o_Parameters.put(_INDEX_O_RemoteOperations, v);
}
public ParameterCompatibilityInformation getParameterCompatibilityInformation() {
return (ParameterCompatibilityInformation) super.o_Parameters.get(_INDEX_O_ParameterCompatibilityInformation);
}
public void setParameterCompatibilityInformation(ParameterCompatibilityInformation v) {
super.o_Parameters.put(_INDEX_O_ParameterCompatibilityInformation, v);
}
public GenericNotificationIndicator getGenericNotificationIndicator() {
return (GenericNotificationIndicator) super.o_Parameters.get(_INDEX_O_GenericNotificationIndicator);
}
public void setGenericNotificationIndicator(GenericNotificationIndicator v) {
super.o_Parameters.put(_INDEX_O_GenericNotificationIndicator, v);
}
public ServiceActivation getServiceActivation() {
return (ServiceActivation) super.o_Parameters.get(_INDEX_O_ServiceActivation);
}
public void setServiceActivation(ServiceActivation v) {
super.o_Parameters.put(_INDEX_O_ServiceActivation, v);
}
public GenericReference getGenericReference() {
return (GenericReference) super.o_Parameters.get(_INDEX_O_GenericReference);
}
public void setGenericReference(GenericReference v) {
super.o_Parameters.put(_INDEX_O_GenericReference, v);
}
public MLPPPrecedence getMLPPPrecedence() {
return (MLPPPrecedence) super.o_Parameters.get(_INDEX_O_MLPPPrecedence);
}
public void setMLPPPrecedence(MLPPPrecedence v) {
super.o_Parameters.put(_INDEX_O_MLPPPrecedence, v);
}
public TransimissionMediumRequierementPrime getTransimissionMediumReqPrime() {
return (TransimissionMediumRequierementPrime) super.o_Parameters.get(_INDEX_O_TransimissionMediumRequierementPrime);
}
public void setTransimissionMediumReqPrime(TransimissionMediumRequierementPrime v) {
super.o_Parameters.put(_INDEX_O_TransimissionMediumRequierementPrime, v);
}
public LocationNumber getLocationNumber() {
return (LocationNumber) super.o_Parameters.get(_INDEX_O_LocationNumber);
}
public void setLocationNumber(LocationNumber v) {
super.o_Parameters.put(_INDEX_O_LocationNumber, v);
}
public ForwardGVNS getForwardGVNS() {
return (ForwardGVNS) super.o_Parameters.get(_INDEX_O_ForwardGVNS);
}
public void setForwardGVNS(ForwardGVNS v) {
super.o_Parameters.put(_INDEX_O_ForwardGVNS, v);
}
public CCSS getCCSS() {
return (CCSS) super.o_Parameters.get(_INDEX_O_CCSS);
}
public void setCCSS(CCSS v) {
super.o_Parameters.put(_INDEX_O_CCSS, v);
}
public NetworkManagementControls getNetworkManagementControls() {
return (NetworkManagementControls) super.o_Parameters.get(_INDEX_O_NetworkManagementControls);
}
public void setNetworkManagementControls(NetworkManagementControls v) {
super.o_Parameters.put(_INDEX_O_NetworkManagementControls, v);
}
/**
* @param usip
*/
public void setUserServiceInformationPrime(UserServiceInformationPrime v) {
super.o_Parameters.put(_INDEX_O_UserServiceInformationPrime, v);
}
public UserServiceInformationPrime getUserServiceInformationPrime() {
return (UserServiceInformationPrime) super.o_Parameters.get(_INDEX_O_UserServiceInformationPrime);
}
/**
* @param pdc
*/
public void setPropagationDelayCounter(PropagationDelayCounter v) {
super.o_Parameters.put(_INDEX_O_PropagationDelayCounter, v);
}
public PropagationDelayCounter getPropagationDelayCounter() {
return (PropagationDelayCounter) super.o_Parameters.get(_INDEX_O_PropagationDelayCounter);
}
/**
* @param gn
*/
public void setGenericNumber(GenericNumber v) {
super.o_Parameters.put(_INDEX_O_GenericNumber, v);
}
public GenericNumber getGenericNumber() {
return (GenericNumber) super.o_Parameters.get(_INDEX_O_GenericNumber);
}
/**
* @param utui
*/
public void setU2UIndicators(UserToUserIndicators v) {
super.o_Parameters.put(_INDEX_O_User2UIndicators, v);
}
public UserToUserIndicators getU2UIndicators() {
return (UserToUserIndicators) super.o_Parameters.get(_INDEX_O_User2UIndicators);
}
/**
* @param at
*/
public void setAccessTransport(AccessTransport v) {
super.o_Parameters.put(_INDEX_O_AccessTransport, v);
}
public AccessTransport getAccessTransport() {
return (AccessTransport) super.o_Parameters.get(_INDEX_O_AccessTransport);
}
@Override
public void setCircuitAssigmentMap(CircuitAssigmentMap v) {
super.o_Parameters.put(_INDEX_O_CircuitAssigmentMap, v);
}
@Override
public CircuitAssigmentMap getCircuitAssigmentMap() {
return (CircuitAssigmentMap) super.o_Parameters.get(_INDEX_O_CircuitAssigmentMap);
}
@Override
public void setCorrelationID(CorrelationID v) {
super.o_Parameters.put(_INDEX_O_CorrelationID, v);
}
@Override
public CorrelationID getCorrelationID() {
return (CorrelationID) super.o_Parameters.get(_INDEX_O_CorrelationID);
}
@Override
public void setCallDiversionTreatmentIndicators(CallDiversionTreatmentIndicators v) {
super.o_Parameters.put(_INDEX_O_CallDiversionTreatmentIndicators, v);
}
@Override
public CallDiversionTreatmentIndicators getCallDiversionTreatmentIndicators() {
return (CallDiversionTreatmentIndicators) super.o_Parameters.get(_INDEX_O_CallDiversionTreatmentIndicators);
}
@Override
public void setCalledINNumber(CalledINNumber v) {
super.o_Parameters.put(_INDEX_O_CalledINNumber, v);
}
@Override
public CalledINNumber getCalledINNumber() {
return (CalledINNumber) super.o_Parameters.get(_INDEX_O_CalledINNumber);
}
@Override
public void setCallOfferingTreatmentIndicators(CallOfferingTreatmentIndicators v) {
super.o_Parameters.put(_INDEX_O_CallOfferingTreatmentIndicators, v);
}
@Override
public CallOfferingTreatmentIndicators getCallOfferingTreatmentIndicators() {
return (CallOfferingTreatmentIndicators) super.o_Parameters.get(_INDEX_O_CallOfferingTreatmentIndicators);
}
@Override
public void setConferenceTreatmentIndicators(ConferenceTreatmentIndicators v) {
super.o_Parameters.put(_INDEX_O_ConferenceTreatmentIndicators, v);
}
@Override
public ConferenceTreatmentIndicators getConferenceTreatmentIndicators() {
return (ConferenceTreatmentIndicators) super.o_Parameters.get(_INDEX_O_ConferenceTreatmentIndicators);
}
@Override
public void setSCFID(SCFID v) {
super.o_Parameters.put(_INDEX_O_SCFID, v);
}
@Override
public SCFID getSCFID() {
return (SCFID) super.o_Parameters.get(_INDEX_O_SCFID);
}
@Override
public void setUIDCapabilityIndicators(UIDCapabilityIndicators v) {
super.o_Parameters.put(_INDEX_O_UIDCapabilityIndicators, v);
}
@Override
public UIDCapabilityIndicators getUIDCapabilityIndicators() {
return (UIDCapabilityIndicators) super.o_Parameters.get(_INDEX_O_UIDCapabilityIndicators);
}
@Override
public void setEchoControlInformation(EchoControlInformation v) {
super.o_Parameters.put(_INDEX_O_EchoControlInformation, v);
}
@Override
public EchoControlInformation getEchoControlInformation() {
return (EchoControlInformation) super.o_Parameters.get(_INDEX_O_EchoControlInformation);
}
@Override
public void setHopCounter(HopCounter v) {
super.o_Parameters.put(_INDEX_O_HopCounter, v);
}
@Override
public HopCounter getHopCounter() {
return (HopCounter) super.o_Parameters.get(_INDEX_O_HopCounter);
}
@Override
public void setCollectCallRequest(CollectCallRequest v) {
super.o_Parameters.put(_INDEX_O_CollectCallRequest, v);
}
@Override
public CollectCallRequest getCollectCallRequest() {
return (CollectCallRequest) super.o_Parameters.get(_INDEX_O_CollectCallRequest);
}
@Override
public void setApplicationTransport(ApplicationTransport v) {
super.o_Parameters.put(_INDEX_O_ApplicationTransport, v);
}
@Override
public ApplicationTransport getApplicationTransport() {
return (ApplicationTransport) super.o_Parameters.get(_INDEX_O_ApplicationTransport);
}
@Override
public void setPivotCapability(PivotCapability v) {
super.o_Parameters.put(_INDEX_O_PivotCapability, v);
}
@Override
public PivotCapability getPivotCapability() {
return (PivotCapability) super.o_Parameters.get(_INDEX_O_PivotCapability);
}
@Override
public void setCalledDirectoryNumber(CalledDirectoryNumber v) {
super.o_Parameters.put(_INDEX_O_CalledDirectoryNumber, v);
}
@Override
public CalledDirectoryNumber getCalledDirectoryNumber() {
return (CalledDirectoryNumber) super.o_Parameters.get(_INDEX_O_CalledDirectoryNumber);
}
@Override
public void setOriginalCalledINNumber(OriginalCalledINNumber v) {
super.o_Parameters.put(_INDEX_O_OriginalCalledINNumber, v);
}
@Override
public OriginalCalledINNumber getOriginalCalledINNumber() {
return (OriginalCalledINNumber) super.o_Parameters.get(_INDEX_O_OriginalCalledINNumber);
}
@Override
public void setNetworkRoutingNumber(NetworkRoutingNumber v) {
super.o_Parameters.put(_INDEX_O_NetworkRoutingNumber, v);
}
@Override
public NetworkRoutingNumber getNetworkRoutingNumber() {
return (NetworkRoutingNumber) super.o_Parameters.get(_INDEX_O_NetworkRoutingNumber);
}
@Override
public void setQueryOnReleaseCapability(QueryOnReleaseCapability v) {
super.o_Parameters.put(_INDEX_O_QueryOnReleaseCapability, v);
}
@Override
public QueryOnReleaseCapability getQueryOnReleaseCapability() {
return (QueryOnReleaseCapability) super.o_Parameters.get(_INDEX_O_QueryOnReleaseCapability);
}
@Override
public void setPivotCounter(PivotCounter v) {
super.o_Parameters.put(_INDEX_O_PivotCounter, v);
}
@Override
public PivotCounter getPivotCounter() {
return (PivotCounter) super.o_Parameters.get(_INDEX_O_PivotCounter);
}
@Override
public void setPivotRoutingForwardInformation(PivotRoutingForwardInformation v) {
super.o_Parameters.put(_INDEX_O_PivotRoutingForwardInformation, v);
}
@Override
public PivotRoutingForwardInformation getPivotRoutingForwardInformation() {
return (PivotRoutingForwardInformation) super.o_Parameters.get(_INDEX_O_PivotRoutingForwardInformation);
}
@Override
public void setRedirectCapability(RedirectCapability v) {
super.o_Parameters.put(_INDEX_O_RedirectCapability, v);
}
@Override
public RedirectCapability getRedirectCapability() {
return (RedirectCapability) super.o_Parameters.get(_INDEX_O_RedirectCapability);
}
@Override
public void setRedirectCounter(RedirectCounter v) {
super.o_Parameters.put(_INDEX_O_RedirectCounter, v);
}
@Override
public RedirectCounter getRedirectCounter() {
return (RedirectCounter) super.o_Parameters.get(_INDEX_O_RedirectCounter);
}
@Override
public void setRedirectStatus(RedirectStatus v) {
super.o_Parameters.put(_INDEX_O_RedirectStatus, v);
}
@Override
public RedirectStatus getRedirectStatus() {
return (RedirectStatus) super.o_Parameters.get(_INDEX_O_RedirectStatus);
}
@Override
public void setRedirectForwardInformation(RedirectForwardInformation v) {
super.o_Parameters.put(_INDEX_O_RedirectForwardInformation, v);
}
@Override
public RedirectForwardInformation getRedirectForwardInformation() {
return (RedirectForwardInformation) super.o_Parameters.get(_INDEX_O_RedirectForwardInformation);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.isup.impl.ISUPMessageImpl# mandatoryVariablePartPossible()
*/
protected boolean mandatoryVariablePartPossible() {
return this.getNumberOfMandatoryVariableLengthParameters() != 0;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.isup.impl.ISUPMessageImpl#optionalPartIsPossible ()
*/
protected boolean optionalPartIsPossible() {
return true;
}
}