/**
* 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.priorizacao.ui.admin.pages.eixo;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import br.gov.camara.edemocracia.portlets.priorizacao.model.Eixo;
import br.gov.camara.edemocracia.portlets.priorizacao.service.PriorizacaoServiceUtil;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.components.CategoriaDropDown;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.components.EixosDropDown;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.util.UIUtils;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
public class EixoPage extends WebPage {
private long eixoId;
private Label cabecalho;
private FeedbackPanel mensagensFeedback;
private Form<Void> form;
private RequiredTextField<String> titulo;
private RequiredTextField<String> sumario;
private CategoriaDropDown categorias;
private EixosDropDown eixos;
private Link<GerenciarEixosPage> cancelar;
private static final Log LOG = LogFactoryUtil.getLog(EixoPage.class);
@Override
protected void onInitialize() {
super.onInitialize();
initCabecalho();
initMensagensFeedback();
initForm();
initTitulo();
initSumario();
initCategorias();
initEixos();
initCancelar();
}
private Eixo getModelObject() {
return (Eixo) getDefaultModelObject();
}
public EixoPage(PageParameters parameters) {
super(parameters);
if (parameters.containsKey("eixoId")) {
eixoId = Long.parseLong(parameters.getString("eixoId"));
getEixo();
}
}
private void getEixo() {
IModel<Eixo> modelo = new LoadableDetachableModel<Eixo>() {
@Override
protected Eixo load() {
try {
return PriorizacaoServiceUtil.getEixo(eixoId);
} catch (Exception e) {
throw new RuntimeException("Unable to get eixo");
}
}
};
setDefaultModel(modelo);
}
private void initCabecalho() {
String textoCabecalho = getModelObject() != null ? "Editar Eixo" : "Novo Eixo";
cabecalho = new Label("cabecalho",Model.of(textoCabecalho));
add(cabecalho);
}
private void initMensagensFeedback() {
mensagensFeedback = new FeedbackPanel("mensagensFeedback");
add(mensagensFeedback);
}
private void initForm() {
form = new Form<Void>("form") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
gravar();
}
};
add(form);
}
private void initTitulo() {
String texto = getModelObject() != null ? getModelObject().getTitulo()
: "";
titulo = new RequiredTextField<String>("titulo", Model.of(texto));
titulo.setOutputMarkupId(true);
form.add(titulo);
}
private void initSumario() {
String texto = getModelObject() != null ? getModelObject().getSumario()
: "";
sumario = new RequiredTextField<String>("sumario", Model.of(texto));
sumario.setOutputMarkupId(true);
form.add(sumario);
}
private void initCategorias() {
categorias = new CategoriaDropDown("categorias",
UIUtils.getScopeGroupId());
categorias.setRequired(true);
if (getModelObject() != null)
categorias.setDefaultModelObject(PriorizacaoServiceUtil
.getMBCategory(getModelObject().getCategoryId()));
form.add(categorias);
}
private void initEixos() {
IChoiceRenderer<Eixo> renderer = new IChoiceRenderer<Eixo>() {
private static final long serialVersionUID = 1L;
@Override
public String getIdValue(Eixo object, int index) {
return Long.toString(object.getEixoId());
}
@Override
public Object getDisplayValue(Eixo object) {
return "após " + object.getTitulo();
}
};
eixos = new EixosDropDown("eixos", UIUtils.getScopeGroupId(),renderer);
eixos.setNullValid(true);
if (getModelObject() != null) {
List<? extends Eixo> eixos = this.eixos.getChoices();
int index = eixos.indexOf(getModelObject());
if(index != 0)
this.eixos.setDefaultModelObject(eixos.get(index - 1));
}
form.add(eixos);
}
private void initCancelar() {
cancelar = new Link<GerenciarEixosPage>("cancelar") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
setResponsePage(GerenciarEixosPage.class);
}
};
form.add(cancelar);
}
private void gravar() {
String titulo = this.titulo.getModelObject();
String sumario = this.sumario.getModelObject();
long categoryId = this.categorias.getModelObject().getCategoryId();
long eixoAnteriorId = this.eixos.getModelObject() == null ? 0l
: this.eixos.getModelObject().getEixoId();
try {
if(getModelObject() != null){
PriorizacaoServiceUtil.updateEixo(
eixoId, sumario, titulo, eixoAnteriorId, categoryId);
} else {
PriorizacaoServiceUtil.addEixo(UIUtils.getScopeGroupId(),
categoryId, sumario, titulo, eixoAnteriorId);
}
info("Alterações gravadas com sucesso!");
} catch (SystemException e) {
LOG.error("Erro ao gravar alterações no eixo.", e);
error("Erro ao gravar alterações.");
} catch (PortalException e) {
LOG.error("Erro gravar alterações no eixo", e);
error("Erro ao gravar alterações");
}
setResponsePage(GerenciarEixosPage.class);
setRedirect(true);
}
}