View Javadoc

1   /*
2    * Criado em 15/02/2005
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 comum.database.Dao;
14  
15  import ecar.exception.ECARException;
16  import ecar.pojo.ItemEstUsutpfuacIettutfa;
17  import ecar.pojo.ItemEstUsutpfuacIettutfaPK;
18  import ecar.pojo.ItemEstrutUsuarioIettus;
19  import ecar.pojo.ItemEstruturaIett;
20  import ecar.pojo.TipoFuncAcompTpfa;
21  import ecar.pojo.UsuarioAtributoUsua;
22  import ecar.pojo.UsuarioUsu;
23  
24  /**
25   * @author evandro
26   */
27  public class ItemEstUsutpfuacDao extends Dao {
28  
29    public ItemEstUsutpfuacDao() {
30      super();
31    }
32  
33    public ItemEstUsutpfuacDao(HttpServletRequest request) {
34      super();
35      this.request = request;
36    }
37  
38    /**
39     * Pesquisa ItemEstUsutpfuac referente a ItemEstrutura e funcao
40     * @param itemEstrutura
41     * @param funcao
42     * @return ItemEstUsutpfuac - senão encontrar retorna NULL
43     * @throws ECARException
44     */
45    public ItemEstUsutpfuacIettutfa getUsuarioAcompanhamento(ItemEstruturaIett itemEstrutura, TipoFuncAcompTpfa funcao) throws ECARException {
46  
47      ItemEstUsutpfuacIettutfa itemEstUsu = new ItemEstUsutpfuacIettutfa();
48  
49      itemEstUsu.setItemEstruturaIett(itemEstrutura);
50      itemEstUsu.setTipoFuncAcompTpfa(funcao);
51  
52      /* buscar em tpfuac o usuário a partir de codFuncao e codItem */
53      List lista = pesquisar(itemEstUsu, new String[] { "tipoFuncAcompTpfa.codTpfa", "asc" });
54      Iterator it = lista.iterator();
55  
56      /* se não encontrar nome do usuário, devolver vazio */
57      if (it.hasNext()) {
58        return (ItemEstUsutpfuacIettutfa) it.next();
59      }
60  
61      return null;
62    }
63  
64    /**
65     * Obter os ItemEstUsutpfuacIettutfa de uma lista de itens
66     * @param listItemEstrutura
67     * @return List
68     * @throws ECARException
69     */
70    public List getItemEstUsutpfuacIettutfa(List listItemEstrutura) throws ECARException {
71      List retorno = new ArrayList();
72      Iterator it = listItemEstrutura.iterator();
73      while (it.hasNext()) {
74        ItemEstruturaIett iett = (ItemEstruturaIett) it.next();
75        if (iett.getItemEstUsutpfuacIettutfas() != null) {
76          retorno.addAll(iett.getItemEstUsutpfuacIettutfas());
77        }
78      }
79      return retorno;
80    }
81  
82    /**
83     * Retorna uma lista com todos os usuários que emitem parecer no
84     * acompanhamento de um item.
85     * @param itemEstrutura
86     * @param funcao
87     * @return
88     * @throws ECARException
89     */
90    public List getUsuariosAcompanhamento(ItemEstruturaIett itemEstrutura) throws ECARException {
91  
92      List retorno = new ArrayList();
93  
94      ItemEstUsutpfuacIettutfa itemEstUsu = new ItemEstUsutpfuacIettutfa();
95  
96      itemEstUsu.setItemEstruturaIett(itemEstrutura);
97  
98      List lista = pesquisar(itemEstUsu, null);
99      Iterator it = lista.iterator();
100 
101     /* se não encontrar nome do usuário, devolver vazio */
102     while (it.hasNext()) {
103       ItemEstUsutpfuacIettutfa item = (ItemEstUsutpfuacIettutfa) it.next();
104       if (item.getUsuarioUsu() != null) {
105         retorno.add(item.getUsuarioUsu());
106       }
107       else if (item.getSisAtributoSatb() != null) {
108         if (item.getSisAtributoSatb().getUsuarioAtributoUsuas() != null) {
109           Iterator itUsuariosAtributos = item.getSisAtributoSatb().getUsuarioAtributoUsuas().iterator();
110           while (itUsuariosAtributos.hasNext()) {
111             retorno.add(((UsuarioAtributoUsua) itUsuariosAtributos.next()).getUsuarioUsu());
112           }
113         }
114       }
115     }
116     return retorno;
117   }
118 
119   /**
120    * Retorna um objeto ItemEstUsutpfuacIettutfa a partir dos códigos
121    * @param codItemEstrutura
122    * @param codFuncaoAcompanhamento
123    * @param codUsuario
124    * @return
125    * @throws ECARException
126    */
127   public ItemEstUsutpfuacIettutfa buscar(Long codIett, Long codTpfa) throws ECARException {
128     ItemEstUsutpfuacIettutfaPK chave = new ItemEstUsutpfuacIettutfaPK();
129     ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = null;
130     try {
131 
132       chave.setCodIett(codIett);
133       chave.setCodTpfa(codTpfa);
134 
135       return (ItemEstUsutpfuacIettutfa) super.buscar(ItemEstUsutpfuacIettutfa.class, chave);
136 
137     } catch (ECARException e) {
138 
139       return itemEstUsutpfuacIettutfa;
140     }
141   }
142 
143   /**
144    * Retorna true se o Usuario possuir alguma função que informa andamento para
145    * o item passado como parâmetro.
146    * @param usuario
147    * @param item
148    * @return
149    * @throws ECARException
150    */
151   public boolean getFuncaoAcompInfAndamento(UsuarioUsu usuario, ItemEstruturaIett item) throws ECARException {
152     boolean infAndamento = false;
153 
154     ItemEstrutUsuarioIettus itemEstUsu = new ItemEstrutUsuarioIettus();
155 
156     itemEstUsu.setItemEstruturaIett(item);
157     itemEstUsu.setUsuarioUsu(usuario);
158     itemEstUsu.setCodTpPermIettus("F");
159 
160     List lista = pesquisar(itemEstUsu, new String[] { "codIettus", "asc" });
161     Iterator it = lista.iterator();
162 
163     while (it.hasNext()) {
164       ItemEstrutUsuarioIettus itemEstUsuLista = (ItemEstrutUsuarioIettus) it.next();
165 
166       if ("S".equalsIgnoreCase(itemEstUsuLista.getIndInfAndamentoIettus()))
167         infAndamento = true;
168     }
169 
170     Iterator itUsuarios = item.getItemEstUsutpfuacIettutfas().iterator();
171 
172     while (itUsuarios.hasNext() && !infAndamento) {
173 
174       ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = (ItemEstUsutpfuacIettutfa) itUsuarios.next();
175 
176       if (itemEstUsutpfuacIettutfa.getSisAtributoSatb() != null) {
177 
178         itemEstUsu = new ItemEstrutUsuarioIettus();
179 
180         itemEstUsu.setItemEstruturaIett(item);
181         itemEstUsu.setSisAtributoSatb(itemEstUsutpfuacIettutfa.getSisAtributoSatb());
182         itemEstUsu.setCodTpPermIettus("F");
183 
184         List listaItemEstUsu = pesquisar(itemEstUsu, new String[] { "codIettus", "asc" });
185 
186         Iterator itItemEstUsu = listaItemEstUsu.iterator();
187 
188         while (itItemEstUsu.hasNext()) {
189 
190           ItemEstrutUsuarioIettus itemEstUsuLista = (ItemEstrutUsuarioIettus) itItemEstUsu.next();
191 
192           if ("S".equalsIgnoreCase(itemEstUsuLista.getIndInfAndamentoIettus())) {
193             if (new UsuarioDao().getUsuariosBySisAtributoSatb(itemEstUsutpfuacIettutfa.getSisAtributoSatb()).contains(usuario)) {
194               infAndamento = true;
195               break;
196             }
197           }
198 
199         }
200 
201       }
202     }
203 
204     return infAndamento;
205   }
206 
207   /**
208    * Devolve uma lista de ItemEstUsutpfuac de acordo com a ordem correta de
209    * filho para pai. A lista contém somente FUAC que tenham funcoes que emitem
210    * posicao
211    * @param item
212    * @return
213    * @throws ECARException
214    */
215   public List getFuacEmitePosicaoOrderByFuncAcomp(ItemEstruturaIett item) throws ECARException {
216 
217     List lResultado = new ArrayList();
218 
219     TipoFuncAcompDao tpfaDao = new TipoFuncAcompDao(request);
220     // lista mestre com a ordem correta
221     List lFuncAcomp = tpfaDao.ordenarTpfaBySequencia(tpfaDao.getTipoFuncAcompEmitePosicao(), item.getEstruturaEtt());
222 
223     // lista dos fuac a serem ordenados
224     Set lItemFuac = item.getItemEstUsutpfuacIettutfas();
225 
226     TipoFuncAcompTpfa funcao;
227     ItemEstUsutpfuacIettutfa itemFuac;
228 
229     if (item != null && lItemFuac != null) {
230       // loop nas funcoes em ordem de filho para pai
231       Iterator itFunc = lFuncAcomp.iterator();
232       while (itFunc.hasNext()) {
233         funcao = (TipoFuncAcompTpfa) itFunc.next();
234         Iterator itFuac = lItemFuac.iterator();
235         // busca no fuac a funcao que corresponde à hierarquia
236         while (itFuac.hasNext()) {
237           itemFuac = (ItemEstUsutpfuacIettutfa) itFuac.next();
238           if (itemFuac.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
239             lResultado.add(itemFuac);
240             break;
241           }
242         }
243       }
244     }
245     return lResultado;
246   }
247 
248   /**
249    * Devolve uma lista de ItemEstUsutpfuac de acordo com a ordem correta de
250    * filho para pai.
251    * @param item
252    * @return
253    * @throws ECARException
254    */
255   public List getFuacOrderByFuncAcomp(ItemEstruturaIett item) throws ECARException {
256 
257     List lResultado = new ArrayList();
258 
259     List lFuncAcomp = new TipoFuncAcompDao(request).getTipoFuncAcompOrdemFilhoAoPai();
260 
261     // lista dos fuac a serem ordenados
262     Set lItemFuac = item.getItemEstUsutpfuacIettutfas();
263 
264     TipoFuncAcompTpfa funcao;
265     ItemEstUsutpfuacIettutfa itemFuac;
266 
267     if (item != null && lItemFuac != null) {
268       // loop nas funcoes em ordem de filho para pai
269       Iterator itFunc = lFuncAcomp.iterator();
270       while (itFunc.hasNext()) {
271         funcao = (TipoFuncAcompTpfa) itFunc.next();
272         Iterator itFuac = lItemFuac.iterator();
273         // busca no fuac a funcao que corresponde à hierarquia
274         while (itFuac.hasNext()) {
275           itemFuac = (ItemEstUsutpfuacIettutfa) itFuac.next();
276           if (itemFuac.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
277             lResultado.add(itemFuac);
278             break;
279           }
280         }
281       }
282     }
283     return lResultado;
284   }
285 
286 }