View Javadoc

1   /*
2    * Criado em 20/12/2004
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.Iterator;
8   import java.util.List;
9   import java.util.Set;
10  
11  import javax.servlet.http.HttpServletRequest;
12  
13  import org.hibernate.HibernateException;
14  import org.hibernate.Transaction;
15  
16  import comum.database.Dao;
17  import comum.util.Data;
18  
19  import ecar.exception.ECARException;
20  import ecar.pojo.CriterioCri;
21  import ecar.pojo.ItemEstrutCriterioIettc;
22  import ecar.pojo.ItemEstrutCriterioIettcPK;
23  import ecar.pojo.ItemEstruturaIett;
24  import ecar.pojo.UsuarioUsu;
25  
26  /**
27   * @author felipev
28   */
29  public class ItemEstruturaCriterioDao extends Dao {
30  
31    public ItemEstruturaCriterioDao(HttpServletRequest request) {
32      super();
33      this.request = request;
34    }
35  
36    /**
37     * Devolve um objeto ItemEstruturaCriterio a partir de um código de Item
38     * Estrutura e um Código do Critério
39     * @param codItemEstrutura
40     * @param codCriterio
41     * @return
42     * @throws ECARException
43     */
44    public ItemEstrutCriterioIettc buscar(Long codItemEstrutura, Long codCriterio) throws ECARException {
45      ItemEstrutCriterioIettcPK pk = new ItemEstrutCriterioIettcPK();
46      pk.setCodCri(codCriterio);
47      pk.setCodIett(codItemEstrutura);
48      return (ItemEstrutCriterioIettc) super.buscar(ItemEstrutCriterioIettc.class, pk);
49    }
50  
51    /**
52     * Grava um registro de itemEstruturaCriterio
53     * @author felipev, rogerio
54     * @since n/c
55     * @version 0.2, 04/06/2007
56     * @param codCriterio
57     * @param codItemEstrutura
58     * @param usuario
59     * @throws ECARException
60     */
61    public void salvar(Long codCriterio, Long codItemEstrutura, UsuarioUsu usuario) throws ECARException {
62      try {
63        if (this.buscar(codItemEstrutura, codCriterio) != null) {
64          throw new ECARException("itemEstrutura.criterio.inclusao.jaExiste");
65        }
66      } catch (ECARException e) {
67        this.logger.error(e);
68        if (e.getMessageKey().equalsIgnoreCase("erro.objectNotFound")) {
69  
70          ItemEstrutCriterioIettcPK pk = new ItemEstrutCriterioIettcPK();
71          pk.setCodCri(codCriterio);
72          pk.setCodIett(codItemEstrutura);
73          ItemEstrutCriterioIettc ieCriterio = new ItemEstrutCriterioIettc();
74          ieCriterio.setComp_id(pk);
75          ieCriterio.setCriterioCri((CriterioCri) super.buscar(CriterioCri.class, codCriterio));
76          ieCriterio.setItemEstruturaIett((ItemEstruturaIett) super.buscar(ItemEstruturaIett.class, codItemEstrutura));
77  
78          /* -- Mantis #2156 (Rogério) -- */
79          ieCriterio.setDataUltManutencao(Data.getDataAtual());
80          ieCriterio.setUsuManutencao(usuario);
81  
82          super.salvar(ieCriterio);
83        }
84        else
85          throw e; /* joga para frente a inclusao.jaExiste */
86      }
87  
88    }
89  
90    /**
91     * Recebe um array com Códigos de Recurso e um código de Item Estrutura e
92     * exclui todas as relações dos critério que estes códigos representam com o
93     * item da EStrutura
94     * @param codCriterio
95     * @param codItemEstrutura
96     * @throws ECARException
97     */
98    public void excluir(String[] codCriterio, Long codItemEstrutura, UsuarioUsu usuario) throws ECARException {
99      Transaction tx = null;
100 
101     try {
102       ArrayList objetos = new ArrayList();
103 
104       super.inicializarLogBean();
105 
106       tx = session.beginTransaction();
107 
108       ItemEstrutCriterioIettc criterio;
109       for (int i = 0; i < codCriterio.length; i++) {
110         /*
111          * -- #2156 - Histórico Atualiza o registro antes de excluir, para
112          * garantir que o usuário que fez a exclusão, será registrado na tabela
113          * master de histórico. --
114          */
115         criterio = this.buscar(codItemEstrutura, Long.valueOf(codCriterio[i]));
116         criterio.setDataUltManutencao(Data.getDataAtual());
117         criterio.setUsuManutencao(usuario);
118         criterio.setIndExclusaoPosHistorico(Boolean.TRUE);
119         session.update(criterio);
120 
121         // apaga pela trigger
122         // session.delete(criterio);
123       }
124 
125       tx.commit();
126 
127       if (super.logBean != null) {
128         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
129         super.logBean.setOperacao("EXC");
130         Iterator itObj = objetos.iterator();
131 
132         while (itObj.hasNext()) {
133           super.logBean.setObj(itObj.next());
134           super.loggerAuditoria.info(logBean.toString());
135         }
136       }
137     } catch (HibernateException e) {
138       if (tx != null)
139         try {
140           tx.rollback();
141         } catch (HibernateException r) {
142           this.logger.error(r);
143           throw new ECARException("erro.hibernateException");
144         }
145       this.logger.error(e);
146       throw new ECARException("erro.hibernateException");
147     }
148   }
149 
150   /**
151    * Devolve uma lista com todos os Critérios de um Item da Estrutura
152    * @param itemEstrutura
153    * @return
154    */
155   public List listarCriterios(ItemEstruturaIett itemEstrutura) throws ECARException {
156     List retorno = new ArrayList();
157     if (itemEstrutura.getItemEstrutCriterioIettcs() != null) {
158       Set crit = itemEstrutura.getItemEstrutCriterioIettcs();
159       Iterator it = this.ordenaSet(crit, "this.criterioCri.descricaoCri", "asc").iterator();
160       while (it.hasNext()) {
161         ItemEstrutCriterioIettc itemCriterio = (ItemEstrutCriterioIettc) it.next();
162         retorno.add(itemCriterio.getCriterioCri());
163       }
164     }
165     return retorno;
166   }
167 
168   /**
169    * Verifica se o item possui um determinado critério passado pelo parametro
170    * "id" nas listas de códigos de critérios.
171    * @param itemEstrutura
172    * @param idCriteriosCom
173    * @param idCriteriosSem
174    * @return boolean
175    * @throws ECARException
176    */
177   public boolean verificarCriterio(ItemEstruturaIett itemEstrutura, List idCriteriosCom, List idCriteriosSem) throws ECARException {
178     boolean existemCriteriosCom = (idCriteriosCom != null && idCriteriosCom.size() > 0);
179     boolean existemCriteriosSem = (idCriteriosSem != null && idCriteriosSem.size() > 0);
180 
181     if (itemEstrutura.getItemEstrutCriterioIettcs() != null) {
182       boolean criterioExisteListaCom = false;
183       boolean criterioExisteListaSem = false;
184 
185       List codCriteriosIett = new ArrayList();
186 
187       Iterator itCriterios = itemEstrutura.getItemEstrutCriterioIettcs().iterator();
188       while (itCriterios.hasNext()) {
189         ItemEstrutCriterioIettc itemCriterio = (ItemEstrutCriterioIettc) itCriterios.next();
190         String codigoCriterio = itemCriterio.getComp_id().getCodCri().toString();
191         codCriteriosIett.add(codigoCriterio);
192       }
193 
194       if (codCriteriosIett.containsAll(idCriteriosCom)) {
195         criterioExisteListaCom = true;
196       }
197 
198       if (codCriteriosIett.containsAll(idCriteriosSem)) {
199         criterioExisteListaSem = true;
200       }
201 
202       if (existemCriteriosCom && existemCriteriosSem) {
203         if (criterioExisteListaCom && !criterioExisteListaSem) {
204           return true;
205         }
206       }
207       else if (existemCriteriosCom) {
208         if (criterioExisteListaCom) {
209           return true;
210         }
211       }
212       else if (existemCriteriosSem) {
213         if (!criterioExisteListaSem) {
214           return true;
215         }
216       }
217     }
218     return false;
219   }
220 
221 }