/**
* 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.components;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.RefreshingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import br.gov.camara.edemocracia.portlets.priorizacao.model.Proposta;
import br.gov.camara.edemocracia.portlets.priorizacao.service.PriorizacaoServiceUtil;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.admin.pages.eixo.EixoPage;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.admin.pages.proposta.PropostaPage;
import br.gov.camara.edemocracia.portlets.priorizacao.ui.util.UIUtils;
import com.google.common.collect.Iterators;
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 PropostasRefreshingView extends RefreshingView<Proposta>{
private static final long serialVersionUID = 1L;
private long eixoId;
private static final Log LOG = LogFactoryUtil.getLog(PropostasRefreshingView.class);
public PropostasRefreshingView(String id,long eixoId) {
super(id);
this.eixoId = eixoId;
}
@Override
protected Iterator<IModel<Proposta>> getItemModels() {
return listarPropostas();
}
@Override
protected void populateItem(Item<Proposta> item) {
item.add(new Label("identificador",Model.of(item.getModelObject().getIdentificador())));
item.add(new Label("topico",Model.of(UIUtils.getTituloMBThread(item.getModelObject().getThreadId()))));
item.add(new Label("ementa",Model.of(item.getModelObject().getEmenta())));
item.add(new UpdatePropostaLink("updateProposta", item.getModelObject().getPropostaId()));
item.add(new ExcluirPropostaLink("excluirProposta", item.getModelObject().getPropostaId()));
}
private Iterator<IModel<Proposta>> listarPropostas() {
if(eixoId == 0l )
return Iterators.emptyIterator();
try{
List<Proposta> propostas = PriorizacaoServiceUtil.listarPropostasPorEixoId(eixoId);
ArrayList<IModel<Proposta>> retorno = new ArrayList<IModel<Proposta>>();
for(Proposta proposta : propostas){
retorno.add(new Model<Proposta>(proposta));
}
return retorno.iterator();
}catch(SystemException e){
return Iterators.emptyIterator();
}
}
public void recarregarPropostas(long eixoId){
this.eixoId = eixoId;
}
class UpdatePropostaLink extends Link<PropostaPage>{
private static final long serialVersionUID = 1L;
long propostaId;
public UpdatePropostaLink (String id,long propostaId){
super(id);
this.propostaId = propostaId;
}
@Override
public void onClick() {
PageParameters parameters = new PageParameters();
parameters.put("propostaId",String.valueOf(propostaId));
setResponsePage(PropostaPage.class,parameters);
}
}
class ExcluirPropostaLink extends Link<Void>{
private static final long serialVersionUID = 1L;
private long propostaId;
public ExcluirPropostaLink(String id,long propostaId) {
super(id);
this.propostaId = propostaId;
this.add(new SimpleAttributeModifier("onclick", "if(!confirm('Você realmente deseja fazer isso?')) return false;"));
}
@Override
public void onClick() {
excluirProposta(propostaId);
}
}
private void excluirProposta(long propostaId) {
try {
PriorizacaoServiceUtil.deleteProposta(propostaId);
info("Proposta excluida com sucesso!");
} catch (PortalException e) {
error("Erro ao excluir proposta");
LOG.error("Erro ao excluir proposta");
} catch (SystemException e) {
error("Erro ao excluir proposta");
LOG.error("Erro ao excluir proposta");
}
}
}