Package br.gov.serpro.ouvidoria.struts.action.aprendizado

Source Code of br.gov.serpro.ouvidoria.struts.action.aprendizado.AtualizarBoletimAction

/*
* Sistema de Ouvidoria: um canal através do qual os usuários
* podem encaminhar suas reclamações, elogios e sugestões.
*
* Copyright (C) 2011 SERPRO
*
* Este programa é software livre; você pode redistribuí-lo e/ou
* modificá-lo sob os termos da Licença Pública Geral GNU, conforme
* publicada pela Free Software Foundation; tanto a versão 2 da
* Licença como (a seu critério) qualquer versão mais nova.
*
* Este programa é distribuído na expectativa de ser útil, mas SEM
* QUALQUER GARANTIA; sem mesmo a garantia implícita de
* COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM
* PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
* detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU,
* sob o título "LICENCA.txt", junto com esse programa. Se não,
* acesse o Portal do Software Público Brasileiro no endereço
* http://www.softwarepublico.gov.br/ ou escreva para a Fundação do
* Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston,
* MA 02111-1301, USA.
*
* Contatos através do seguinte endereço internet:
* http://www.serpro.gov.br/sistemaouvidoria/
*/
package br.gov.serpro.ouvidoria.struts.action.aprendizado;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;

import br.gov.serpro.ouvidoria.controller.aprendizado.BoletimCtrl;
import br.gov.serpro.ouvidoria.dao.DaoException;
import br.gov.serpro.ouvidoria.model.Boletim;
import br.gov.serpro.ouvidoria.model.Funcionario;
import br.gov.serpro.ouvidoria.model.Orgao;
import br.gov.serpro.ouvidoria.struts.DispatchActionSupport;
import br.gov.serpro.ouvidoria.util.Constants;
import br.gov.serpro.ouvidoria.util.Utilitario;
import de.laures.cewolf.CewolfException;
import de.laures.cewolf.ChartImage;
import de.laures.cewolf.storage.TransientSessionStorage;

/**
* Administrar as funcionalidades de Boleim
*
* @author SERPRO
* @version $Revision: 1.1.2.4 $, $Date: 2011/10/20 15:30:36 $
* @version 0.1, 2005/02/01
*/
public class AtualizarBoletimAction extends DispatchActionSupport {

    public ActionForward listar(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        DynaActionForm _form = (DynaActionForm) form;
        BoletimCtrl defaultCtrl = new BoletimCtrl(getDaoFactory());

        Orgao org = this.getOrgao(request);
       
        List results = defaultCtrl.obterBoletinsFiltro(Utilitario
                .trataPlic(_form.getString("txtBusca")), _form
                .getString("txtPeriodoIni"), _form.getString("txtPeriodoFim"),
                org);

        request.setAttribute("listar", results);

        return mapping.findForward("listar");
    }

    public ActionForward exibir(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        Boletim object = (Boletim) request.getSession().getAttribute(
                Constants.BOLETIM);
        if (object == null) {
            object = new Boletim();
        }

        Funcionario funcionario = (Funcionario) this.getFuncionario(request);
       
        request.getSession().setAttribute(Constants.SS_FUNCIONARIO, funcionario);
       
       
        request.setAttribute(Constants.BOLETIM, object);

        return mapping.findForward("exibir");
    }

    public ActionForward exibirDetalhe(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        final String id = request.getParameter("id");

        Boletim object = null;
        if (id == null || id.trim().length() == 0) {
            object = new Boletim();
        } else {
            BoletimCtrl defaultCtrl = new BoletimCtrl(getDaoFactory());
            object = defaultCtrl.get(new Long(id));
        }

        request.setAttribute("diretorio", this.getOrgao(request)
                .getConfiguracoes().getNomeDiretorioOrgao());
        request.setAttribute("object", object);
        request.setAttribute("function", request.getParameter("function"));

        return mapping.findForward("exibirDetalhe");
    }

    public ActionForward gerar(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws DaoException {

        ActionMessages msgs = new ActionMessages();

        final String nome = request.getParameter("nome");
        final String numero = request.getParameter("numero");
        final String area = request.getParameter("area");
        final String telefone = request.getParameter("telefone");
        final String conteudo = request.getParameter("conteudo");

        final String cabecalho = request.getParameter("cabecalho");
        final String grafico = request.getParameter("grafico");
        final String tabela = request.getParameter("tabela");

        BoletimCtrl defaultCtrl = new BoletimCtrl(getDaoFactory());

        if (nome == null || nome.trim().length() == 0) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.nome"));
        }

        Integer num = null;
        try {
            if (numero != null && numero.trim().length() > 0) {
                num = new Integer(numero);
            } else {
                msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                        "error.atualizarBoletim.numero"));
            }
        } catch (NumberFormatException nfe) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.numero"));
        }

        if (area == null || area.trim().length() == 0) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.area"));
        }

        if (telefone == null || telefone.trim().length() == 0) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.telefone"));
        }

        if (conteudo == null || conteudo.trim().length() == 0) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.conteudo"));
        }

        if (num != null
                && defaultCtrl.existeNumeroCadastrado(getOrgao(request), num)) {
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.chaveDuplicada"));
        }

        Boolean possuiCabecalho = Boolean.TRUE;
        if (cabecalho == null) {
            possuiCabecalho = Boolean.FALSE;
        }

        Boolean possuiGrafico = Boolean.TRUE;
        if (grafico == null) {
            possuiGrafico = Boolean.FALSE;
        }

        Boolean possuiTabela = Boolean.TRUE;
        if (tabela == null) {
            possuiTabela = Boolean.FALSE;
        }

