package de.flower.rmt.ui.panel.activityfeed.renderer;
import de.flower.rmt.model.db.type.RSVPStatus;
import de.flower.rmt.model.db.type.activity.InvitationUpdateMessage;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author flowerrrr
*/
@Deprecated // left-over to be backwards compatible with old messages.
public class InvitationUpdateMessageRenderer extends AbstractEventMessageRenderer implements IMessageRenderer<InvitationUpdateMessage> {
private final static Logger log = LoggerFactory.getLogger(InvitationUpdateMessageRenderer.class);
private enum UpdateType {
USER_STATUS,
USER_COMMENT,
USER_STATUS_COMMENT,
MANAGER_STATUS,
MANAGER_COMMENT,
MANAGER_STATUS_COMMENT;
}
@Override
public String toString(final InvitationUpdateMessage message) {
String s;
String status = (message.getStatus() != null) ? new ResourceModel(RSVPStatus.getResourceKey(message.getStatus())).getObject() : "";
Object[] params = new Object[]{ getEventArticle(message), getEventLink(message), status};
UpdateType updateType = getUpdateType(message);
switch (updateType) {
case USER_STATUS:
s = new StringResourceModel("activity.invitation.user.status.${status}", Model.of(message), params).getObject();
break;
case USER_COMMENT:
s = new StringResourceModel("activity.invitation.user.comment", Model.of(message), params).getObject();
break;
case USER_STATUS_COMMENT:
s = new StringResourceModel("activity.invitation.user.status.${status}", Model.of(message), params).getObject();
s = new StringResourceModel("activity.invitation.user.statuscomment", Model.of(message), new Object[]{s}).getObject();
break;
case MANAGER_STATUS:
s = new StringResourceModel("activity.invitation.manager.status", Model.of(message), params).getObject();
break;
case MANAGER_COMMENT:
s = new StringResourceModel("activity.invitation.manager.comment", Model.of(message), params).getObject();
break;
case MANAGER_STATUS_COMMENT:
s = new StringResourceModel("activity.invitation.manager.status", Model.of(message), params).getObject();
s = new StringResourceModel("activity.invitation.manager.statuscomment", Model.of(message), new Object[]{s}).getObject();
break;
default:
throw new IllegalStateException("Unknown usertype");
}
log.debug(message.toString() + " -> [" + s + "]");
return s;
}
private static UpdateType getUpdateType(final InvitationUpdateMessage message) {
if (message.getManagerName() != null) {
if (message.getManagerComment() != null) {
if (message.getStatus() != null) {
return UpdateType.MANAGER_STATUS_COMMENT;
} else {
return UpdateType.MANAGER_COMMENT;
}
} else {
return UpdateType.MANAGER_STATUS;
}
} else {
if (message.getComment() != null) {
if (message.getStatus() != null) {
return UpdateType.USER_STATUS_COMMENT;
} else {
return UpdateType.USER_COMMENT;
}
} else {
return UpdateType.USER_STATUS;
}
}
}
@Override
public boolean canHandle(final Object message) {
return message instanceof InvitationUpdateMessage;
}
}