/*
* TeleStax, Open Source Cloud Communications
* Copyright 2011-2016, Telestax Inc and individual contributors
* by the @authors tag.
*
* This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation; either version 3 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package org.mobicents.protocols.ss7.map.service.mobility.subscriberInformation;
import org.mobicents.protocols.asn.AsnException;
import org.mobicents.protocols.asn.AsnInputStream;
import org.mobicents.protocols.asn.AsnOutputStream;
import org.mobicents.protocols.asn.Tag;
import org.mobicents.protocols.ss7.map.api.MAPException;
import org.mobicents.protocols.ss7.map.api.MAPParsingComponentException;
import org.mobicents.protocols.ss7.map.api.MAPParsingComponentExceptionReason;
import org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer;
import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberInformation.AdditionalRequestedCAMELSubscriptionInfo;
import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberInformation.RequestedCAMELSubscriptionInfo;
import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberInformation.RequestedSubscriptionInfo;
import org.mobicents.protocols.ss7.map.api.service.supplementary.SSForBSCode;
import org.mobicents.protocols.ss7.map.primitives.MAPExtensionContainerImpl;
import org.mobicents.protocols.ss7.map.primitives.SequenceBase;
import org.mobicents.protocols.ss7.map.service.supplementary.SSForBSCodeImpl;
import java.io.IOException;
/**
* Created by vsubbotin on 24/05/16.
*/
public class RequestedSubscriptionInfoImpl extends SequenceBase implements RequestedSubscriptionInfo {
public static final int _ID_requested_SS_info = 1;
public static final int _ID_odb = 2;
public static final int _ID_requested_CAMEL_subscription_info = 3;
public static final int _ID_supported_VLR_CAMEL_phases = 4;
public static final int _ID_supported_SGSN_CAMEL_phases = 5;
public static final int _ID_extension_container = 6;
public static final int _ID_additional_requested_CAMEL_subscription_info = 7;
public static final int _ID_msisdn_BS_list = 8;
public static final int _ID_csg_subscription_data_requested = 9;
public static final int _ID_cw_info = 10;
public static final int _ID_clip_info = 11;
public static final int _ID_clir_info = 12;
public static final int _ID_hold_info = 13;
public static final int _ID_ect_info = 14;
private SSForBSCode ssForBSCode;
private boolean isOdb;
private RequestedCAMELSubscriptionInfo requestedCAMELSubscriptionInfo;
private boolean isSupportedVlrCamelPhases;
private boolean isSupportedSgsnCamelPhases;
private MAPExtensionContainer extensionContainer;
private AdditionalRequestedCAMELSubscriptionInfo additionalRequestedCAMELSubscriptionInfo;
private boolean isMsisdnBsList;
private boolean isCsgSubscriptionDataRequested;
private boolean isCwInfo;
private boolean isClipInfo;
private boolean isClirInfo;
private boolean isHoldInfo;
private boolean isEctInfo;
public RequestedSubscriptionInfoImpl() {
super("RequestedSubscriptionInfo");
}
public RequestedSubscriptionInfoImpl(SSForBSCode ssForBSCode, boolean isOdb, RequestedCAMELSubscriptionInfo requestedCAMELSubscriptionInfo,
boolean isSupportedVlrCamelPhases, boolean isSupportedSgsnCamelPhases, MAPExtensionContainer extensionContainer,
AdditionalRequestedCAMELSubscriptionInfo additionalRequestedCAMELSubscriptionInfo, boolean isMsisdnBsList,
boolean isCsgSubscriptionDataRequested, boolean isCwInfo, boolean isClipInfo, boolean isClirInfo, boolean isHoldInfo,
boolean isEctInfo) {
super("RequestedSubscriptionInfo");
this.ssForBSCode = ssForBSCode;
this.isOdb = isOdb;
this.requestedCAMELSubscriptionInfo = requestedCAMELSubscriptionInfo;
this.isSupportedVlrCamelPhases = isSupportedVlrCamelPhases;
this.isSupportedSgsnCamelPhases = isSupportedSgsnCamelPhases;
this.extensionContainer = extensionContainer;
this.additionalRequestedCAMELSubscriptionInfo = additionalRequestedCAMELSubscriptionInfo;
this.isMsisdnBsList = isMsisdnBsList;
this.isCsgSubscriptionDataRequested = isCsgSubscriptionDataRequested;
this.isCwInfo = isCwInfo;
this.isClipInfo = isClipInfo;
this.isClirInfo = isClirInfo;
this.isHoldInfo = isHoldInfo;
this.isEctInfo = isEctInfo;
}
public SSForBSCode getRequestedSSInfo() {
return this.ssForBSCode;
}
public boolean getOdb() {
return this.isOdb;
}
public RequestedCAMELSubscriptionInfo getRequestedCAMELSubscriptionInfo() {
return this.requestedCAMELSubscriptionInfo;
}
public boolean getSupportedVlrCamelPhases() {
return this.isSupportedVlrCamelPhases;
}
public boolean getSupportedSgsnCamelPhases() {
return this.isSupportedSgsnCamelPhases;
}
public MAPExtensionContainer getExtensionContainer() {
return this.extensionContainer;
}
public AdditionalRequestedCAMELSubscriptionInfo getAdditionalRequestedCamelSubscriptionInfo() {
return this.additionalRequestedCAMELSubscriptionInfo;
}
public boolean getMsisdnBsList() {
return this.isMsisdnBsList;
}
public boolean getCsgSubscriptionDataRequested() {
return this.isCsgSubscriptionDataRequested;
}
public boolean getCwInfo() {
return this.isCwInfo;
}
public boolean getClipInfo() {
return this.isClipInfo;
}
public boolean getClirInfo() {
return this.isClirInfo;
}
public boolean getHoldInfo() {
return this.isHoldInfo;
}
public boolean getEctInfo() {
return this.isEctInfo;
}
protected void _decode(AsnInputStream ansIS, int length) throws MAPParsingComponentException, IOException, AsnException {
ssForBSCode = null;
isOdb = false;
requestedCAMELSubscriptionInfo = null;
isSupportedVlrCamelPhases = false;
isSupportedSgsnCamelPhases = false;
extensionContainer = null;
additionalRequestedCAMELSubscriptionInfo = null;
isMsisdnBsList = false;
isCsgSubscriptionDataRequested = false;
isCwInfo = false;
isClipInfo = false;
isClirInfo = false;
isHoldInfo = false;
isEctInfo = false;
AsnInputStream ais = ansIS.readSequenceStreamData(length);
while (true) {
if (ais.available() == 0)
break;
int tag = ais.readTag();
if (ais.getTagClass() == Tag.CLASS_CONTEXT_SPECIFIC) {
switch (tag) {
case _ID_requested_SS_info:
if (ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter ssForBSCode is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.ssForBSCode = new SSForBSCodeImpl();
((SSForBSCodeImpl)this.ssForBSCode).decodeAll(ais);
break;
case _ID_odb:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isOdb is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isOdb = Boolean.TRUE;
break;
case _ID_requested_CAMEL_subscription_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter requestedCAMELSubscriptionInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
int requestedInfo = (int)ais.readInteger();
this.requestedCAMELSubscriptionInfo = RequestedCAMELSubscriptionInfo.getInstance(requestedInfo);
break;
case _ID_supported_VLR_CAMEL_phases:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isSupportedVlrCamelPhases is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isSupportedVlrCamelPhases = Boolean.TRUE;
break;
case _ID_supported_SGSN_CAMEL_phases:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isSupportedSgsnCamelPhases is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isSupportedSgsnCamelPhases = Boolean.TRUE;
break;
case _ID_extension_container:
if (ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter extensionContainer is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
extensionContainer = new MAPExtensionContainerImpl();
((MAPExtensionContainerImpl) extensionContainer).decodeAll(ais);
break;
case _ID_additional_requested_CAMEL_subscription_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter additionalRequestedCAMELSubscriptionInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
int requestedAdditionalInfo = (int)ais.readInteger();
this.additionalRequestedCAMELSubscriptionInfo = AdditionalRequestedCAMELSubscriptionInfo.getInstance(requestedAdditionalInfo);
break;
case _ID_msisdn_BS_list:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isMsisdnBsList is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isMsisdnBsList = Boolean.TRUE;
break;
case _ID_csg_subscription_data_requested:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isCsgSubscriptionDataRequested is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isCsgSubscriptionDataRequested = Boolean.TRUE;
break;
case _ID_cw_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isCwInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isCwInfo = Boolean.TRUE;
break;
case _ID_clip_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isClipInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isClipInfo = Boolean.TRUE;
break;
case _ID_clir_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isClirInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isClirInfo = Boolean.TRUE;
break;
case _ID_hold_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isHoldInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isHoldInfo = Boolean.TRUE;
break;
case _ID_ect_info:
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException(
"Error while decoding RequestedInfo: Parameter isEctInfo is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.isEctInfo = Boolean.TRUE;
break;
default:
ais.advanceElement();
break;
}
} else {
ais.advanceElement();
}
}
}
public void encodeData(AsnOutputStream asnOs) throws MAPException {
if (this.ssForBSCode != null) {
((SSForBSCodeImpl)this.ssForBSCode).encodeAll(asnOs, Tag.CLASS_CONTEXT_SPECIFIC, _ID_requested_SS_info);
}
try {
if (this.isOdb) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_odb);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter odb: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter odb: ", e);
}
try {
if (this.requestedCAMELSubscriptionInfo != null) {
asnOs.writeInteger(Tag.CLASS_CONTEXT_SPECIFIC, _ID_requested_CAMEL_subscription_info, requestedCAMELSubscriptionInfo.getCode());
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter requestedCAMELSubscriptionInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter requestedCAMELSubscriptionInfo: ", e);
}
try {
if (this.isSupportedVlrCamelPhases) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_supported_VLR_CAMEL_phases);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isSupportedVlrCamelPhases: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isSupportedVlrCamelPhases: ", e);
}
try {
if (this.isSupportedSgsnCamelPhases) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_supported_SGSN_CAMEL_phases);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isSupportedSgsnCamelPhases: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isSupportedSgsnCamelPhases: ", e);
}
if (this.extensionContainer != null) {
((MAPExtensionContainerImpl) this.extensionContainer).encodeAll(asnOs, Tag.CLASS_CONTEXT_SPECIFIC, _ID_extension_container);
}
try {
if (this.additionalRequestedCAMELSubscriptionInfo != null) {
asnOs.writeInteger(Tag.CLASS_CONTEXT_SPECIFIC, _ID_additional_requested_CAMEL_subscription_info, additionalRequestedCAMELSubscriptionInfo.getCode());
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter additionalRequestedCAMELSubscriptionInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter additionalRequestedCAMELSubscriptionInfo: ", e);
}
try {
if (this.isMsisdnBsList) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_msisdn_BS_list);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isMsisdnBsList: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isMsisdnBsList: ", e);
}
try {
if (this.isCsgSubscriptionDataRequested) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_csg_subscription_data_requested);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isCsgSubscriptionDataRequested: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isCsgSubscriptionDataRequested: ", e);
}
try {
if (this.isCwInfo) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_cw_info);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isCwInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isCwInfo: ", e);
}
try {
if (this.isClipInfo) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_clip_info);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isClipInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isClipInfo: ", e);
}
try {
if (this.isClirInfo) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_clir_info);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isClirInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isClirInfo: ", e);
}
try {
if (this.isHoldInfo) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_hold_info);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isHoldInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isHoldInfo: ", e);
}
try {
if (this.isEctInfo) {
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, _ID_ect_info);
}
} catch (IOException e) {
throw new MAPException("IOException when encoding parameter isEctInfo: ", e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding parameter isEctInfo: ", e);
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(_PrimitiveName);
sb.append(" [");
if (this.ssForBSCode != null) {
sb.append("ssForBSCode=");
sb.append(this.ssForBSCode);
}
if (this.isOdb) {
sb.append(", isOdb");
}
if (this.requestedCAMELSubscriptionInfo != null) {
sb.append(", requestedCAMELSubscriptionInfo=");
sb.append(this.requestedCAMELSubscriptionInfo);
}
if (this.isSupportedVlrCamelPhases) {
sb.append(", isSupportedVlrCamelPhases");
}
if (this.isSupportedSgsnCamelPhases) {
sb.append(", isSupportedSgsnCamelPhases");
}
if (this.extensionContainer != null) {
sb.append(", extensionContainer=");
sb.append(this.extensionContainer);
}
if (this.additionalRequestedCAMELSubscriptionInfo != null) {
sb.append(", additionalRequestedCAMELSubscriptionInfo=");
sb.append(this.additionalRequestedCAMELSubscriptionInfo);
}
if (this.isMsisdnBsList) {
sb.append(", isMsisdnBsList");
}
if (this.isCsgSubscriptionDataRequested) {
sb.append(", isCsgSubscriptionDataRequested");
}
if (this.isCwInfo) {
sb.append(",isCwInfo");
}
if (this.isClipInfo) {
sb.append(", isClipInfo");
}
if (this.isClirInfo) {
sb.append(", isClirInfo");
}
if (this.isHoldInfo) {
sb.append(", isHoldInfo");
}
if (this.isEctInfo) {
sb.append(", isEctInfo");
}
sb.append("]");
return sb.toString();
}
}