View Javadoc

1   /*
2    * Criado em 01/12/2004
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.HashSet;
8   import java.util.Iterator;
9   import java.util.List;
10  import java.util.Set;
11  
12  import javax.servlet.http.HttpServletRequest;
13  
14  import org.hibernate.HibernateException;
15  import org.hibernate.Transaction;
16  
17  import comum.database.Dao;
18  import comum.util.Data;
19  import comum.util.Pagina;
20  
21  import ecar.exception.ECARException;
22  import ecar.historico.HistoricoIettus;
23  import ecar.permissao.ControlePermissao;
24  import ecar.pojo.EstrutTpFuncAcmpEtttfa;
25  import ecar.pojo.EstruturaEtt;
26  import ecar.pojo.ItemEstrutUsuarioIettus;
27  import ecar.pojo.TipoFuncAcompTpfa;
28  
29  /**
30   * @author felipev
31   */
32  public class EstruturaTipoFuncAcompDao extends Dao {
33    /*
34     * private EstruturaDao estruturaDao = null; private TipoFuncAcompDao
35     * tipoFuncAcompDao = null;
36     */
37    /**
38     * Construtor. Chama o Session factory do Hibernate
39     */
40    public EstruturaTipoFuncAcompDao(HttpServletRequest request) {
41      super();
42      this.request = request;
43      /*
44       * estruturaDao = new EstruturaDao(this.request); tipoFuncAcompDao = new
45       * TipoFuncAcompDao(this.request);
46       */
47    }
48  
49    /**
50     * Controla listas
51     * @author n/c
52     * @param request
53     * @param listaEstrutura
54     * @param listaTipoFuncAcomp
55     * @throws ECARException
56     */
57    public void controlaListas(HttpServletRequest request, List listaEstrutura, List listaTipoFuncAcomp) throws ECARException {
58  
59      if (Pagina.getParam(request, "estruturaEtt") != null) {
60        listaTipoFuncAcomp.addAll(this.getTipoFuncAcomp((EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
61      }
62      else {
63        listaTipoFuncAcomp.addAll(new TipoFuncAcompDao(request).listar(TipoFuncAcompTpfa.class, new String[] { "labelTpfa", "asc" }));
64      }
65  
66      if (Pagina.getParam(request, "tipoFuncAcompTpfa") != null) {
67        listaEstrutura.addAll(this.getEstruturas((TipoFuncAcompTpfa) new TipoFuncAcompDao(request).buscar(TipoFuncAcompTpfa.class, Long.valueOf(Pagina.getParam(request, "tipoFuncAcompTpfa")))));
68      }
69      else {
70        listaEstrutura.addAll(new EstruturaDao(request).listar(EstruturaEtt.class, new String[] { "nomeEtt", "asc" }));
71      }
72  
73    }
74  
75    /**
76     * @author n/c
77     * @param request
78     * @param estruturaTipoFuncAcomp
79     * @param usarGetParamStr
80     * @throws ECARException
81     */
82    public void setEstruturaTipoFuncAcomp(HttpServletRequest request, EstrutTpFuncAcmpEtttfa estruturaTipoFuncAcomp, boolean usarGetParamStr) throws ECARException {
83      if (Pagina.getParam(request, "estruturaEtt") != null)
84        estruturaTipoFuncAcomp.setEstruturaEtt((EstruturaEtt) (new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
85      if (Pagina.getParam(request, "tipoFuncAcompTpfa") != null)
86        estruturaTipoFuncAcomp.setTipoFuncAcompTpfa((TipoFuncAcompTpfa) new TipoFuncAcompDao(request).buscar(TipoFuncAcompTpfa.class, Long.valueOf(Pagina.getParam(request, "tipoFuncAcompTpfa"))));
87      if (!"".equals(Pagina.getParamStr(request, "seqApresentTelaCampoEtttfa")))
88        estruturaTipoFuncAcomp.setSeqApresentTelaCampoEtttfa(Integer.valueOf(Pagina.getParamStr(request, "seqApresentTelaCampoEtttfa")));
89  
90      if (!"".equals(Pagina.getParamStr(request, "seqApresListagemTelaEtttfa")))
91        estruturaTipoFuncAcomp.setSeqApresListagemTelaEtttfa(Integer.valueOf(Pagina.getParamStr(request, "seqApresListagemTelaEtttfa")));
92      else
93        estruturaTipoFuncAcomp.setSeqApresListagemTelaEtttfa(null);
94  
95      if (!"".equals(Pagina.getParamStr(request, "larguraListagemTelaEtttfa")))
96        estruturaTipoFuncAcomp.setLarguraListagemTelaEtttfa(Integer.valueOf(Pagina.getParamStr(request, "larguraListagemTelaEtttfa")));
97      else
98        estruturaTipoFuncAcomp.setLarguraListagemTelaEtttfa(null);
99  
100     if (usarGetParamStr) {
101 
102       // Acrescentado por Milton
103       if (!Pagina.getParamStr(request, "indListagemImprCompEtttfa").equals("")) {
104         estruturaTipoFuncAcomp.setIndListagemImprCompEtttfa(Pagina.getParamStr(request, "indListagemImprCompEtttfa"));
105       }
106       else {
107         estruturaTipoFuncAcomp.setIndListagemImprCompEtttfa(null);
108       }
109 
110       if (!Pagina.getParamStr(request, "indListagemImprResEtttfa").equals("")) {
111         estruturaTipoFuncAcomp.setIndListagemImprResEtttfa(Pagina.getParamStr(request, "indListagemImprResEtttfa"));
112       }
113       else {
114         estruturaTipoFuncAcomp.setIndListagemImprResEtttfa(null);
115       }
116 
117       if (!Pagina.getParamStr(request, "indListagemTelaEtttfa").equals("")) {
118         estruturaTipoFuncAcomp.setIndListagemTelaEtttfa(Pagina.getParamStr(request, "indListagemTelaEtttfa"));
119       }
120       else {
121         estruturaTipoFuncAcomp.setIndListagemTelaEtttfa(null);
122       }
123 
124       if (!Pagina.getParamStr(request, "indRevisao").equals("")) {
125         estruturaTipoFuncAcomp.setIndRevisao(Pagina.getParamStr(request, "indRevisao"));
126       }
127       else {
128         estruturaTipoFuncAcomp.setIndRevisao(null);
129       }
130 
131       if (!Pagina.getParamStr(request, "idFiltroEtttfa").equals("")) {
132         estruturaTipoFuncAcomp.setIdFiltroEtttfa(Pagina.getParamStr(request, "idFiltroEtttfa"));
133       }
134       else {
135         estruturaTipoFuncAcomp.setIdFiltroEtttfa(null);
136       }
137 
138       if (!Pagina.getParamStr(request, "idPodeBloquearEtttfa").equals("")) {
139         estruturaTipoFuncAcomp.setIdPodeBloquearEtttfa(Pagina.getParamStr(request, "idPodeBloquearEtttfa"));
140       }
141       else {
142         estruturaTipoFuncAcomp.setIdPodeBloquearEtttfa(null);
143       }
144 
145       if (!Pagina.getParamStr(request, "indManterProximoNivelEtttfa").equals("")) {
146         estruturaTipoFuncAcomp.setIndManterProximoNivelEtttfa(Pagina.getParamStr(request, "indManterProximoNivelEtttfa"));
147       }
148       else {
149         estruturaTipoFuncAcomp.setIndManterProximoNivelEtttfa(null);
150       }
151 
152     }
153     else {
154       estruturaTipoFuncAcomp.setIndListagemImprCompEtttfa(Pagina.getParamOrDefault(request, "indListagemImprCompEtttfa", Pagina.NAO));
155       estruturaTipoFuncAcomp.setIndListagemImprResEtttfa(Pagina.getParamOrDefault(request, "indListagemImprResEtttfa", Pagina.NAO));
156       estruturaTipoFuncAcomp.setIndListagemTelaEtttfa(Pagina.getParamOrDefault(request, "indListagemTelaEtttfa", Pagina.NAO));
157       estruturaTipoFuncAcomp.setIndRevisao(Pagina.getParamOrDefault(request, "indRevisao", Pagina.NAO));
158       estruturaTipoFuncAcomp.setIdFiltroEtttfa(Pagina.getParamOrDefault(request, "idFiltroEtttfa", Pagina.NAO));
159       estruturaTipoFuncAcomp.setIdPodeBloquearEtttfa(Pagina.getParamOrDefault(request, "idPodeBloquearEtttfa", Pagina.NAO));
160       estruturaTipoFuncAcomp.setIndManterProximoNivelEtttfa(Pagina.getParamOrDefault(request, "indManterProximoNivelEtttfa", Pagina.NAO));
161     }
162   }
163 
164   /**
165    * Devolve uma lista com todas os Tipos de Função de Acompanhamento vinculados
166    * a uma estrutura
167    * @author n/c
168    * @param estrutura
169    * @return List de TipoFuncAcompTpfa
170    */
171   public List getTipoFuncAcomp(EstruturaEtt estrutura) {
172     List retorno = new ArrayList();
173     if (estrutura.getEstrutTpFuncAcmpEtttfas() != null) {
174       Iterator it = estrutura.getEstrutTpFuncAcmpEtttfas().iterator();
175       while (it.hasNext()) {
176         EstrutTpFuncAcmpEtttfa estruturaTipoFuncAcomp = (EstrutTpFuncAcmpEtttfa) it.next();
177         retorno.add(estruturaTipoFuncAcomp.getTipoFuncAcompTpfa());
178       }
179     }
180     return retorno;
181   }
182 
183   /**
184    * Devolve uma lista com todas os Tipos de Função de Acompanhamento vinculados
185    * a uma estrutura que emitem posicao.
186    * @author n/c
187    * @param estrutura
188    * @return List de TipoFuncAcompTpfa
189    */
190   public List getTipoFuncAcompEmitePosicao(EstruturaEtt estrutura) {
191     List retorno = new ArrayList();
192     if (estrutura.getEstrutTpFuncAcmpEtttfas() != null) {
193       Iterator it = estrutura.getEstrutTpFuncAcmpEtttfas().iterator();
194       while (it.hasNext()) {
195         EstrutTpFuncAcmpEtttfa estruturaTipoFuncAcomp = (EstrutTpFuncAcmpEtttfa) it.next();
196         if ("S".equals(estruturaTipoFuncAcomp.getTipoFuncAcompTpfa().getIndEmitePosicaoTpfa()))
197           retorno.add(estruturaTipoFuncAcomp.getTipoFuncAcompTpfa());
198       }
199     }
200     return retorno;
201   }
202 
203   /**
204    * Devolve uma lista com todas as estruturas vinculadas a um Tipo de Função de
205    * Acompanhamento
206    * @author n/c
207    * @param estrutura
208    * @return List de EstruturaEtt
209    */
210   public List getEstruturas(TipoFuncAcompTpfa tipoFuncaoAcomp) {
211     List retorno = new ArrayList();
212     if (tipoFuncaoAcomp.getEstrutTpFuncAcmpEtttfas() != null) {
213       Iterator it = tipoFuncaoAcomp.getEstrutTpFuncAcmpEtttfas().iterator();
214       while (it.hasNext()) {
215         EstrutTpFuncAcmpEtttfa estruturaTipoFuncAcomp = (EstrutTpFuncAcmpEtttfa) it.next();
216         retorno.add(estruturaTipoFuncAcomp.getEstruturaEtt());
217       }
218     }
219     return retorno;
220   }
221 
222   /**
223    * Configura as funcoes de acompanhamento com permissao permissão de editar o
224    * item mesmo quando o item estiver com o plenejamento bloqueado Adiquire as
225    * informacoes do request
226    * @return Conjunto com a lista de tipo de acompanhamento setada na interface
227    */
228   public Set<TipoFuncAcompTpfa> setLibTipoFuncAcompTpfa() {
229 
230     Set<TipoFuncAcompTpfa> set = new HashSet<TipoFuncAcompTpfa>();
231 
232     if (request.getParameterValues("limbTipoFuncAcompTpfa") != null) {
233       String strLibTipoFuncAcomp[] = request.getParameterValues("limbTipoFuncAcompTpfa");
234       Long codTpfa = null;// [] = new Long[strEntidades.length];
235 
236       try {
237         for (int i = 0; i < strLibTipoFuncAcomp.length; i++) {
238           codTpfa = Long.parseLong(strLibTipoFuncAcomp[i]);
239           TipoFuncAcompTpfa tipoFuncAcomp = (TipoFuncAcompTpfa) this.buscar(TipoFuncAcompTpfa.class, codTpfa);
240 
241           set.add(tipoFuncAcomp);
242         }// fim for
243       } catch (ECARException e) {
244         // e.printStackTrace();
245       }
246     }// fim if
247     return set;
248   }
249 
250   /**
251    * Altera um registro de EstruturaTipoFuncAcomp e propaga/remove a permissão
252    * para os próximos níveis
253    * @param EstrutTpFuncAcmpEtttfa
254    * @throws ECARException
255    */
256   public void alterar(EstrutTpFuncAcmpEtttfa estrutTpFuncAcmpEtttfa) throws ECARException {
257 
258     Transaction tx = null;
259 
260     try {
261       ArrayList objetos = new ArrayList();
262 
263       super.inicializarLogBean();
264 
265       tx = session.beginTransaction();
266 
267       ControlePermissao controlePermissao = new ControlePermissao();
268 
269       //
270       // controlar as permissoes
271       //
272       String indManterProximoNivelAntigo = request.getParameter("indManterProximoNivelEtttfaAntigo");
273       String indManterProximoNivelAtual = estrutTpFuncAcmpEtttfa.getIndManterProximoNivelEtttfa();
274       if (!indManterProximoNivelAntigo.equals(indManterProximoNivelAtual)) {
275         controlePermissao.atualizarPermissaoManterProximoNivel(estrutTpFuncAcmpEtttfa, session, request);
276       }
277 
278       session.update(estrutTpFuncAcmpEtttfa);
279       objetos.add(estrutTpFuncAcmpEtttfa);
280 
281       tx.commit();
282 
283       if (super.logBean != null) {
284         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
285         super.logBean.setOperacao("ALT");
286         Iterator itObj = objetos.iterator();
287 
288         while (itObj.hasNext()) {
289           super.logBean.setObj(itObj.next());
290           super.loggerAuditoria.info(logBean.toString());
291         }
292       }
293     } catch (HibernateException e) {
294       if (tx != null)
295         try {
296           tx.rollback();
297         } catch (HibernateException r) {
298           this.logger.error(r);
299           throw new ECARException("erro.hibernateException");
300         }
301       this.logger.error(e);
302       throw new ECARException("erro.hibernateException");
303     }
304   }
305 }