View Javadoc

1   /*
2    * Criado em 28/10/2004
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.HashSet;
8   import java.util.List;
9   import java.util.Set;
10  
11  import javax.servlet.http.HttpServletRequest;
12  
13  import comum.database.Dao;
14  import comum.util.Pagina;
15  
16  import ecar.exception.ECARException;
17  import ecar.pojo.FuncaoFun;
18  
19  /**
20   * @author felipev
21   */
22  public class FuncaoDao extends Dao {
23  
24    /**
25     * Construtor. Chama o Session factory do Hibernate
26     */
27    public FuncaoDao(HttpServletRequest request) {
28      super();
29      this.request = request;
30    }
31  
32    /**
33     * Utiliza o método excluir da classe Dao realizando antes validações de
34     * relacionamento da função com registros em outras tabelas.
35     * @author n/c
36     * @param situacao
37     * @throws ECARException
38     */
39    public void excluir(FuncaoFun funcao) throws ECARException {
40      try {
41        boolean excluir = true;
42        if (contar(funcao.getEstruturaFuncaoEttfs()) > 0) {
43          excluir = false;
44          throw new ECARException("funcao.exclusao.erro.estruturaFuncaoEtts");
45        }
46        if (excluir)
47          super.excluir(funcao);
48      } catch (ECARException e) {
49        this.logger.error(e);
50        throw e;
51      }
52    }
53  
54    /**
55     * Recebe um array com os Códigos dos Tipos de Função e retorna um Set com
56     * objetos TipoFuncAcompTpfa correspondentes a estes códigos
57     * @author n/c
58     * @param funcoes array com os Códigos dos Tipos de Função
59     * @return Set objetos TipoFuncAcompTpfa
60     */
61    public Set getSetFuncoes(String funcoes[]) throws ECARException {
62      Set retorno = new HashSet();
63      if (funcoes != null) {
64        for (int i = 0; i < funcoes.length; i++) {
65          try {
66            FuncaoFun funcao = (FuncaoFun) this.buscar(FuncaoFun.class, Long.valueOf(funcoes[i]));
67            retorno.add(funcao);
68          } catch (ECARException e) {
69            this.logger.error(e);
70            throw e;
71          }
72        }
73      }
74      return retorno;
75    }
76  
77    /**
78     * Devolve um conjunto com todos as funções ativas nao opcionais, ou seja, que
79     * são obrigatorios em todas as estruturas
80     * @author n/c
81     * @return List
82     * @throws ECARException
83     */
84    @SuppressWarnings("unchecked")
85    public List getFuncoesNaoOpcionais() throws ECARException {
86      List retorno = new ArrayList();
87  
88      FuncaoFun funcao = new FuncaoFun();
89  
90      funcao.setIndAtivoFun("S");
91      funcao.setIndOpcionalFun("N");
92  
93      retorno = this.pesquisar(funcao, new String[] { "nomeFun", FuncaoDao.ORDEM_ASC });
94  
95      return retorno;
96    }
97  
98    /**
99     * Devolve um conjunto com todos as funções ativas opcionais
100    * @author n/c
101    * @return List
102    * @throws ECARException
103    */
104   @SuppressWarnings("unchecked")
105   public List getFuncoesOpcionais() throws ECARException {
106     List retorno = new ArrayList();
107 
108     FuncaoFun funcao = new FuncaoFun();
109 
110     funcao.setIndAtivoFun("S");
111     funcao.setIndOpcionalFun("S");
112 
113     retorno = this.pesquisar(funcao, new String[] { "nomeFun", FuncaoDao.ORDEM_ASC });
114 
115     return retorno;
116 
117   }
118 
119   /**
120    * Devolve uma funcao através do ID
121    * @param Long id
122    * @author n/c
123    * @return FuncaoFun
124    */
125   public FuncaoFun getFuncao(Long id) throws ECARException {
126     return (FuncaoFun) this.buscar(FuncaoFun.class, id);
127   }
128 
129   /**
130    * @author n/c
131    * @param funcao
132    * @throws ECARException
133    */
134   public void salvar(FuncaoFun funcao) throws ECARException {
135     if (pesquisarDuplos(funcao, new String[] { "nomeFun", "labelPadraoFun" }, "codFun").size() > 0)
136       throw new ECARException("funcao.validacao.registroDuplicado");
137     super.salvar(funcao);
138   }
139 
140   /**
141    * @author n/c
142    * @param funcao
143    * @throws ECARException
144    */
145   public void alterar(FuncaoFun funcao) throws ECARException {
146     if (pesquisarDuplos(funcao, new String[] { "nomeFun", "labelPadraoFun" }, "codFun").size() > 0)
147       throw new ECARException("funcao.validacao.registroDuplicado");
148     super.alterar(funcao);
149   }
150 
151   public void setFuncaoFun(HttpServletRequest request, FuncaoFun funcao, boolean usarGetparamStr) {
152     if (Pagina.getParam(request, "codigo") != null)
153       funcao.setCodFun(Long.valueOf(Pagina.getParam(request, "codigo")));
154     else
155       funcao.setCodFun(null);
156 
157     if (usarGetparamStr) {
158       funcao.setNomeFun(Pagina.getParamStr(request, "nomeFun").trim());
159       funcao.setLabelPadraoFun(Pagina.getParamStr(request, "labelPadraoFun").trim());
160       funcao.setLinkFuncaoFun(Pagina.getParamStr(request, "linkFuncaoFun").trim());
161       funcao.setIndAtivoFun(Pagina.getParamOrDefault(request, "indAtivoFun", Pagina.NAO).trim());
162       funcao.setIndExclusivoEstruturaFun(Pagina.getParamStr(request, "indExclusivoEstruturaFun").trim());
163       funcao.setIndOpcionalFun(Pagina.getParamOrDefault(request, "indOpcionalFun", Pagina.NAO).trim());
164       funcao.setDocumentacaoFun(Pagina.getParamStr(request, "documentacaoFun").trim());
165     }
166     else {
167       funcao.setNomeFun(Pagina.getParam(request, "nomeFun"));
168       funcao.setLabelPadraoFun(Pagina.getParam(request, "labelPadraoFun"));
169       funcao.setLinkFuncaoFun(Pagina.getParam(request, "linkFuncaoFun"));
170       funcao.setIndAtivoFun(Pagina.getParam(request, "indAtivoFun"));
171       funcao.setIndExclusivoEstruturaFun(Pagina.getParam(request, "indExclusivoEstruturaFun"));
172       funcao.setIndOpcionalFun(Pagina.getParam(request, "indOpcionalFun"));
173       funcao.setDocumentacaoFun(Pagina.getParam(request, "documentacaoFun"));
174     }
175   }
176 }