1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/* 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Conditions Of Use 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software was developed by employees of the National Institute of 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Standards and Technology (NIST), an agency of the Federal Government 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* and others. 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Pursuant to title 15 Untied States Code Section 105, works of NIST 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* employees are not subject to copyright protection in the United States 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* and are considered to be in the public domain. As a result, a formal 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* license is not needed to use the software. 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software is provided by NIST as a service and is expressly 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* AND DATA ACCURACY. NIST does not warrant or make any representations 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* regarding the use of the software or the results thereof, including but 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* not limited to the correctness, accuracy, reliability or usefulness of 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* the software. 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Permission to use this software is contingent upon your acceptance 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* of the terms of this agreement 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* . 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*/ 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/******************************************* 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * PRODUCT OF PT INOVACAO - EST DEPARTMENT * 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *******************************************/ 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header.ims; 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.core.NameValue; 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException; 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.ArrayList; 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.Iterator; 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.LinkedList; 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.ListIterator; 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ExtensionHeader; 41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.ims.PChargingFunctionAddressesHeader; 43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.ims.ParameterNamesIms; 44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>P-Charging-Function-Addresses SIP Private Header. </p> 48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Sintax (RFC 3455):</p> 50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <pre> 51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * P-Charging-Addr = "P-Charging-Function-Addresses" HCOLON 52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * charge-addr-params 53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * *(SEMI charge-addr-params) 54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * charge-addr-params = ccf / ecf / generic-param 55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * ccf = "ccf" EQUAL gen-value 56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * ecf = "ecf" EQUAL gen-value 57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * gen-value = token / host / quoted-string 58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * </pre> 59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>example:</p> 61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>P-Charging-Function-Addresses: ccf=192.1.1.1; ccf=192.1.1.2; 62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * ecf=192.1.1.3; ecf=192.1.1.4</p> 63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>TODO: add PARSER support for IPv6 address. 65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * eg: P-Charging-Function-Addresses: ccf=[5555.b99.c88.d77.e66]; ecf=[5555.6aa.7bb.8cc.9dd] </p> 66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author ALEXANDRE MIGUEL SILVA SANTOS - Nú 10045401 68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class PChargingFunctionAddresses 72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang extends gov.nist.javax.sip.header.ParametersHeader 73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang implements PChargingFunctionAddressesHeader, SIPHeaderNamesIms , ExtensionHeader{ 74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // TODO: serialVersionUID 77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Defaul Constructor 80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public PChargingFunctionAddresses() { 82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(P_CHARGING_FUNCTION_ADDRESSES); 84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /* (non-Javadoc) 87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @see gov.nist.javax.sip.header.ParametersHeader#encodeBody() 88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang protected String encodeBody() { 90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang StringBuffer encoding = new StringBuffer(); 92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // issued by Miguel Freitas 94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (!duplicates.isEmpty()) 95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang encoding.append(duplicates.encode()); 97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return encoding.toString(); 100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Set the Charging Collection Function (CCF) Address</p> 105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ccfAddress - the address to set in the CCF parameter 107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException 108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setChargingCollectionFunctionAddress(String ccfAddress) throws ParseException { 110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ccfAddress == null) 112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setChargingCollectionFunctionAddress(), the ccfAddress parameter is null."); 115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // setParameter(ParameterNamesIms.CCF, ccfAddress); 117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang setMultiParameter(ParameterNamesIms.CCF, ccfAddress); 118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Add another Charging Collection Function (CCF) Address to this header</p> 123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ccfAddress - the address to set in the CCF parameter 125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException 126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void addChargingCollectionFunctionAddress(String ccfAddress) throws ParseException { 128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ccfAddress == null) 130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setChargingCollectionFunctionAddress(), the ccfAddress parameter is null."); 133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.parameters.set(ParameterNamesIms.CCF, ccfAddress); 135600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 136600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 137600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 138600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 139600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Remove a Charging Collection Function (CCF) Address set in this header</p> 140600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 141600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ccfAddress - the address in the CCF parameter to remove 142600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException if the address was not removed 143600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 144600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void removeChargingCollectionFunctionAddress(String ccfAddress) throws ParseException { 145600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 146600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ccfAddress == null) 147600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 148600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 149600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setChargingCollectionFunctionAddress(), the ccfAddress parameter is null."); 150600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 151600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(!this.delete(ccfAddress, ParameterNamesIms.CCF)) { 152600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 153600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new ParseException("CCF Address Not Removed",0); 154600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 155600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 156600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 157600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 158600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 159600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 160600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Get all the Charging Collection Function (CCF) Addresses set in this header</p> 161600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 162600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return ListIterator that constains all CCF addresses of this header 163600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 164600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public ListIterator getChargingCollectionFunctionAddresses() { 165600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 166600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang Iterator li = this.parameters.iterator(); 167600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang LinkedList ccfLIST = new LinkedList(); 168600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang NameValue nv; 169600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang while (li.hasNext()) { 170600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang nv = (NameValue) li.next(); 171600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (nv.getName().equalsIgnoreCase(ParameterNamesIms.CCF)) { 172600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 173600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang NameValue ccfNV = new NameValue(); 174600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 175600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ccfNV.setName(nv.getName()); 176600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ccfNV.setValueAsObject(nv.getValueAsObject()); 177600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 178600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ccfLIST.add(ccfNV); 179600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 180600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 181600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 182600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 183600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return ccfLIST.listIterator(); 184600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 185600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 186600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 187600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Set the Event Charging Function (ECF) Address</p> 188600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 189600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ecfAddress - the address to set in the ECF parameter 190600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException 191600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 192600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setEventChargingFunctionAddress(String ecfAddress) throws ParseException { 193600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 194600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ecfAddress == null) 195600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 196600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 197600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setEventChargingFunctionAddress(), the ecfAddress parameter is null."); 198600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 199600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang setMultiParameter(ParameterNamesIms.ECF, ecfAddress); 200600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // setParameter(ParameterNamesIms.ECF, ecfAddress); 201600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 202600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 203600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 204600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 205600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Add another Event Charging Function (ECF) Address to this header</p> 206600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 207600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ecfAddress - the address to set in the ECF parameter 208600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException 209600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 210600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void addEventChargingFunctionAddress(String ecfAddress) throws ParseException { 211600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 212600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ecfAddress == null) 213600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 214600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 215600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setEventChargingFunctionAddress(), the ecfAddress parameter is null."); 216600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 217600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.parameters.set(ParameterNamesIms.ECF, ecfAddress); 218600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 219600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 220600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 221600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 222600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Remove a Event Charging Function (ECF) Address set in this header</p> 223600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 224600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param ecfAddress - the address in the ECF parameter to remove 225600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException if the address was not removed 226600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 227600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void removeEventChargingFunctionAddress(String ecfAddress) throws ParseException { 228600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 229600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (ecfAddress == null) 230600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 231600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception, " 232600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + "P-Charging-Function-Addresses, setEventChargingFunctionAddress(), the ecfAddress parameter is null."); 233600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 234600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(!this.delete(ecfAddress, ParameterNamesIms.ECF)) { 235600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 236600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new java.text.ParseException("ECF Address Not Removed",0); 237600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 238600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 239600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 240600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 241600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 242600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 243600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Get all the Event Charging Function (ECF) Addresses set in this header</p> 244600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 245600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return ListIterator that constains all CCF addresses of this header 246600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 247600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public ListIterator<NameValue> getEventChargingFunctionAddresses() { 248600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 249600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang LinkedList<NameValue> listw = new LinkedList<NameValue>(); 250600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 251600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang Iterator li = this.parameters.iterator(); 252600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ListIterator<NameValue> ecfLIST = listw.listIterator(); 253600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang NameValue nv; 254600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang boolean removed = false; 255600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang while (li.hasNext()) { 256600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang nv = (NameValue) li.next(); 257600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (nv.getName().equalsIgnoreCase(ParameterNamesIms.ECF)) { 258600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 259600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang NameValue ecfNV = new NameValue(); 260600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 261600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ecfNV.setName(nv.getName()); 262600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ecfNV.setValueAsObject(nv.getValueAsObject()); 263600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 264600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ecfLIST.add(ecfNV); 265600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 266600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 267600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 268600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 269600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return ecfLIST; 270600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 271600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 272600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 273600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>Remove parameter </p> 274600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 275600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param value - of the parameter 276600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param name - of the parameter 277600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return true if parameter was removed, and false if not 278600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 279600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public boolean delete(String value, String name) { 280600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang Iterator li = this.parameters.iterator(); 281600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang NameValue nv; 282600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang boolean removed = false; 283600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang while (li.hasNext()) { 284600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang nv = (NameValue) li.next(); 285600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (((String) nv.getValueAsObject()).equalsIgnoreCase(value) && nv.getName().equalsIgnoreCase(name)) { 286600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang li.remove(); 287600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang removed = true; 288600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 289600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 290600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 291600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return removed; 292600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 293600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 294600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 295600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setValue(String value) throws ParseException { 296600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new ParseException ( value,0); 297600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 298600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 299600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 300600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 301