Home | History | Annotate | Download | only in ims
      1 /*
      2  * Conditions Of Use
      3  *
      4  * This software was developed by employees of the National Institute of
      5  * Standards and Technology (NIST), an agency of the Federal Government.
      6  * Pursuant to title 15 Untied States Code Section 105, works of NIST
      7  * employees are not subject to copyright protection in the United States
      8  * and are considered to be in the public domain.  As a result, a formal
      9  * license is not needed to use the software.
     10  *
     11  * This software is provided by NIST as a service and is expressly
     12  * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
     13  * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
     14  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
     15  * AND DATA ACCURACY.  NIST does not warrant or make any representations
     16  * regarding the use of the software or the results thereof, including but
     17  * not limited to the correctness, accuracy, reliability or usefulness of
     18  * the software.
     19  *
     20  * Permission to use this software is contingent upon your acceptance
     21  * of the terms of this agreement
     22  *
     23  * .
     24  *
     25  */
     26 /*******************************************
     27  * PRODUCT OF PT INOVACAO - EST DEPARTMENT *
     28  *******************************************/
     29 
     30 package gov.nist.javax.sip.header.ims;
     31 
     32 import java.text.ParseException;
     33 
     34 import javax.sip.header.ExtensionHeader;
     35 
     36 import gov.nist.javax.sip.header.ims.PChargingVectorHeader;
     37 import gov.nist.javax.sip.header.ims.ParameterNamesIms;
     38 
     39 /**
     40  * P-Charging-Vector header SIP Private Header: RFC 3455.
     41  *
     42  * @author ALEXANDRE MIGUEL SILVA SANTOS
     43  */
     44 
     45 public class PChargingVector extends gov.nist.javax.sip.header.ParametersHeader
     46         implements PChargingVectorHeader, SIPHeaderNamesIms, ExtensionHeader {
     47 
     48     /**
     49      * Default Constructor
     50      */
     51     public PChargingVector() {
     52 
     53         super(P_CHARGING_VECTOR);
     54     }
     55 
     56     /*
     57      * (non-Javadoc)
     58      *
     59      * @see gov.nist.javax.sip.header.ParametersHeader#encodeBody()
     60      */
     61     protected String encodeBody() {
     62 
     63         StringBuffer encoding = new StringBuffer();
     64         /*
     65          * no need to check for the presence of icid-value. According to the
     66          * spec above this is a mandatory field. if it does not exist, then we
     67          * should throw an exception
     68          *
     69          * JvB 26/5: fix for issue #159, check for quotes around icid value
     70          */
     71         gov.nist.core.NameValue nv = getNameValue( ParameterNamesIms.ICID_VALUE );
     72         nv.encode( encoding );
     73 
     74         //the remaining parameters are optional.
     75         // check for their presence, then add the parameter if it exists.
     76         if (parameters.containsKey(ParameterNamesIms.ICID_GENERATED_AT))
     77             encoding.append(SEMICOLON).append(
     78                     ParameterNamesIms.ICID_GENERATED_AT).append(EQUALS).append(
     79                     getICIDGeneratedAt());
     80 
     81         if (parameters.containsKey(ParameterNamesIms.TERM_IOI))
     82 
     83             encoding.append(SEMICOLON).append(ParameterNamesIms.TERM_IOI)
     84                     .append(EQUALS).append(getTerminatingIOI());
     85 
     86         if (parameters.containsKey(ParameterNamesIms.ORIG_IOI))
     87 
     88             encoding.append(SEMICOLON).append(ParameterNamesIms.ORIG_IOI)
     89                     .append(EQUALS).append(getOriginatingIOI());
     90 
     91         return encoding.toString();
     92     }
     93 
     94     /**
     95      * <p>
     96      * Get the icid-value parameter value
     97      * </p>
     98      *
     99      * @return the value of the icid-value parameter
    100      */
    101     public String getICID() {
    102 
    103         return getParameter(ParameterNamesIms.ICID_VALUE);
    104     }
    105 
    106     /**
    107      * <p>
    108      * Set the icid-value parameter
    109      * </p>
    110      *
    111      * @param icid -
    112      *            value to set in the icid-value parameter
    113      * @throws ParseException
    114      */
    115     public void setICID(String icid) throws ParseException {
    116 
    117         if (icid == null)
    118             throw new NullPointerException(
    119                     "JAIN-SIP Exception, "
    120                             + "P-Charging-Vector, setICID(), the icid parameter is null.");
    121 
    122         setParameter(ParameterNamesIms.ICID_VALUE, icid);
    123 
    124     }
    125 
    126     /**
    127      * <p>
    128      * Get the icid-generated-at parameter value
    129      * </p>
    130      *
    131      * @return the icid-generated-at parameter value
    132      */
    133     public String getICIDGeneratedAt() {
    134 
    135         return getParameter(ParameterNamesIms.ICID_GENERATED_AT);
    136 
    137     }
    138 
    139     /**
    140      * <p>
    141      * Set the icid-generated-at parameter
    142      * </p>
    143      *
    144      * @param host -
    145      *            value to set in the icid-generated-at parameter
    146      * @throws ParseException
    147      */
    148     public void setICIDGeneratedAt(String host) throws ParseException {
    149 
    150         if (host == null)
    151             throw new NullPointerException(
    152                     "JAIN-SIP Exception, "
    153                             + "P-Charging-Vector, setICIDGeneratedAt(), the host parameter is null.");
    154 
    155         setParameter(ParameterNamesIms.ICID_GENERATED_AT, host);
    156 
    157     }
    158 
    159     /**
    160      * <p>
    161      * Get the orig-ioi parameter value
    162      * </p>
    163      *
    164      * @return the orig-ioi parameter value
    165      */
    166     public String getOriginatingIOI() {
    167 
    168         return getParameter(ParameterNamesIms.ORIG_IOI);
    169     }
    170 
    171     /**
    172      * <p>
    173      * Set the orig-ioi parameter
    174      * </p>
    175      *
    176      * @param origIOI -
    177      *            value to set in the orig-ioi parameter. If value is null or
    178      *            empty, the parameter is removed
    179      * @throws ParseException
    180      */
    181     public void setOriginatingIOI(String origIOI) throws ParseException {
    182 
    183         if (origIOI == null || origIOI.length() == 0) {
    184             removeParameter(ParameterNamesIms.ORIG_IOI);
    185         } else
    186             setParameter(ParameterNamesIms.ORIG_IOI, origIOI);
    187 
    188     }
    189 
    190     /**
    191      * <p>
    192      * Get the term-ioi parameter value
    193      * </p>
    194      *
    195      * @return the term-ioi parameter value
    196      */
    197     public String getTerminatingIOI() {
    198 
    199         return getParameter(ParameterNamesIms.TERM_IOI);
    200     }
    201 
    202     /**
    203      * <p>
    204      * Set the term-ioi parameter
    205      * </p>
    206      *
    207      * @param termIOI -
    208      *            value to set in the term-ioi parameter. If value is null or
    209      *            empty, the parameter is removed
    210      * @throws ParseException
    211      */
    212     public void setTerminatingIOI(String termIOI) throws ParseException {
    213 
    214         if (termIOI == null || termIOI.length() == 0) {
    215             removeParameter(ParameterNamesIms.TERM_IOI);
    216         } else
    217             setParameter(ParameterNamesIms.TERM_IOI, termIOI);
    218 
    219     }
    220 
    221     public void setValue(String value) throws ParseException {
    222         throw new ParseException(value, 0);
    223 
    224     }
    225 
    226 }
    227