package org.openbakery.racecontrol.plugin.admin.messages.web;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.openbakery.racecontrol.persistence.PersistenceException;
import org.openbakery.racecontrol.plugin.admin.messages.data.AdminMessage;
import org.openbakery.racecontrol.plugin.admin.messages.service.AdminMessagesService;
import org.openbakery.racecontrol.service.ServiceLocateException;
import org.openbakery.racecontrol.service.ServiceLocator;
import org.openbakery.racecontrol.web.RaceControlPage;
import org.openbakery.racecontrol.web.bean.Visibility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class AdminMessagesPage extends RaceControlPage {
public AdminMessagesPage(PageParameters parameters) {
super(parameters);
}
private Logger log = LoggerFactory.getLogger(AdminMessagesPage.class);
public AdminMessagesService getAdminMessageService() {
ServiceLocator serviceLocator = getSession().getServiceLocator();
try {
return (AdminMessagesService) serviceLocator.getService(AdminMessagesService.class);
} catch (ServiceLocateException e) {
error("Internal error!");
log.error(e.getMessage(), e);
}
return null;
}
public void store(AdminMessage message) {
try {
getAdminMessageService().store(message);
} catch (PersistenceException e) {
error("Unable to store the message");
log.error(e.getMessage(), e);
}
}
public void delete(AdminMessage message) {
try {
getAdminMessageService().delete(message);
} catch (PersistenceException e) {
error("Unable to remove the message");
log.error(e.getMessage(), e);
}
}
public void sendToAllUsers(AdminMessage message) {
if (isClientConnected()) {
getAdminMessageService().showAdminMessage(message);
} else {
error("Client is not connected, so cannot send message");
}
}
private boolean isClientConnected() {
return getSession().getServiceLocator().getRaceService().getClient().isConnected();
}
@Override
public Visibility getVisibility() {
return Visibility.AUTHENTICATED;
}
public void hideAllMessages() {
if (isClientConnected()) {
getAdminMessageService().hideAllMessages();
} else {
error("Client is not connected, so cannot send message");
}
}
}