1
2
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
24
25 public class UnidadeOrcamentariaDao extends Dao {
26
27
28
29
30 public UnidadeOrcamentariaDao(HttpServletRequest request) {
31 super();
32 this.request = request;
33 }
34
35
36
37
38
39
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
58
59
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
72
73
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
86
87
88
89
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
133
134
135
136
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
167
168
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 }