package fr.openwide.core.wicket.more.console.maintenance.gestion.page;
import static fr.openwide.core.jpa.more.property.JpaMorePropertyIds.MAINTENANCE;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.openwide.core.commons.util.functional.Predicates2;
import fr.openwide.core.spring.property.service.IPropertyService;
import fr.openwide.core.wicket.more.condition.Condition;
import fr.openwide.core.wicket.more.console.maintenance.template.ConsoleMaintenanceTemplate;
import fr.openwide.core.wicket.more.console.template.ConsoleTemplate;
import fr.openwide.core.wicket.more.markup.html.basic.EnclosureContainer;
public class ConsoleMaintenanceGestionPage extends ConsoleMaintenanceTemplate {
private static final long serialVersionUID = 5922671571871437558L;
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleMaintenanceGestionPage.class);
@SpringBean
private IPropertyService propertyService;
public ConsoleMaintenanceGestionPage(PageParameters parameters) {
super(parameters);
addHeadPageTitleKey("console.maintenance.gestion");
IModel<Boolean> maintenanceModel = new LoadableDetachableModel<Boolean>() {
private static final long serialVersionUID = 1L;
@Override
protected Boolean load() {
return propertyService.get(MAINTENANCE);
}
};
add(
new EnclosureContainer("introMaintenanceActivee")
.condition(Condition.predicate(maintenanceModel, Predicates2.isTrue())),
new EnclosureContainer("introMaintenanceDesactivee")
.condition(Condition.predicate(maintenanceModel, Predicates2.isFalse())),
new Link<Void>("activerMaintenance") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
try {
propertyService.set(MAINTENANCE, true);
Session.get().success(getString("console.maintenance.gestion.maintenance.activer.success"));
} catch (Exception e) {
LOGGER.error("Erreur lors de l'activation du mode maintenance.", e);
Session.get().error(getString("common.error.unexpected"));
}
}
}
.add(Condition.predicate(maintenanceModel, Predicates2.isFalse()).thenShow()),
new Link<Void>("desactiverMaintenance") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
try {
propertyService.set(MAINTENANCE, false);
Session.get().success(getString("console.maintenance.gestion.maintenance.desactiver.success"));
} catch (Exception e) {
LOGGER.error("Erreur lors de la désactivation du mode maintenance.", e);
Session.get().error(getString("common.error.unexpected"));
}
}
}
.add(Condition.predicate(maintenanceModel, Predicates2.isTrue()).thenShow())
);
}
@Override
protected Class<? extends ConsoleTemplate> getMenuItemPageClass() {
return ConsoleMaintenanceGestionPage.class;
}
}