Message.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:4k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007-2008 Esmertec AG.
  3.  * Copyright (C) 2007-2008 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. package com.android.im.engine;
  18. import java.util.Date;
  19. import android.os.Parcel;
  20. import android.os.Parcelable;
  21. /**
  22.  * Represents an instant message send between users.
  23.  */
  24. public class Message implements Parcelable {
  25.     private String mId;
  26.     private Address mFrom;
  27.     private Address mTo;
  28.     private String mBody;
  29.     private Date mDate;
  30.     /**
  31.      *
  32.      * @param msg
  33.      * @throws NullPointerException if msg is null.
  34.      */
  35.     public Message(String msg) {
  36.         if (msg == null) {
  37.             throw new NullPointerException("null msg");
  38.         }
  39.         mBody = msg;
  40.     }
  41.     public Message(Parcel source) {
  42.         mId = source.readString();
  43.         mFrom = AddressParcelHelper.readFromParcel(source);
  44.         mTo = AddressParcelHelper.readFromParcel(source);
  45.         mBody = source.readString();
  46.         long time = source.readLong();
  47.         if(time != -1) {
  48.             mDate = new Date(time);
  49.         }
  50.     }
  51.     /**
  52.      * Gets an identifier of this message. May be <code>null</code> if the
  53.      * underlying protocol doesn't support it.
  54.      *
  55.      * @return the identifier of this message.
  56.      */
  57.     public String getID() {
  58.         return mId;
  59.     }
  60.     /**
  61.      * Gets the body of this message.
  62.      *
  63.      * @return the body of this message.
  64.      */
  65.     public String getBody() {
  66.         return mBody;
  67.     }
  68.     /**
  69.      * Gets the address where the message is sent from.
  70.      *
  71.      * @return the address where the message is sent from.
  72.      */
  73.     public Address getFrom() {
  74.         return mFrom;
  75.     }
  76.     /**
  77.      * Gets the address where the message is sent to.
  78.      *
  79.      * @return the address where the message is sent to.
  80.      */
  81.     public Address getTo() {
  82.         return mTo;
  83.     }
  84.     /**
  85.      * Gets the date time associated with this message. If it's a message sent
  86.      * from this client, the date time is when the message is sent. If it's a
  87.      * message received from other users, the date time is either when the
  88.      * message was received or sent, depending on the underlying protocol.
  89.      *
  90.      * @return the date time.
  91.      */
  92.     public Date getDateTime() {
  93.         if (mDate == null) {
  94.             return null;
  95.         }
  96.         return new Date(mDate.getTime());
  97.     }
  98.     public void setID(String id) {
  99.         mId = id;
  100.     }
  101.     public void setBody(String body) {
  102.         mBody = body;
  103.     }
  104.     public void setFrom(Address from) {
  105.         mFrom = from;
  106.     }
  107.     public void setTo(Address to) {
  108.         mTo = to;
  109.     }
  110.     public void setDateTime(Date dateTime) {
  111.         long time = dateTime.getTime();
  112.         if (mDate == null) {
  113.             mDate = new Date(time);
  114.         } else {
  115.             mDate.setTime(time);
  116.         }
  117.     }
  118.     public String toString() {
  119.         return "From: " + mFrom.getScreenName() + " To: " + mTo.getScreenName()
  120.                 + " " + mBody;
  121.     }
  122.     public void writeToParcel(Parcel dest, int flags) {
  123.         dest.writeString(mId);
  124.         AddressParcelHelper.writeToParcel(dest, mFrom);
  125.         AddressParcelHelper.writeToParcel(dest, mTo);
  126.         dest.writeString(mBody);
  127.         dest.writeLong(mDate == null ? -1 : mDate.getTime());
  128.     }
  129.     public int describeContents() {
  130.         return 0;
  131.     }
  132.     public static final Parcelable.Creator<Message> CREATOR = new Parcelable.Creator<Message>() {
  133.         public Message createFromParcel(Parcel source) {
  134.             return new Message(source);
  135.         }
  136.         public Message[] newArray(int size) {
  137.             return new Message[size];
  138.         }
  139.     };
  140. }