source: trunk/hiptop/pester/net/sabi/pester/Alarm.java@ 237

Last change on this file since 237 was 237, checked in by Nicholas Riley, 18 years ago

Doesn't do much yet.

File size: 2.3 KB
Line 
1package net.sabi.pester;
2
3import java.io.ByteArrayInputStream;
4import java.io.ByteArrayOutputStream;
5import java.io.DataInputStream;
6import java.io.DataOutputStream;
7import danger.internal.Date;
8import danger.util.StdActiveObject;
9
10public class Alarm extends StdActiveObject {
11 private static final int VERSION_1 = 1;
12
13 // persisted
14 private String mMessage;
15 private boolean mUsesPeriod;
16 private long mPeriod;
17 private Date mDate;
18
19 // transient
20 private int mStatus;
21
22 public Alarm() {
23 mStatus = STATUS_INVALID;
24 }
25
26 public String getMessage() {
27 return mMessage;
28 }
29 public long getPeriod() {
30 return mPeriod;
31 }
32 public boolean getUsesPeriod() {
33 return mUsesPeriod;
34 }
35 public Date getDate() {
36 return mDate;
37 }
38
39 public void setMessage(String message) {
40 mMessage = message;
41 }
42 public void setPeriod(long period) {
43 mUsesPeriod = true;
44 mPeriod = period;
45 }
46 public void setDate(Date date) {
47 mUsesPeriod = false;
48 mDate = date;
49 }
50
51 public byte[] toByteArray() {
52 try {
53 ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
54 DataOutputStream dataStream = new DataOutputStream(byteStream);
55
56 dataStream.writeByte(VERSION_1);
57 dataStream.writeUTF(mMessage);
58 dataStream.writeLong(mPeriod);
59 dataStream.writeInt(mDate.getUnixTimeGMT());
60 dataStream.writeBoolean(mUsesPeriod);
61 dataStream.flush();
62 return byteStream.toByteArray();
63 } catch (Exception e) {
64 // XXX do something
65 }
66 return null;
67 }
68
69 public void fromByteArray(byte[] data) {
70 try {
71 ByteArrayInputStream byteStream = new ByteArrayInputStream(data);
72 DataInputStream dataStream = new DataInputStream(byteStream);
73
74 byte version = dataStream.readByte();
75 if (version != VERSION_1) {
76 // XXX barf
77 }
78 mMessage = dataStream.readUTF();
79 mPeriod = dataStream.readLong();
80 mUsesPeriod = dataStream.readBoolean();
81 } catch (Exception e) {
82 // XXX do something
83 }
84 }
85
86 void beginEditing() {
87 mStatus = STATUS_EDITING;
88 }
89
90 void endEditing() {
91 mStatus = STATUS_SCHEDULED;
92 }
93
94 public String toString() {
95 return mMessage;
96 }
97
98 public static final int STATUS_INVALID = 0;
99 public static final int STATUS_EDITING = 1;
100 public static final int STATUS_SCHEDULED = 2;
101 public static final int STATUS_EXPIRED = 3;
102}
Note: See TracBrowser for help on using the repository browser.