View Javadoc

1   /*
2    * Criado em 15/07/2005
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.Iterator;
8   import java.util.List;
9   
10  import javax.servlet.http.HttpServletRequest;
11  
12  import org.hibernate.HibernateException;
13  import org.hibernate.Query;
14  
15  import comum.database.Dao;
16  
17  import ecar.exception.ECARException;
18  import ecar.pojo.OrgaoOrg;
19  import ecar.pojo.UnidadeOrcamentariaPeriodoExercicioUoPerExe;
20  import ecar.pojo.UnidadeOrcamentariaUO;
21  
22  /**
23   * @author evandro
24   */
25  public class UnidadeOrcamentariaDao extends Dao {
26  
27    /**
28     * Construtor. Chama o Session factory do Hibernate
29     */
30    public UnidadeOrcamentariaDao(HttpServletRequest request) {
31      super();
32      this.request = request;
33    }
34  
35    /**
36     * Utiliza o método excluir da classe Dao realizando antes validações de
37     * relacionamento do órgão com registros em outras tabelas.
38     * @param situacao
39     * @throws ECARException
40     */
41    public void excluir(UnidadeOrcamentariaUO unidade) throws ECARException {
42      try {
43        boolean excluir = true;
44        if (contar(unidade.getItemEstruturaIettsByCodUo()) > 0) {
45          excluir = false;
46          throw new ECARException("unidadeOrcamentaria.exclusao.erro.ItemEstruturaIetts");
47        }
48        if (excluir)
49          super.excluir(unidade);
50      } catch (ECARException e) {
51        this.logger.error(e);
52        throw e;
53      }
54    }
55  
56    /**
57     * Verifica duplicação depois salva
58     * @param unidade
59     * @throws ECARException
60     */
61    public void salvar(UnidadeOrcamentariaUO unidade) throws ECARException {
62      if (pesquisarDuplos(unidade, new String[] { "descricaoUo", "siglaUo" }, "codUo").size() > 0)
63        throw new ECARException("unidadeOrcamentaria.validacao.registroDuplicado");
64      if (unidade.getCodigoIdentUo() != null)
65        if (pesquisarDuplos(unidade, new String[] { "codigoIdentUo" }, "codUo").size() > 0)
66          throw new ECARException("unidadeOrcamentaria.validacao.registroDuplicado.codigoIdentUo");
67      super.salvar(unidade);
68    }
69  
70    /**
71     * Verifica duplicação depois altera
72     * @param unidade
73     * @throws ECARException
74     */
75    public void alterar(UnidadeOrcamentariaUO unidade) throws ECARException {
76      if (pesquisarDuplos(unidade, new String[] { "descricaoUo", "siglaUo" }, "codUo").size() > 0)
77        throw new ECARException("unidadeOrcamentaria.validacao.registroDuplicado");
78      if (unidade.getCodigoIdentUo() != null)
79        if (pesquisarDuplos(unidade, new String[] { "codigoIdentUo" }, "codUo").size() > 0)
80          throw new ECARException("unidadeOrcamentaria.validacao.registroDuplicado.codigoIdentUo");
81      super.alterar(unidade);
82    }
83  
84    /**
85     * Retorna uma lista de unidades orçamentárias de um órgão específico.
86     * @author aleixo
87     * @since 03/07/2007
88     * @param orgao
89     * @return List
90     */
91    public List getUnidadeOrcamentariaByOrgao(OrgaoOrg orgao, String campoOrdem) throws ECARException {
92      StringBuilder select = new StringBuilder();
93  
94      select.append("select unidade from UnidadeOrcamentariaUO unidade");
95      select.append(" where unidade.indAtivoUo = :indAtivo");
96  
97      if (orgao != null) {
98        select.append(" and unidade.orgaoOrg.codOrg = :codOrgao");
99      }
100 
101     select.append(" order by unidade.");
102     if (campoOrdem != null && !"".equals(campoOrdem)) {
103       select.append(campoOrdem);
104     }
105     else {
106       select.append("descricaoUo");
107     }
108     select.append(" asc ");
109 
110     List retorno = new ArrayList();
111 
112     try {
113       Query q = this.session.createQuery(select.toString());
114 
115       q.setString("indAtivo", "S");
116 
117       if (orgao != null) {
118         q.setLong("codOrgao", orgao.getCodOrg().longValue());
119       }
120 
121       retorno = q.list();
122 
123     } catch (HibernateException e) {
124       this.logger.error(e);
125       throw new ECARException(e);
126     }
127 
128     return (retorno != null) ? retorno : new ArrayList();
129   }
130 
131   /**
132    * Carrega listagem de Unidades Orcamentarias de acordo com o periodo
133    * @param codPerExe Identificador <PeriodoExercicioPerExe>
134    * @param orgId Identificador do Orgao
135    * @param indAtivoPodPerExe Identificador de status ativo / inativo
136    * @return ArrayList<UnidadeOrcamentariaUO>
137    */
138   public ArrayList<UnidadeOrcamentariaUO> getUnidadesByPeriodicidade(Long codPerExe, Long orgId, Character indAtivoPodPerExe) throws ECARException {
139 
140     try {
141       StringBuilder qry = new StringBuilder("from UnidadeOrcamentariaPeriodoExercicioUoPerExe as unidade").append(" where unidade.indAtivoUoPerExe  = :status").append(" and unidade.periodoExercicioPerExe.codPerExe  = :periodo").append(" and unidade.unidadeOrcamentariaUO.orgaoOrg.codOrg  = :orgao").append(" order by unidade.unidadeOrcamentariaUO.descricaoUo");
142 
143       Query q = this.session.createQuery(qry.toString());
144       q.setLong("periodo", codPerExe.longValue());
145       q.setLong("orgao", orgId.longValue());
146       q.setCharacter("status", indAtivoPodPerExe);
147 
148       List unidadePerexe = q.list();
149       ArrayList<UnidadeOrcamentariaUO> listUnidade = new ArrayList<UnidadeOrcamentariaUO>();
150 
151       for (Iterator iter = unidadePerexe.iterator(); iter.hasNext();) {
152         UnidadeOrcamentariaPeriodoExercicioUoPerExe unidadeTmp = (UnidadeOrcamentariaPeriodoExercicioUoPerExe) iter.next();
153         listUnidade.add(unidadeTmp.getUnidadeOrcamentariaUO());
154       }
155 
156       return listUnidade;
157 
158     } catch (HibernateException e) {
159       this.logger.error(e);
160       throw new ECARException("erro.hibernateException");
161     }
162 
163   }
164 
165   /**
166    * Carrega listagem de Unidades Orcamentarias de acordo com o codigoIdentUo
167    * @param codigoIdentUo Codigo e-COP
168    * @return UnidadeOrcamentariaUO
169    */
170   public UnidadeOrcamentariaUO getUnidadeByCodigoIdentUo(Long codigoIdentUo) throws ECARException {
171 
172     try {
173 
174       StringBuilder qry = new StringBuilder("from UnidadeOrcamentariaUO as unidade").append(" where unidade.codigoIdentUo  = :codigo");
175       Query q = this.session.createQuery(qry.toString());
176       q.setLong("codigo", codigoIdentUo.longValue());
177       q.setMaxResults(1);
178 
179       UnidadeOrcamentariaUO unidade = (UnidadeOrcamentariaUO) q.uniqueResult();
180 
181       return unidade;
182 
183     } catch (HibernateException e) {
184       this.logger.error(e);
185       throw new ECARException("erro.hibernateException");
186     }
187 
188   }
189 
190 }