1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 package org.marre.wap.push;
36
37 import java.io.ByteArrayOutputStream;
38 import java.io.IOException;
39 import java.io.OutputStream;
40
41 import org.marre.mime.MimeBodyPart;
42 import org.marre.sms.SmsUserData;
43 import org.marre.util.StringUtil;
44 import org.marre.wap.mms.MmsConstants;
45 import org.marre.wap.mms.MmsHeaderEncoder;
46
47 /***
48 * Simple MMS notification message sent over Sms.
49 *
50 * @version $Id: SmsMmsNotificationMessage.java,v 1.1 2004/12/14 19:55:00 c95men Exp $
51 */
52 public class SmsMmsNotificationMessage extends SmsWapPushMessage
53 {
54 private static final int DEFAULT_TRANSACTION_ID_LENGTH = 5;
55 private static final long DEFAULT_EXPIRY = 3 * 24 * 60 * 60;
56
57 protected String myTransactionId;
58 protected String myFrom;
59 protected String mySubject;
60 protected int myMessageClassId = MmsConstants.X_MMS_MESSAGE_CLASS_ID_PERSONAL;
61 protected long mySize;
62 protected long myExpiry;
63 protected String myContentLocation;
64
65 public SmsMmsNotificationMessage(String theContentLocation, long size)
66 {
67 super();
68
69 myContentLocation = theContentLocation;
70 myTransactionId = StringUtil.randString(DEFAULT_TRANSACTION_ID_LENGTH);
71 myExpiry = DEFAULT_EXPIRY;
72 mySize = size;
73 }
74
75 protected void writeNotificationTo(OutputStream os) throws IOException
76 {
77
78 MmsHeaderEncoder.writeHeaderXMmsMessageType(os, MmsConstants.X_MMS_MESSAGE_TYPE_ID_M_NOTIFICATION_IND);
79 MmsHeaderEncoder.writeHeaderXMmsTransactionId(os, myTransactionId);
80 MmsHeaderEncoder.writeHeaderXMmsMmsVersion(os, MmsConstants.X_MMS_MMS_VERSION_ID_1_0);
81
82 if ((myFrom != null) && (myFrom.length() > 0))
83 {
84 MmsHeaderEncoder.writeHeaderFrom(os, myFrom);
85 }
86
87 if ((mySubject != null) && (mySubject.length() > 0))
88 {
89 MmsHeaderEncoder.writeHeaderSubject(os, mySubject);
90 }
91
92 MmsHeaderEncoder.writeHeaderXMmsMessageClass(os, myMessageClassId);
93 MmsHeaderEncoder.writeHeaderXMmsMessageSize(os, mySize);
94 MmsHeaderEncoder.writeHeaderXMmsExpiryRelative(os, myExpiry);
95 MmsHeaderEncoder.writeHeaderContentLocation(os, myContentLocation);
96 }
97
98 public void setMessageClass(int messageClassId)
99 {
100 myMessageClassId = messageClassId;
101 }
102
103 public void setSubject(String theSubject)
104 {
105 mySubject = theSubject;
106 }
107
108 public void setExpiry(int i)
109 {
110 myExpiry = i;
111 }
112
113 public void setFrom(String string)
114 {
115 myFrom = string;
116 }
117
118 public void setTransactionId(String transactionId)
119 {
120 myTransactionId = transactionId;
121 }
122
123 public SmsUserData getUserData()
124 {
125 ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
126
127 try
128 {
129 writeNotificationTo(baos);
130 baos.close();
131 }
132 catch (IOException ex)
133 {
134 throw new RuntimeException(ex.getMessage());
135 }
136
137 myPushMsg = new MimeBodyPart(baos.toByteArray(), "application/vnd.wap.mms-message");
138 setXWapApplicationId("x-wap-application:mms.ua");
139
140 return super.getUserData();
141 }
142 }