//      Recupera o Funcionário logado
        Funcionario funcionario = (Funcionario) this.getFuncionario(request)
     
        Boletim boletim = defaultCtrl.gerar(getOrgao(request), funcionario,
                nome, num, area, telefone, conteudo, possuiCabecalho,
                possuiGrafico, possuiTabela);

        request.getSession().setAttribute(Constants.BOLETIM, boletim);       
       
        request.getSession().setAttribute(Constants.SS_FUNCIONARIO, funcionario);

       
        if (msgs.isEmpty()) {
            return mapping.findForward("exibir");
        }

        saveErrors(request, msgs);
        return mapping.findForward("error");

    }

    public ActionForward salvar(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws DaoException {

        ActionMessages msgs = new ActionMessages();

        BoletimCtrl defaultCtrl = new BoletimCtrl(getDaoFactory());

        Boletim boletim = (Boletim) request.getSession().getAttribute(
                Constants.BOLETIM);

        boolean erroLogica = false;
        try {
            defaultCtrl.save(boletim);

            final String html = request.getParameter("htmlBoletim");
            final String imgUrl = (String) request.getSession().getAttribute(
                    Constants.IMAGE_CHART);
            final String contextUrl = request.getContextPath();
           
            try {
                final String domain = request.getScheme()
                        + "://"
                                .concat(request.getServerName())
                                .concat(":")
                                .concat(String.valueOf(request.getServerPort()));
                 
                final TransientSessionStorage storage = new TransientSessionStorage();
                storage.init(this.getServlet().getServletContext());

                final String imgUrls = imgUrl;

                final int posI = imgUrls.indexOf("?") + 5;
                final int posF = imgUrls.indexOf("&", posI);

                final String imgId = imgUrls.substring(posI, posF);

                final ChartImage chartImages = storage.getChartImage(imgId,
                        request);

                defaultCtrl.criaArquivoBoletim(getOrgao(request), boletim,
                        html, chartImages.getBytes(), domain, contextUrl);

            } catch (CewolfException e1) {
                erroLogica = true;
                msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                        "error.atualizarBoletim.arquivo"));
            }

        } catch (IOException e) {
            erroLogica = true;
            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                    "error.atualizarBoletim.arquivo"));
        } catch (DaoException e) {
            String errorMessage = e.getMessage();
            if (errorMessage != null
                    && errorMessage.toLowerCase().indexOf("duplicate key") >= 0) {
                erroLogica = true;
                msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                        "error.atualizarBoletim.chaveDuplicada"));
            } else {
                throw e;
            }
        }

        if (erroLogica) {
            saveErrors(request, msgs);
            return mapping.findForward("error");
        }

        msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                "message.atualizarBoletim.incluir"));

        saveMessages(request, msgs);

        return mapping.findForward("success");
    }

    public ActionForward publicar(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws DaoException {

        DynaActionForm _form = (DynaActionForm) form;

        BoletimCtrl defaultCtrl = new BoletimCtrl(getDaoFactory());

        ActionMessages msgs = new ActionMessages();

        Boletim boletim = defaultCtrl.get(new Long(request.getParameter("id")));

        //Se estava true e virou false
        if (boletim.getPublicar().booleanValue()
                && _form.getString("publicar").length() == 0) {
            defaultCtrl.publicar(boletim.getId(), Boolean.FALSE);
        }

        //Se estava false e virou true
        if (!boletim.getPublicar().booleanValue()
                && _form.getString("publicar").compareToIgnoreCase("true") == 0) {
            defaultCtrl.publicar(boletim.getId(), Boolean.TRUE);
        }

        boletim = defaultCtrl.get(new Long(request.getParameter("id")));
        request.setAttribute("diretorio", this.getOrgao(request)
                .getConfiguracoes().getNomeDiretorioOrgao());
        request.setAttribute("object", boletim);
        request.setAttribute("function", request.getParameter("function"));

        msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                "message.atualizarBoletim.publicar"));

        saveMessages(request, msgs);

        return mapping.findForward("success");
    }

}
TOP

Related Classes of br.gov.serpro.ouvidoria.struts.action.aprendizado.AtualizarBoletimAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.