/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.datatypes;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import com.vodafone360.people.service.io.rpg.RpgPushMessage;
import com.vodafone360.people.utils.LogUtils;
public class Conversation extends BaseDataType {
private String mConversationId; // the unique server-supplied conversation
// id
private Long mUserId; // the "from" user
private String mType = "c1";
private List<String> mTos;
private static final String CONVERSATION_ID = "conversation";
private static final String TOS = "tos";
public enum Tags {
USERID("userid"),
TYPE("type"),
PAYLOAD("payload");
private final String mTag;
private Tags(String tag) {
mTag = tag;
}
public String tag() {
return mTag;
}
private static Tags findTag(String tag) {
for (Tags tags : Tags.values()) {
if (tag.compareTo(tags.tag()) == 0) {
return tags;
}
}
return null;
}
}
/**
* Create ChatMessage from Hashtable generated by Hessian-decoder
*
* @param hash Hashtable containing ChatMessage parameters
*/
public void createFromHashtable(Hashtable<String, Object> hash) {
LogUtils.logI("Conversation.createFromHashtable() hash[" + hash.toString() + "]");
Enumeration<String> e = hash.keys();
while (e.hasMoreElements()) {
String key = e.nextElement();
Tags tag = Tags.findTag(key);
if (tag != null) {
setValue(tag, hash.get(key));
}
}
}
@SuppressWarnings("unchecked")
private void setValue(Tags key, Object value) {
switch (key) {
case PAYLOAD:
Hashtable payload = (Hashtable)value;
if (payload.containsKey(CONVERSATION_ID)) {
mConversationId = (String)payload.get(CONVERSATION_ID);
}
if (payload.containsKey(TOS)) {
mTos = (List<String>)payload.get(TOS);
}
break;
case USERID:
mUserId = (Long)value;
break;
case TYPE:
mType = (String)value;
break;
default:
LogUtils.logE("Conversation.setValue() key[" + key + "] value[" + value
+ "] Unsupported KEY");
}
}
public Conversation() {
}
protected Conversation(RpgPushMessage msg) {
createFromHashtable(msg.mHash);
}
@Override
public int getType() {
return CONVERSATION_DATA_TYPE;
}
public String getConversationId() {
return mConversationId;
}
public void setConversationId(String conversationId) {
this.mConversationId = conversationId;
}
public List<String> getTos() {
return mTos;
}
public void setTos(List<String> tos) {
this.mTos = tos;
}
public String getConversationType() {
return mType;
}
public Long getUserId() {
return mUserId;
}
public void setUserId(Long userId) {
this.mUserId = userId;
}
@Override
public String toString() {
final StringBuilder sb =
new StringBuilder("Conversation [CONVERSATION_ID=");
sb.append(CONVERSATION_ID);
sb.append(", TOS="); sb.append(TOS);
sb.append(", mConversationId="); sb.append(mConversationId);
sb.append(", mUserId="); sb.append(mUserId);
sb.append(", mTos="); sb.append(mTos);
sb.append(", mType="); sb.append(mType); sb.append("]");
return sb.toString();
}
}