/**
* 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 br.gov.camara.edemocracia.portlets.chat.model.ChatRoomMessage;
public enum MessageType {
Null(-1) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "";
}
},
Standard(0) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return standardMessage(msg);
}
},
UserEntered(1) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return userEnteredMessage(msg);
}
},
UserLeft(2) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "<strong>" + escapeHtml(msg.getSenderName()) + "</strong> saiu da sala";
}
},
UserPromoted(3) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return userEnteredMessage(msg);
}
},
UserBanned(4) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "<strong>" + escapeHtml(msg.getSenderName()) + "</strong> foi banido da sala";
}
},
UserUnBanned(5) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "<strong>" + escapeHtml(msg.getSenderName()) + "</strong> não está mais banido";
}
},
AwatingApproval(6) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "Sua mensagem está aguardando a aprovação do moderador";
}
},
Rejected(7) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return standardMessage(msg);
}
},
Approved(8) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return standardMessage(msg);
}
},
RoomClosed(9) {
@Override
public String formattedMessage(ChatRoomMessage msg) {
return "Esta sala foi fechada";
}
};
private int value;
private MessageType(int value) {
this.value = value;
}
public static MessageType withValue(int value) {
MessageType[] types = MessageType.values();
MessageType result = Standard;
for (MessageType type : types) {
if (type.getValue() == value) {
result = type;
}
}
return result;
}
public int getValue() {
return value;
}
public abstract String formattedMessage(ChatRoomMessage msg);
protected String standardMessage(ChatRoomMessage msg) {
StringBuilder sb = new StringBuilder("<strong>");
MessageTextType textType = MessageTextType.withValue(msg.getTextType());
sb.append(escapeHtml(msg.getSenderName()));
sb.append("</strong> ");
if (msg.getRecipientUserId() != 0) {
sb.append(textType.getVerb());
sb.append(" ");
String recipient = msg.getRecipientUserName();
if (recipient.length() > 0) {
if (!msg.isMessagePublic()) {
sb.append("reservadamente ");
}
sb.append(textType.getPreposition());
sb.append(" <strong>");
sb.append(escapeHtml(recipient));
sb.append("</strong> ");
}
}
sb.append(": ");
sb.append(escapeHtml(msg.getMessageText()));
return sb.toString();
}
protected String userEnteredMessage(ChatRoomMessage msg) {
return "<strong>" + escapeHtml(msg.getSenderName()) + "</strong> entrou na sala";
}
}