1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2007 Esmertec AG.
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2007 The Android Open Source Project
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.mmslib.pdu;
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.mmslib.InvalidHeaderValueException;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/**
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Multimedia message PDU.
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class MultimediaMessagePdu extends GenericPdu {
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * The body.
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private PduBody mMessageBody;
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor.
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public MultimediaMessagePdu() {
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super();
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor.
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param header the header of this PDU
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param body   the body of this PDU
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public MultimediaMessagePdu(PduHeaders header, PduBody body) {
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super(header);
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mMessageBody = body;
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor with given headers.
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param headers Headers for this PDU.
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    MultimediaMessagePdu(PduHeaders headers) {
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super(headers);
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get body of the PDU.
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the body
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public PduBody getBody() {
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mMessageBody;
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set body of the PDU.
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param body the body
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setBody(PduBody body) {
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mMessageBody = body;
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get subject.
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public EncodedStringValue getSubject() {
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getEncodedStringValue(PduHeaders.SUBJECT);
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set subject.
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setSubject(EncodedStringValue value) {
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setEncodedStringValue(value, PduHeaders.SUBJECT);
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get To value.
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public EncodedStringValue[] getTo() {
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getEncodedStringValues(PduHeaders.TO);
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Add a "To" value.
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void addTo(EncodedStringValue value) {
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.appendEncodedStringValue(value, PduHeaders.TO);
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Priority value.
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public int getPriority() {
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getOctet(PduHeaders.PRIORITY);
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Priority value.
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws InvalidHeaderValueException if the value is invalid.
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setPriority(int value) throws InvalidHeaderValueException {
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setOctet(value, PduHeaders.PRIORITY);
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get Date value.
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public long getDate() {
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getLongInteger(PduHeaders.DATE);
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set Date value in seconds.
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setDate(long value) {
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setLongInteger(value, PduHeaders.DATE);
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get the message size
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the size of the message
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public long getMessageSize() {
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE);
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
160