View Javadoc

1   /*
2    * Created on 10/05/2005
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.Collections;
8   import java.util.Comparator;
9   import java.util.Iterator;
10  import java.util.List;
11  
12  import javax.servlet.http.HttpServletRequest;
13  
14  import org.hibernate.Query;
15  
16  import comum.database.Dao;
17  import comum.util.Pagina;
18  
19  import ecar.exception.ECARException;
20  import ecar.pojo.AgendaAge;
21  import ecar.pojo.AgendaOcorrenciaAgeo;
22  import ecar.pojo.DestaqueAreaDtqa;
23  import ecar.pojo.DestaqueItemRelDtqir;
24  import ecar.pojo.DestaqueSubAreaDtqsa;
25  import ecar.pojo.DestaqueTipoOrdemDtqto;
26  import ecar.pojo.SegmentoAgendaBean;
27  import ecar.pojo.SegmentoItemSgti;
28  import ecar.pojo.SegmentoSgt;
29  
30  /**
31   * @author felipe
32   */
33  public class DestaqueSubAreaDao extends Dao {
34  
35    public DestaqueSubAreaDao(HttpServletRequest request) {
36      super();
37      this.request = request;
38    }
39  
40    /**
41     * A partir de dados passados por request popula um objeto
42     * DestaqueSubAreaDtqsa
43     * @param segmento
44     * @param campos
45     * @param recuperarParametrosComoString indica se irá recuperar dados nulos
46     *          como String vazia
47     * @throws ECARException
48     */
49    public void setDestaqueSubArea(DestaqueSubAreaDtqsa destaqueSubArea, HttpServletRequest request, boolean recuperarParametrosComoString) throws ECARException {
50  
51      try {
52        if (!"".equals(Pagina.getParamStr(request, "destaqueAreaDtqa"))) {
53          destaqueSubArea.setDestaqueAreaDtqa((DestaqueAreaDtqa) this.buscar(DestaqueAreaDtqa.class, Long.valueOf(Pagina.getParamStr(request, "destaqueAreaDtqa"))));
54        }
55        if (!"".equals(Pagina.getParamStr(request, "destaqueTipoOrdemDtqto"))) {
56          destaqueSubArea.setDestaqueTipoOrdemDtqto((DestaqueTipoOrdemDtqto) this.buscar(DestaqueTipoOrdemDtqto.class, Long.valueOf(Pagina.getParamStr(request, "destaqueTipoOrdemDtqto"))));
57        }
58        if (!"".equals(Pagina.getParamStr(request, "qtdMaxItensDtqsa")))
59          destaqueSubArea.setQtdMaxItensDtqsa(Integer.valueOf(Pagina.getParamStr(request, "qtdMaxItensDtqsa")));
60  
61        if (recuperarParametrosComoString) {
62          destaqueSubArea.setIdentificacaoDtqsa(Pagina.getParamStr(request, "identificacaoDtqsa"));
63          destaqueSubArea.setDescricaoDtqsa(Pagina.getParamStr(request, "descricaoDtqsa"));
64        }
65        else {
66          destaqueSubArea.setIdentificacaoDtqsa(Pagina.getParam(request, "identificacaoDtqsa"));
67          destaqueSubArea.setDescricaoDtqsa(Pagina.getParam(request, "descricaoDtqsa"));
68        }
69      } catch (Exception e) {
70        this.logger.error(e);
71        throw new ECARException(e);
72      }
73  
74    }
75  
76    /**
77     * Exclui uma sub área de destaque, verificando antes se ela possui relação
78     * com outras tabelas. Neste caso, não permite exclusão
79     * @param area
80     * @throws ECARException
81     */
82    public void excluir(DestaqueSubAreaDtqsa destaqueSubArea) throws ECARException {
83      try {
84        boolean excluir = true;
85  
86        if (contar(destaqueSubArea.getDestaqueItemRelDtqirs()) > 0) {
87          excluir = false;
88          throw new ECARException("destaqueSubArea.exclusao.erro.destaqueItemRelDtqirs");
89        }
90        if (excluir)
91          super.excluir(destaqueSubArea);
92      } catch (ECARException e) {
93        this.logger.error(e);
94        throw e;
95      }
96    }
97  
98    /**
99     * Devolve uma lista com todos os Destaques de Uma Sub Área de Destaque. Estes
100    * destaques podem ser Ocorrências da Agenda ou Itens de Segmento. Por isso o
101    * método os emcapsula em um objeto SegmentoAgendaBean.
102    * @param subArea
103    * @return
104    * @throws ECARException
105    */
106   public List getItensDestaqueSubArea(DestaqueSubAreaDtqsa subArea) throws ECARException {
107     List retorno = new ArrayList();
108     Iterator it = subArea.getDestaqueItemRelDtqirs().iterator();
109     while (it.hasNext()) {
110       DestaqueItemRelDtqir destaqueItem = (DestaqueItemRelDtqir) it.next();
111       SegmentoAgendaBean segAgd = new SegmentoAgendaBean();
112       segAgd.setCodigo(destaqueItem.getCodDtqir());
113       if (destaqueItem.getAgendaOcorrenciaAgeo() != null) {
114         segAgd.setDescricao(new AgendaOcorrenciaDao(request).getLabelExibicao(destaqueItem.getAgendaOcorrenciaAgeo()));
115         segAgd.setData(destaqueItem.getAgendaOcorrenciaAgeo().getDataEventoAgeo());
116       }
117       if (destaqueItem.getSegmentoItemSgti() != null) {
118         segAgd.setDescricao(destaqueItem.getSegmentoItemSgti().getTituloSgti());
119         segAgd.setData(destaqueItem.getSegmentoItemSgti().getDataItemSgti());
120       }
121       retorno.add(segAgd);
122       Collections.sort(retorno, new Comparator() {
123         public int compare(Object o1, Object o2) {
124           SegmentoAgendaBean sa1 = (SegmentoAgendaBean) o1;
125           SegmentoAgendaBean sa2 = (SegmentoAgendaBean) o2;
126           return sa1.getData().compareTo(sa2.getData());
127         }
128       });
129     }
130     return retorno;
131   }
132 
133   /**
134    * Retorna uma lista com todos os Segmentos e Agendas ativas encapsulados em
135    * objetos SegmentoAgendaBean
136    * @return
137    * @throws ECARException
138    */
139   public List getSegmentosAgendas() throws ECARException {
140     List segmentos = new SegmentoDao(request).getAtivos();
141 
142     List retorno = new ArrayList();
143 
144     Iterator itS = segmentos.iterator();
145     while (itS.hasNext()) {
146       SegmentoSgt segmento = (SegmentoSgt) itS.next();
147       SegmentoAgendaBean segAgd = new SegmentoAgendaBean();
148       segAgd.setAgenda(false);
149       segAgd.setSegmento(true);
150       segAgd.setDescricao(segmento.getTituloSgt());
151       segAgd.setCodigo(segmento.getCodSgt());
152       retorno.add(segAgd);
153     }
154     List agendas = new AgendaDao(request).getAtivos();
155     Iterator itA = agendas.iterator();
156     while (itA.hasNext()) {
157       AgendaAge agenda = (AgendaAge) itA.next();
158       SegmentoAgendaBean segAgd = new SegmentoAgendaBean();
159       segAgd.setAgenda(true);
160       segAgd.setSegmento(false);
161       segAgd.setDescricao(agenda.getEventoAge());
162       segAgd.setCodigo(agenda.getCodAge());
163       retorno.add(segAgd);
164     }
165 
166     Collections.sort(retorno, new Comparator() {
167       public int compare(Object o1, Object o2) {
168         SegmentoAgendaBean sa1 = (SegmentoAgendaBean) o1;
169         SegmentoAgendaBean sa2 = (SegmentoAgendaBean) o2;
170         return sa1.getDescricao().compareToIgnoreCase(sa2.getDescricao());
171       }
172     });
173     return retorno;
174   }
175 
176   /**
177    * Vincula os itens de Segmentos da lista a uma sub área de destaque
178    * @param listaDeSegmentosItem
179    * @param subArea
180    * @throws ECARException
181    */
182   public void vincularSegmentosaSubArea(List listaDeSegmentosItem, DestaqueSubAreaDtqsa subArea) throws ECARException {
183     List objsParaSalvar = new ArrayList();
184     Iterator it = listaDeSegmentosItem.iterator();
185     while (it.hasNext()) {
186       SegmentoItemSgti segmento = (SegmentoItemSgti) it.next();
187       DestaqueItemRelDtqir destaqueItem = new DestaqueItemRelDtqir();
188       destaqueItem.setDestaqueSubAreaDtqsa(subArea);
189       destaqueItem.setSegmentoItemSgti(segmento);
190       objsParaSalvar.add(destaqueItem);
191     }
192     super.salvarOuAlterar(objsParaSalvar);
193   }
194 
195   /**
196    * Vincula as ocorrências de agenda da lista a uma sub área de destaque
197    * @param listaDeAgendas
198    * @param subArea
199    * @throws ECARException
200    */
201   public void vincularAgendasSubArea(List listaDeAgendas, DestaqueSubAreaDtqsa subArea) throws ECARException {
202     List objsParaSalvar = new ArrayList();
203     Iterator it = listaDeAgendas.iterator();
204     while (it.hasNext()) {
205       AgendaOcorrenciaAgeo agenda = (AgendaOcorrenciaAgeo) it.next();
206       DestaqueItemRelDtqir destaqueItem = new DestaqueItemRelDtqir();
207       destaqueItem.setDestaqueSubAreaDtqsa(subArea);
208       destaqueItem.setAgendaOcorrenciaAgeo(agenda);
209       destaqueItem.setAgendaAge(agenda.getAgendaAge());
210       objsParaSalvar.add(destaqueItem);
211     }
212     super.salvarOuAlterar(objsParaSalvar);
213   }
214 
215   /**
216    * Retira vinculo entre os Destaques da lista e a sub área de destaque
217    * (exclusão de destaques)
218    * @param listaDeDestaques
219    * @throws ECARException
220    */
221   public void desvincularDestaquesSubArea(List listaDeDestaques) throws ECARException {
222     super.excluir(listaDeDestaques);
223   }
224 
225   /**
226    * Retorna todas subáreas e os itens associados a estas relativos área de capa
227    * @return DestaqueSubAreaDtqsa
228    * @throws ECARException
229    */
230   public List getSubAreaCapa() throws ECARException {
231     try {
232       Query query = this.getSession().createQuery("from DestaqueSubAreaDtqsa sub where sub.codDtqsa = 1 ");
233       return query.list();
234     } catch (Exception e) {
235       this.logger.error(e);
236       throw new ECARException(e);
237     }
238   }
239 
240 }