1526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen/*
2526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Copyright (C) 2007 Esmertec AG.
3526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Copyright (C) 2007 The Android Open Source Project
4526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
5526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Licensed under the Apache License, Version 2.0 (the "License");
6526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * you may not use this file except in compliance with the License.
7526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * You may obtain a copy of the License at
8526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
9526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *      http://www.apache.org/licenses/LICENSE-2.0
10526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
11526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Unless required by applicable law or agreed to in writing, software
12526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * distributed under the License is distributed on an "AS IS" BASIS,
13526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * See the License for the specific language governing permissions and
15526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * limitations under the License.
16526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen */
17526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
18526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenpackage com.google.android.mms.pdu;
19526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
20526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenimport com.google.android.mms.InvalidHeaderValueException;
21526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
22526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen/**
23526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Multimedia message PDU.
24526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen */
25526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenpublic class MultimediaMessagePdu extends GenericPdu{
26526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
27526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * The body.
28526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
29526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    private PduBody mMessageBody;
30526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
31526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
32526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor.
33526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
34526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public MultimediaMessagePdu() {
35526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super();
36526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
37526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
38526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
39526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor.
40526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
41526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param header the header of this PDU
42526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param body the body of this PDU
43526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
44526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public MultimediaMessagePdu(PduHeaders header, PduBody body) {
45526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super(header);
46526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mMessageBody = body;
47526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
48526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
49526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
50526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor with given headers.
51526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
52526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param headers Headers for this PDU.
53526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
54526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    MultimediaMessagePdu(PduHeaders headers) {
55526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super(headers);
56526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
57526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
58526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
59526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get body of the PDU.
60526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
61526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the body
62526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
63526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public PduBody getBody() {
64526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mMessageBody;
65526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
66526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
67526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
68526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set body of the PDU.
69526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
70526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param body the body
71526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
72526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setBody(PduBody body) {
73526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mMessageBody = body;
74526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
75526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
76526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
77526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get subject.
78526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
79526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
80526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
81526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public EncodedStringValue getSubject() {
82526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getEncodedStringValue(PduHeaders.SUBJECT);
83526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
84526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
85526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
86526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set subject.
87526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
88526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
89526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
90526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
91526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setSubject(EncodedStringValue value) {
92526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setEncodedStringValue(value, PduHeaders.SUBJECT);
93526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
94526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
95526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
96526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get To value.
97526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
98526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
99526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
100526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public EncodedStringValue[] getTo() {
101526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getEncodedStringValues(PduHeaders.TO);
102526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
103526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
104526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
105526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Add a "To" value.
106526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
107526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
108526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
109526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
110526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void addTo(EncodedStringValue value) {
111526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.appendEncodedStringValue(value, PduHeaders.TO);
112526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
113526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
114526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
115526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Priority value.
116526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
117526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
118526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
119526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public int getPriority() {
120526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getOctet(PduHeaders.PRIORITY);
121526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
122526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
123526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
124526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Priority value.
125526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
126526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
127526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws InvalidHeaderValueException if the value is invalid.
128526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
129526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setPriority(int value) throws InvalidHeaderValueException {
130526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setOctet(value, PduHeaders.PRIORITY);
131526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
132526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
133526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
134526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get Date value.
135526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
136526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
137526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
138526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public long getDate() {
139526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getLongInteger(PduHeaders.DATE);
140526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
141526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
142526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
143526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set Date value in seconds.
144526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
145526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
146526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
147526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setDate(long value) {
148526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setLongInteger(value, PduHeaders.DATE);
149526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
150526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen}
151