/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.chat.model.impl;
import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;
import static org.apache.commons.lang.StringEscapeUtils.escapeXml;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomMessage;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.json.JSONObject;
/**
* The model implementation for the ChatRoomMessage service. Represents a row in
* the "CDChat_ChatRoomMessage" database table, with each column
* mapped to a property of this class.
*
* <p>
* Helper methods and all application logic should be put in this class.
* Whenever methods are added, rerun ServiceBuilder to copy their definitions
* into the
* {@link br.gov.camara.edemocracia.portlets.chat.model.ChatRoomMessage}
* interface.
* </p>
*
* <p>
* Never reference this class directly. All methods that expect a chat room
* message model instance should use the {@link ChatRoomMessage} interface
* instead.
* </p>
*/
public class ChatRoomMessageImpl extends ChatRoomMessageBaseImpl {
/**
*
*/
private static final long serialVersionUID = 1L;
public ChatRoomMessageImpl() {
}
public JSONObject getJSON() {
JSONObject obj = JSONFactoryUtil.createJSONObject();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
obj.put("id", getChatMessageId());
obj.put("parent", getParentMessageId());
obj.put("type", getMessageType());
obj.put("ts", df.format(getMessageTS()));
obj.put("status", getMessageStatus());
obj.put("pub", getMessagePublic());
obj.put("admin", getAdminMessage());
obj.put("sender", escapeHtml(getSenderName()));
obj.put("senderId", getSenderId());
obj.put("senderType", getSenderType());
obj.put("recipientUser", escapeHtml(getRecipientUserName()));
obj.put("text", escapeHtml(getMessageText()));
obj.put("textType", getTextType());
return obj;
}
public String getFormattedText(TimeZone tz) {
StringBuilder sb = new StringBuilder();
sb.append("<em>(");
sb.append(getMessageTimestamp(tz));
sb.append(")</em> - ");
MessageType messageType = MessageType.withValue(getMessageType());
sb.append(messageType.formattedMessage(this));
return sb.toString();
}
private String getMessageTimestamp(TimeZone tz) {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy - HH:mm:ss");
df.setTimeZone(tz);
return df.format(getMessageTS());
}
public String getMessageXMLForExport(TimeZone tz) {
StringBuilder sb = new StringBuilder("<message>");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
sb.append("<timestamp>");
sb.append(df.format(getMessageTS()));
sb.append("</timestamp>");
sb.append("<sender");
if (getSenderType() != UserType.Standard.getValue()) {
sb.append(" type=\"");
sb.append(UserType.withValue(getSenderType()).getXMLAttribute());
sb.append("\" ");
}
sb.append(">");
sb.append(escapeXml(getSenderName()));
sb.append("</sender>");
if (getRecipientUserId() != 0) {
sb.append("<recipient>");
sb.append(escapeXml(getRecipientUserName()));
sb.append("</recipient>");
}
sb.append("<text>");
sb.append(escapeXml(getMessageText()));
sb.append("</text>");
sb.append("</message>");
return sb.toString();
}
public String getMessageHTMLForExport(TimeZone tz) {
StringBuilder sb = new StringBuilder("<li>");
// DateFormat df =
return sb.toString();
}
}