/** * 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.guiadiscussao.beans.admin; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.portlet.PortletConfig; import org.apache.commons.lang3.StringUtils; import br.gov.camara.edemocracia.portlets.guiadiscussao.model.Acao; import br.gov.camara.edemocracia.portlets.guiadiscussao.model.impl.AcaoImpl; import br.gov.camara.edemocracia.portlets.guiadiscussao.service.AcaoLocalServiceUtil; import br.gov.camara.edemocracia.portlets.guiadiscussao.util.BibliotecaImagensUtil; import com.liferay.faces.portal.context.LiferayFacesContext; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.language.LanguageUtil; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; @ManagedBean(name = "acaoAdminBean") @ViewScoped public class AcaoAdminBean implements Serializable { private static final long serialVersionUID = 6480110332533932448L; private Acao acao; // Utilizados para componente <componente:linkPainel/> private Boolean urlExterna; private String linkComunidade; private String linkExterno; private List<FileEntryDisplay> icones; private FileEntryDisplay iconeSelecionado; @ManagedProperty(value = "#{faseAdminBean}") private FaseAdminBean faseAdmin; private static final Log LOG = LogFactoryUtil.getLog(AcaoAdminBean.class); public AcaoAdminBean() { this.acao = new AcaoImpl(); } @PostConstruct private void init() { carregarIconesDaBiblioteca(); } public void novaAcao(Long faseId) { this.acao = new AcaoImpl(); this.acao.setFaseId(faseId); this.urlExterna = Boolean.FALSE; this.linkComunidade = ""; this.linkExterno = ""; this.iconeSelecionado = null; } public void editarAcao() { Long acaoId = Long.parseLong(LiferayFacesContext.getInstance() .getRequestParameter("acaoId")); try { Acao acao = AcaoLocalServiceUtil.getAcao(acaoId); if (acao == null) { LiferayFacesContext.getInstance().addGlobalErrorMessage( "#{i18n['acao-nao-encontrada']}"); } else { this.acao = acao; this.urlExterna = this.acao.getUrlExterna(); if (this.acao.getUrlExterna()) { this.linkExterno = acao.getUrlLink(); this.linkComunidade = ""; } else { this.linkComunidade = acao.getUrlLink(); this.linkExterno = ""; } long iconeId = acao.getIconeId(); if (iconeId != 0) { try { FileEntryDisplay icone = BibliotecaImagensUtil .getFileEntryDisplay(iconeId); iconeSelecionado = icone; } catch (PortalException e) { iconeSelecionado = BibliotecaImagensUtil .getImagemPadrao(); } } } } catch (PortalException e) { LiferayFacesContext.getInstance().addGlobalErrorMessage( "#{i18n['acao-nao-encontrada']}"); LOG.error("Erro ao editar ação.Ação não encontrada.", e); } catch (SystemException e) { throw new RuntimeException(e); } } public void salvarAcao() { if(validarDados()){ acao.setUrlExterna(urlExterna); if (urlExterna) { acao.setUrlLink(linkExterno); } else { acao.setUrlLink(linkComunidade); } acao.setIconeId(iconeSelecionado.getFileEntryId()); try { if (this.acao.getAcaoId() == 0) { AcaoLocalServiceUtil.addAcao(acao); } else { AcaoLocalServiceUtil.updateAcao(acao, true); } } catch (SystemException e) { throw new RuntimeException(e); } this.acao = new AcaoImpl(); urlExterna = false; linkExterno = ""; linkComunidade = ""; this.iconeSelecionado = null; faseAdmin.atualizaFases(); } } public String excluirAcao() { Long acaoId = Long.parseLong(LiferayFacesContext.getInstance() .getRequestParameter("acaoId")); try { Acao acao = AcaoLocalServiceUtil.getAcao(acaoId); if (acao != null) { AcaoLocalServiceUtil.excluirAcao(acao.getAcaoId()); LiferayFacesContext.getInstance().addGlobalInfoMessage( "#{i18n['acao-excluida-sucesso']}"); } else { LiferayFacesContext.getInstance().addGlobalErrorMessage( "#{i18n['acao-nao-encontrada']}"); } } catch (PortalException e) { LiferayFacesContext.getInstance().addGlobalErrorMessage( "#{i18n['acao-nao-encontrada']}"); LOG.error("Erro ao excluir ação.", e); } catch (SystemException e) { throw new RuntimeException(e); } faseAdmin.atualizaFases(); // Força a reconstrução da árvore e componentes return "index?faces-redirect=true"; } /** * Salva a ordem das ações da fase selecionada */ public void salvarOrdenacao() { DadosFaseDisplay dadosFase = faseAdmin.getDadosFaseSelecionada(); // Mapeando da nova ordenação int ordem = 1; Map<Long, Integer> novaOrdenacao = new HashMap<Long, Integer>(); for (Acao acao : dadosFase.getAcoes()) { novaOrdenacao.put(acao.getAcaoId(), ordem); ordem++; } try { AcaoLocalServiceUtil.atualizarOrdenacaoDasAcoes(dadosFase.getFase() .getFaseId(), novaOrdenacao); } catch (SystemException e) { throw new RuntimeException(e); } faseAdmin.atualizaFases(); } /** * Retorna url da imagem * * @return */ public String getUrlIconeAcao(long iconeId) { return BibliotecaImagensUtil.getUrlImagem(iconeId); } private void carregarIconesDaBiblioteca() { this.icones = BibliotecaImagensUtil.getTodosIconesAcoes(); } /** * Valida os dados obrigatórios da ação * @return */ private boolean validarDados() { Locale locale = LiferayFacesContext.getInstance().getLocale(); PortletConfig config = LiferayFacesContext.getInstance() .getPortletConfig(); boolean dadosOk = true; if (urlExterna) { if (StringUtils.isBlank(linkExterno)) { LiferayFacesContext.getInstance().addGlobalErrorMessage( "digite-url-externa"); dadosOk = false; } } if (StringUtils.isBlank(acao.getTexto())) { LiferayFacesContext.getInstance().addGlobalErrorMessage( LanguageUtil.get(config, locale, "texto-acao-obrigatorio")); dadosOk = false; } return dadosOk; } public Acao getAcao() { return acao; } public void setAcao(Acao acao) { this.acao = acao; } public FaseAdminBean getFaseAdmin() { return faseAdmin; } public void setFaseAdmin(FaseAdminBean faseAdmin) { this.faseAdmin = faseAdmin; } public String getLinkComunidade() { return linkComunidade; } public void setLinkComunidade(String linkComunidade) { this.linkComunidade = linkComunidade; } public String getLinkExterno() { return linkExterno; } public void setLinkExterno(String linkExterno) { this.linkExterno = linkExterno; } public Boolean getUrlExterna() { return urlExterna; } public void setUrlExterna(Boolean urlExterna) { this.urlExterna = urlExterna; } public List<FileEntryDisplay> getIcones() { return icones; } public void setIcones(List<FileEntryDisplay> icones) { this.icones = icones; } public FileEntryDisplay getIconeSelecionado() { return iconeSelecionado; } public void setIconeSelecionado(FileEntryDisplay iconeSelecionado) { this.iconeSelecionado = iconeSelecionado; } }