/*
* GT-Mconf: Multiconference system for interoperable web and mobile
* http://www.inf.ufrgs.br/prav/gtmconf
* PRAV Labs - UFRGS
*
* This file is part of Mconf-Mobile.
*
* Mconf-Mobile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Mconf-Mobile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Mconf-Mobile. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mconf.bbb.chat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.flazr.amf.Amf0Object;
public class ChatMessage {
/*
* newMessage = event.message
* + "|" + attributes.username
* + "|" + event.color
* + "|" + event.time
* + "|" + event.language
* + "|" + attributes.userid;
*/
private String message;
private String username;
private String color;
private String time;
private String language;
private String userId;
public ChatMessage() {
color = "0";
time = new SimpleDateFormat("HH:mm").format(System.currentTimeMillis());
language = "en";
}
public ChatMessage(Object object) {
if (object instanceof String)
decode((String) object);
else if (object instanceof Amf0Object)
decode((Amf0Object) object);
}
// {message=hi, username=rapo, color=0, time=11:52, language=it, userid=4865, classname=org.bigbluebutton.conference.service.chat.ChatObject}]
private void decode(Amf0Object obj) {
message = (String) obj.get("message");
username = (String) obj.get("username");
color = (String) obj.get("color");
time = (String) obj.get("time");
language = (String) obj.get("language");
userId = (String) obj.get("userid");
ChatModule.MESSAGE_ENCODING = ChatModule.MESSAGE_ENCODING_TYPED_OBJECT;
}
private void decode(String s) throws NumberFormatException {
List<String> param = Arrays.asList(s.split("\\|"));
message = param.get(0);
username = param.get(1);
Collections.reverse(param);
userId = param.get(0);
language = param.get(1);
time = param.get(2);
color = param.get(3);
ChatModule.MESSAGE_ENCODING = ChatModule.MESSAGE_ENCODING_STRING;
}
public Object encode() {
switch (ChatModule.MESSAGE_ENCODING) {
case ChatModule.MESSAGE_ENCODING_STRING: return encodeString();
case ChatModule.MESSAGE_ENCODING_TYPED_OBJECT: return encodeTypedObject();
default: return encodeTypedObject();
}
}
private Object encodeTypedObject() {
Amf0Object obj = new Amf0Object();
obj.put("message", message);
obj.put("username", username);
obj.put("color", color);
obj.put("time", time);
obj.put("language", language);
obj.put("userid", userId);
obj.put("classname", "org.bigbluebutton.conference.service.chat.ChatObject");
return obj;
}
private Object encodeString() {
StringBuilder sb = new StringBuilder();
sb.append(message)
.append("|")
.append(username)
.append("|")
.append(color)
.append("|")
.append(time)
.append("|")
.append(language)
.append("|")
.append(userId);
return sb.toString();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getUserId() {
return userId;
}
public void setUserId(String userid) {
this.userId = userid;
}
@Override
public String toString() {
return "ChatMessage [color=" + color + ", language=" + language
+ ", message=" + message + ", time=" + time + ", userid="
+ userId + ", username=" + username + "]";
}
}