1 /*
2  * Copyright (C) 2007 Esmertec AG.
3  * Copyright (C) 2007 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package androidx.appcompat.mms.pdu;
19 
20 /**
21  * M-Notification.ind PDU.
22  */
23 public class NotificationInd extends GenericPdu {
24     /**
25      * Empty constructor.
26      * Since the Pdu corresponding to this class is constructed
27      * by the Proxy-Relay server, this class is only instantiated
28      * by the Pdu Parser.
29      *
30      * @throws InvalidHeaderValueException if error occurs.
31      *         RuntimeException if an undeclared error occurs.
32      */
NotificationInd()33     public NotificationInd() throws InvalidHeaderValueException {
34         super();
35         setMessageType(PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND);
36     }
37 
38     /**
39      * Constructor with given headers.
40      *
41      * @param headers Headers for this PDU.
42      */
NotificationInd(PduHeaders headers)43     NotificationInd(PduHeaders headers) {
44         super(headers);
45     }
46 
47     /**
48      * Get X-Mms-Content-Class Value.
49      *
50      * @return the value
51      */
getContentClass()52     public int getContentClass() {
53         return mPduHeaders.getOctet(PduHeaders.CONTENT_CLASS);
54     }
55 
56     /**
57      * Set X-Mms-Content-Class Value.
58      *
59      * @param value the value
60      * @throws InvalidHeaderValueException if the value is invalid.
61      *         RuntimeException if an undeclared error occurs.
62      */
setContentClass(int value)63     public void setContentClass(int value) throws InvalidHeaderValueException {
64         mPduHeaders.setOctet(value, PduHeaders.CONTENT_CLASS);
65     }
66 
67     /**
68      * Get X-Mms-Content-Location value.
69      * When used in a PDU other than M-Mbox-Delete.conf and M-Delete.conf:
70      * Content-location-value = Uri-value
71      *
72      * @return the value
73      */
getContentLocation()74     public byte[] getContentLocation() {
75         return mPduHeaders.getTextString(PduHeaders.CONTENT_LOCATION);
76     }
77 
78     /**
79      * Set X-Mms-Content-Location value.
80      *
81      * @param value the value
82      * @throws NullPointerException if the value is null.
83      *         RuntimeException if an undeclared error occurs.
84      */
setContentLocation(byte[] value)85     public void setContentLocation(byte[] value) {
86         mPduHeaders.setTextString(value, PduHeaders.CONTENT_LOCATION);
87     }
88 
89     /**
90      * Get X-Mms-Expiry value.
91      *
92      * Expiry-value = Value-length
93      *      (Absolute-token Date-value | Relative-token Delta-seconds-value)
94      *
95      * @return the value
96      */
getExpiry()97     public long getExpiry() {
98         return mPduHeaders.getLongInteger(PduHeaders.EXPIRY);
99     }
100 
101     /**
102      * Set X-Mms-Expiry value.
103      *
104      * @param value the value
105      * @throws RuntimeException if an undeclared error occurs.
106      */
setExpiry(long value)107     public void setExpiry(long value) {
108         mPduHeaders.setLongInteger(value, PduHeaders.EXPIRY);
109     }
110 
111     /**
112      * Get From value.
113      * From-value = Value-length
114      *      (Address-present-token Encoded-string-value | Insert-address-token)
115      *
116      * @return the value
117      */
getFrom()118     public EncodedStringValue getFrom() {
119        return mPduHeaders.getEncodedStringValue(PduHeaders.FROM);
120     }
121 
122     /**
123      * Set From value.
124      *
125      * @param value the value
126      * @throws NullPointerException if the value is null.
127      *         RuntimeException if an undeclared error occurs.
128      */
setFrom(EncodedStringValue value)129     public void setFrom(EncodedStringValue value) {
130         mPduHeaders.setEncodedStringValue(value, PduHeaders.FROM);
131     }
132 
133     /**
134      * Get X-Mms-Message-Class value.
135      * Message-class-value = Class-identifier | Token-text
136      * Class-identifier = Personal | Advertisement | Informational | Auto
137      *
138      * @return the value
139      */
getMessageClass()140     public byte[] getMessageClass() {
141         return mPduHeaders.getTextString(PduHeaders.MESSAGE_CLASS);
142     }
143 
144     /**
145      * Set X-Mms-Message-Class value.
146      *
147      * @param value the value
148      * @throws NullPointerException if the value is null.
149      *         RuntimeException if an undeclared error occurs.
150      */
setMessageClass(byte[] value)151     public void setMessageClass(byte[] value) {
152         mPduHeaders.setTextString(value, PduHeaders.MESSAGE_CLASS);
153     }
154 
155     /**
156      * Get X-Mms-Message-Size value.
157      * Message-size-value = Long-integer
158      *
159      * @return the value
160      */
getMessageSize()161     public long getMessageSize() {
162         return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE);
163     }
164 
165     /**
166      * Set X-Mms-Message-Size value.
167      *
168      * @param value the value
169      * @throws RuntimeException if an undeclared error occurs.
170      */
setMessageSize(long value)171     public void setMessageSize(long value) {
172         mPduHeaders.setLongInteger(value, PduHeaders.MESSAGE_SIZE);
173     }
174 
175     /**
176      * Get subject.
177      *
178      * @return the value
179      */
getSubject()180     public EncodedStringValue getSubject() {
181         return mPduHeaders.getEncodedStringValue(PduHeaders.SUBJECT);
182     }
183 
184     /**
185      * Set subject.
186      *
187      * @param value the value
188      * @throws NullPointerException if the value is null.
189      *         RuntimeException if an undeclared error occurs.
190      */
setSubject(EncodedStringValue value)191     public void setSubject(EncodedStringValue value) {
192         mPduHeaders.setEncodedStringValue(value, PduHeaders.SUBJECT);
193     }
194 
195     /**
196      * Get X-Mms-Transaction-Id.
197      *
198      * @return the value
199      */
getTransactionId()200     public byte[] getTransactionId() {
201         return mPduHeaders.getTextString(PduHeaders.TRANSACTION_ID);
202     }
203 
204     /**
205      * Set X-Mms-Transaction-Id.
206      *
207      * @param value the value
208      * @throws NullPointerException if the value is null.
209      *         RuntimeException if an undeclared error occurs.
210      */
setTransactionId(byte[] value)211     public void setTransactionId(byte[] value) {
212         mPduHeaders.setTextString(value, PduHeaders.TRANSACTION_ID);
213     }
214 
215     /**
216      * Get X-Mms-Delivery-Report Value.
217      *
218      * @return the value
219      */
getDeliveryReport()220     public int getDeliveryReport() {
221         return mPduHeaders.getOctet(PduHeaders.DELIVERY_REPORT);
222     }
223 
224     /**
225      * Set X-Mms-Delivery-Report Value.
226      *
227      * @param value the value
228      * @throws InvalidHeaderValueException if the value is invalid.
229      *         RuntimeException if an undeclared error occurs.
230      */
setDeliveryReport(int value)231     public void setDeliveryReport(int value) throws InvalidHeaderValueException {
232         mPduHeaders.setOctet(value, PduHeaders.DELIVERY_REPORT);
233     }
234 
235     /*
236      * Optional, not supported header fields:
237      *
238      *     public byte[] getApplicId() {return null;}
239      *     public void setApplicId(byte[] value) {}
240      *
241      *     public byte[] getAuxApplicId() {return null;}
242      *     public void getAuxApplicId(byte[] value) {}
243      *
244      *     public byte getDrmContent() {return 0x00;}
245      *     public void setDrmContent(byte value) {}
246      *
247      *     public byte getDistributionIndicator() {return 0x00;}
248      *     public void setDistributionIndicator(byte value) {}
249      *
250      *     public ElementDescriptorValue getElementDescriptor() {return null;}
251      *     public void getElementDescriptor(ElementDescriptorValue value) {}
252      *
253      *     public byte getPriority() {return 0x00;}
254      *     public void setPriority(byte value) {}
255      *
256      *     public byte getRecommendedRetrievalMode() {return 0x00;}
257      *     public void setRecommendedRetrievalMode(byte value) {}
258      *
259      *     public byte getRecommendedRetrievalModeText() {return 0x00;}
260      *     public void setRecommendedRetrievalModeText(byte value) {}
261      *
262      *     public byte[] getReplaceId() {return 0x00;}
263      *     public void setReplaceId(byte[] value) {}
264      *
265      *     public byte[] getReplyApplicId() {return 0x00;}
266      *     public void setReplyApplicId(byte[] value) {}
267      *
268      *     public byte getReplyCharging() {return 0x00;}
269      *     public void setReplyCharging(byte value) {}
270      *
271      *     public byte getReplyChargingDeadline() {return 0x00;}
272      *     public void setReplyChargingDeadline(byte value) {}
273      *
274      *     public byte[] getReplyChargingId() {return 0x00;}
275      *     public void setReplyChargingId(byte[] value) {}
276      *
277      *     public long getReplyChargingSize() {return 0;}
278      *     public void setReplyChargingSize(long value) {}
279      *
280      *     public byte getStored() {return 0x00;}
281      *     public void setStored(byte value) {}
282      */
283 }
284