View Javadoc

1   /*
2    * Criado em 07/12/2004
3    */
4   package ecar.dao;
5   
6   import java.io.FileWriter;
7   import java.io.IOException;
8   import java.util.ArrayList;
9   import java.util.Collections;
10  import java.util.Comparator;
11  import java.util.Enumeration;
12  import java.util.HashSet;
13  import java.util.Iterator;
14  import java.util.List;
15  import java.util.Set;
16  
17  import javax.servlet.http.HttpServletRequest;
18  
19  import org.hibernate.HibernateException;
20  import org.hibernate.Query;
21  import org.hibernate.Transaction;
22  
23  import comum.database.Dao;
24  import comum.database.SentinelaUtil;
25  import comum.util.Data;
26  import comum.util.Pagina;
27  
28  import ecar.exception.ECARException;
29  import ecar.permissao.ValidaPermissao;
30  import ecar.pojo.ConfiguracaoCfg;
31  import ecar.pojo.EntidadeEnt;
32  import ecar.pojo.OrgaoOrg;
33  import ecar.pojo.PaiFilho;
34  import ecar.pojo.SisAtributoSatb;
35  import ecar.pojo.SisGrupoAtributoSga;
36  import ecar.pojo.TipoEnderecoCorrTpec;
37  import ecar.pojo.Uf;
38  import ecar.pojo.UsuarioAtributoUsua;
39  import ecar.pojo.UsuarioUsu;
40  import gov.pr.celepar.sentinela.comunicacao.SentinelaAdmInterface;
41  import gov.pr.celepar.sentinela.comunicacao.SentinelaInterface;
42  import gov.pr.celepar.sentinela.comunicacao.SentinelaParam;
43  import gov.pr.celepar.sentinela.excecao.SentinelaException;
44  
45  /**
46   * @author felipev
47   */
48  public class UsuarioDao extends Dao {
49  
50    public static String INFORMACAO_NAO_LOCALIZADA_SENTINELA = "Usuário não encontrado";
51    private static String EMAIL_NAO_LOCALIZADO_SENTINELA = "";
52  
53    /*
54     * private SisGrupoAtributoDao sisGrupoAtributoDao = null; private
55     * ConfiguracaoDao configuracaoDao = null;
56     */
57  
58    ValidaPermissao validaPermissao = new ValidaPermissao();
59  
60    public UsuarioDao() {
61      super();
62    }
63  
64    /**
65     * Construtor. Chama o Session factory do Hibernate
66     */
67  
68    public UsuarioDao(HttpServletRequest request) {
69      super();
70      this.request = request;
71      /*
72       * sisGrupoAtributoDao = new SisGrupoAtributoDao(request); configuracaoDao =
73       * new ConfiguracaoDao(request);
74       */
75    }
76  
77    /**
78     * Atribui os valores passados por request a um objeto Usuário
79     * @param request Request
80     * @param estrutura Objeto Usuário no qual serão atribuidos os valores
81     * @param usarParamStr <b>True </b> se os parâmetros serão recuperados por
82     *          Pagina.getParamStr <b>False </b> se os parãmetros serão
83     *          recuperados por Pagina.getParam
84     * @throws ECARException
85     */
86    public void setUsuario(HttpServletRequest request, UsuarioUsu usuario, boolean usarParamStr) throws ECARException {
87  
88      if (usarParamStr) {
89        // usuario.setNomeUsu(Pagina.getParamStr(request, "nomeUsu"));
90        usuario.setDataNascimentoUsu(Data.parseDate(Pagina.getParamStr(request, "dataNascimentoUsu")));
91        if (!"".equals(Pagina.getParamStr(request, "dataNascimentoUsu")))
92          usuario.setDataNascimentoUsu(Data.parseDate(Pagina.getParamStr(request, "dataNascimentoUsu")));
93        else
94          usuario.setDataNascimentoUsu(null);
95        // usuario.setCnpjCpfUsu(Pagina.getParamStr(request, "cnpjCpfUsu"));
96        usuario.setResidEnderecoUsu(Pagina.getParamStr(request, "residEnderecoUsu"));
97        usuario.setResidComplementoUsu(Pagina.getParamStr(request, "residComplementoUsu"));
98        usuario.setResidBairroUsu(Pagina.getParamStr(request, "residBairroUsu"));
99        usuario.setResidCidadeUsu(Pagina.getParamStr(request, "residCidadeUsu"));
100       usuario.setResidCepUsu(Pagina.getParamStr(request, "residCepUsu"));
101       usuario.setResidBairroUsu(Pagina.getParamStr(request, "residBairroUsu"));
102       usuario.setResidDddUsu(Pagina.getParamStr(request, "residDddUsu"));
103       usuario.setResidTelefoneUsu(Pagina.getParamStr(request, "residTelefoneUsu"));
104       usuario.setResidRamalUsu(Pagina.getParamStr(request, "residRamalUsu"));
105       usuario.setComercEnderecoUsu(Pagina.getParamStr(request, "comercEnderecoUsu"));
106       usuario.setComercComplementoUsu(Pagina.getParamStr(request, "comercComplementoUsu"));
107       usuario.setComercBairroUsu(Pagina.getParamStr(request, "comercBairroUsu"));
108       usuario.setComercCidadeUsu(Pagina.getParamStr(request, "comercCidadeUsu"));
109       usuario.setComercCepUsu(Pagina.getParamStr(request, "comercCepUsu"));
110       usuario.setComercBairroUsu(Pagina.getParamStr(request, "comercBairroUsu"));
111       usuario.setComercDddUsu(Pagina.getParamStr(request, "comercDddUsu"));
112       usuario.setComercTelefoneUsu(Pagina.getParamStr(request, "comercTelefoneUsu"));
113       usuario.setComercRamalUsu(Pagina.getParamStr(request, "comercRamalUsu"));
114       usuario.setFaxUsu(Pagina.getParamStr(request, "faxUsu"));
115       usuario.setDddFaxUsu(Pagina.getParamStr(request, "dddFaxUsu"));
116       // usuario.setEmail1Usu(Pagina.getParamStr(request, "email1Usu"));
117       usuario.setEmail2Usu(Pagina.getParamStr(request, "email2Usu"));
118       usuario.setIdDominioUsu(Pagina.getParamStr(request, "idDominioUsu"));
119       // usuario.setIdUsuarioUsu(Pagina.getParamStr(request,
120       // "idUsuarioUsu"));
121       // usuario.setSenhaUsu(Pagina.getParamStr(request, "senhaUsu"));
122       // usuario.setPerguntaLembreteUsu(Pagina.getParamStr(request,"perguntaLembreteUsu"));
123       // usuario.setRespostaLembreteUsu(Pagina.getParamStr(request,"respostaLembreteUsu"));
124       usuario.setIndAtivoUsu(Pagina.getParamStr(request, "indAtivoUsu"));
125     }
126     else {
127       // usuario.setNomeUsu(Pagina.getParam(request, "nomeUsu"));
128       if (!"".equals(Pagina.getParamStr(request, "dataNascimentoUsu")))
129         usuario.setDataNascimentoUsu(Data.parseDate(Pagina.getParamStr(request, "dataNascimentoUsu")));
130       // usuario.setCnpjCpfUsu(Pagina.getParam(request, "cnpjCpfUsu"));
131       usuario.setResidEnderecoUsu(Pagina.getParam(request, "residEnderecoUsu"));
132       usuario.setResidComplementoUsu(Pagina.getParam(request, "residComplementoUsu"));
133       usuario.setResidBairroUsu(Pagina.getParam(request, "residBairroUsu"));
134       usuario.setResidCidadeUsu(Pagina.getParam(request, "residCidadeUsu"));
135       usuario.setResidCepUsu(Pagina.getParam(request, "residCepUsu"));
136       usuario.setResidBairroUsu(Pagina.getParam(request, "residBairroUsu"));
137       usuario.setResidDddUsu(Pagina.getParam(request, "residDddUsu"));
138       usuario.setResidTelefoneUsu(Pagina.getParam(request, "residTelefoneUsu"));
139       usuario.setResidRamalUsu(Pagina.getParam(request, "residRamalUsu"));
140       usuario.setComercEnderecoUsu(Pagina.getParam(request, "comercEnderecoUsu"));
141       usuario.setComercComplementoUsu(Pagina.getParam(request, "comercComplementoUsu"));
142       usuario.setComercBairroUsu(Pagina.getParam(request, "comercBairroUsu"));
143       usuario.setComercCidadeUsu(Pagina.getParam(request, "comercCidadeUsu"));
144       usuario.setComercCepUsu(Pagina.getParam(request, "comercCepUsu"));
145       usuario.setComercBairroUsu(Pagina.getParam(request, "comercBairroUsu"));
146       usuario.setComercDddUsu(Pagina.getParam(request, "comercDddUsu"));
147       usuario.setComercTelefoneUsu(Pagina.getParam(request, "comercTelefoneUsu"));
148       usuario.setComercRamalUsu(Pagina.getParam(request, "comercRamalUsu"));
149       usuario.setFaxUsu(Pagina.getParam(request, "faxUsu"));
150       usuario.setDddFaxUsu(Pagina.getParam(request, "dddFaxUsu"));
151       // usuario.setEmail1Usu(Pagina.getParam(request, "email1Usu"));
152       usuario.setEmail2Usu(Pagina.getParam(request, "email2Usu"));
153       usuario.setIdDominioUsu(Pagina.getParam(request, "idDominioUsu"));
154       // usuario.setIdUsuarioUsu(Pagina.getParam(request,
155       // "idUsuarioUsu"));
156       // usuario.setSenhaUsu(Pagina.getParam(request, "senhaUsu"));
157       // usuario.setPerguntaLembreteUsu(Pagina.getParam(request,"perguntaLembreteUsu"));
158       // usuario.setRespostaLembreteUsu(Pagina.getParam(request,"respostaLembreteUsu"));
159       usuario.setIndAtivoUsu(Pagina.getParam(request, "indAtivoUsu"));
160     }
161 
162     usuario.setEmail1Usu(usuario.getEmail1UsuSent());
163     usuario.setNomeUsu(usuario.getNomeUsuSent());
164 
165     /*
166      * Igor em 01/06/2006 Inclusão de "n" orgaos por usuario
167      */
168     if (Pagina.getParamInt(request, "numOrgaos") > 0)
169       usuario.setOrgaoOrgs(new HashSet());
170     for (int i = 1; i <= Pagina.getParamInt(request, "numOrgaos"); i++) {
171       if ("S".equals(Pagina.getParamStr(request, "adicionaOrgaoOrg" + i))) {
172         if (!"".equals(Pagina.getParamStr(request, "orgaoOrg" + i)))
173           usuario.getOrgaoOrgs().add(((OrgaoOrg) super.buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "orgaoOrg" + i)))));
174       }
175     }
176     /*
177      * Fim de Igor (01/06/2006)
178      */
179 
180     /*
181      * José André em 16/05/2008 Inclusão de "n" entidades por usuario
182      */
183     if (Pagina.getParamInt(request, "numEntidades") > 0)
184       usuario.setEntidadeEnts(new HashSet());
185     for (int i = 1; i <= Pagina.getParamInt(request, "numEntidades"); i++) {
186       if ("S".equals(Pagina.getParamStr(request, "adicionaEntidadeEnt" + i))) {
187         if (!"".equals(Pagina.getParamStr(request, "entidadeEnt" + i)))
188           usuario.getEntidadeEnts().add(((EntidadeEnt) super.buscar(EntidadeEnt.class, Long.valueOf(Pagina.getParamStr(request, "entidadeEnt" + i)))));
189       }
190     }
191     /*
192      * Fim José André (16/05/2008)
193      */
194 
195     if (!"".equals(Pagina.getParamStr(request, "residUfUsu")))
196       usuario.setUfByResidUfUsu((Uf) super.buscar(Uf.class, Pagina.getParamStr(request, "residUfUsu")));
197     if (!"".equals(Pagina.getParamStr(request, "comercUfUsu")))
198       usuario.setUfByComercUfUsu((Uf) super.buscar(Uf.class, Pagina.getParamStr(request, "comercUfUsu")));
199     if (!"".equals(Pagina.getParamStr(request, "tipoEnderecoCorrTpec")))
200       usuario.setTipoEnderecoCorrTpec((TipoEnderecoCorrTpec) super.buscar(TipoEnderecoCorrTpec.class, Long.valueOf(Pagina.getParamStr(request, "tipoEnderecoCorrTpec"))));
201 
202     setAtributosUsuario(request, usuario, false);
203     setClasseAcessoUsuario(request, usuario);
204 
205   }
206 
207   /**
208    * Atribui os valores passados por request a um objeto Usuário
209    * @param request Request
210    * @param estrutura Objeto Usuário no qual serão atribuidos os valores
211    * @throws ECARException
212    */
213   public void setUsuarioCadastroSite(HttpServletRequest request, UsuarioUsu usuario) throws ECARException {
214 
215     // usuario.setNomeUsu(Pagina.getParamStr(request, "nomeUsu"));
216     // usuario.setDataNascimentoUsu(Data.parseDate(Pagina.getParamStr(request,
217     // "dataNascimentoUsu")));
218     if (!"".equals(Pagina.getParamStr(request, "dataNascimentoUsu")))
219       usuario.setDataNascimentoUsu(Data.parseDate(Pagina.getParamStr(request, "dataNascimentoUsu")));
220     else
221       usuario.setDataNascimentoUsu(null);
222     // usuario.setCnpjCpfUsu(Pagina.getParamStr(request, "cnpjCpfUsu"));
223     usuario.setResidEnderecoUsu(Pagina.getParamStr(request, "residEnderecoUsu"));
224     usuario.setResidComplementoUsu(Pagina.getParamStr(request, "residComplementoUsu"));
225     usuario.setResidBairroUsu(Pagina.getParamStr(request, "residBairroUsu"));
226     usuario.setResidCidadeUsu(Pagina.getParamStr(request, "residCidadeUsu"));
227     usuario.setResidCepUsu(Pagina.getParamStr(request, "residCepUsu"));
228     usuario.setResidBairroUsu(Pagina.getParamStr(request, "residBairroUsu"));
229     usuario.setResidDddUsu(Pagina.getParamStr(request, "residDddUsu"));
230     usuario.setResidTelefoneUsu(Pagina.getParamStr(request, "residTelefoneUsu"));
231     usuario.setResidRamalUsu(Pagina.getParamStr(request, "residRamalUsu"));
232     usuario.setComercEnderecoUsu(Pagina.getParamStr(request, "comercEnderecoUsu"));
233     usuario.setComercComplementoUsu(Pagina.getParamStr(request, "comercComplementoUsu"));
234     usuario.setComercBairroUsu(Pagina.getParamStr(request, "comercBairroUsu"));
235     usuario.setComercCidadeUsu(Pagina.getParamStr(request, "comercCidadeUsu"));
236     usuario.setComercCepUsu(Pagina.getParamStr(request, "comercCepUsu"));
237     usuario.setComercBairroUsu(Pagina.getParamStr(request, "comercBairroUsu"));
238     usuario.setComercDddUsu(Pagina.getParamStr(request, "comercDddUsu"));
239     usuario.setComercTelefoneUsu(Pagina.getParamStr(request, "comercTelefoneUsu"));
240     usuario.setComercRamalUsu(Pagina.getParamStr(request, "comercRamalUsu"));
241     usuario.setFaxUsu(Pagina.getParamStr(request, "faxUsu"));
242     usuario.setDddFaxUsu(Pagina.getParamStr(request, "dddFaxUsu"));
243     // usuario.setEmail1Usu(Pagina.getParamStr(request, "email1Usu"));
244     usuario.setEmail2Usu(Pagina.getParamStr(request, "email2Usu"));
245     // usuario.setSenhaUsu(Pagina.getParamStr(request, "senhaUsu"));
246     // usuario.setPerguntaLembreteUsu(Pagina.getParamStr(request,"perguntaLembreteUsu"));
247     // usuario.setRespostaLembreteUsu(Pagina.getParamStr(request,"respostaLembreteUsu"));
248     if (!"".equals(Pagina.getParamStr(request, "residUfUsu")))
249       usuario.setUfByResidUfUsu((Uf) super.buscar(Uf.class, Pagina.getParamStr(request, "residUfUsu")));
250     if (!"".equals(Pagina.getParamStr(request, "comercUfUsu")))
251       usuario.setUfByComercUfUsu((Uf) super.buscar(Uf.class, Pagina.getParamStr(request, "comercUfUsu")));
252     if (!"".equals(Pagina.getParamStr(request, "tipoEnderecoCorrTpec")))
253       usuario.setTipoEnderecoCorrTpec((TipoEnderecoCorrTpec) super.buscar(TipoEnderecoCorrTpec.class, Long.valueOf(Pagina.getParamStr(request, "tipoEnderecoCorrTpec"))));
254 
255     /*
256      * Igor em 01/06/2006 Inclusão de "n" orgaos por usuario
257      */
258     if (Pagina.getParamInt(request, "numOrgaos") > 0)
259       usuario.setOrgaoOrgs(new HashSet());
260     for (int i = 1; i <= Pagina.getParamInt(request, "numOrgaos"); i++) {
261       if ("S".equals(Pagina.getParamStr(request, "adicionaOrgaoOrg" + i))) {
262         if (!"".equals(Pagina.getParamStr(request, "orgaoOrg" + i)))
263           usuario.getOrgaoOrgs().add(((OrgaoOrg) super.buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "orgaoOrg" + i)))));
264       }
265     }
266     /*
267      * Fim de Igor (01/06/2006)
268      */
269 
270     setAtributosUsuario(request, usuario, true);
271 
272   }
273 
274   /**
275    * Método para criar a coleção de atributos de Classe de Acesso do Usuário a
276    * partir de parâmetros passados por request
277    * @param request
278    * @param usuario
279    * @throws ECARException
280    */
281   public void setClasseAcessoUsuario(HttpServletRequest request, UsuarioUsu usuario) throws ECARException {
282     String[] classesAcesso = request.getParameterValues("classeAcesso");
283     if (classesAcesso != null) {
284       for (int i = 0; i < classesAcesso.length; i++) {
285         UsuarioAtributoUsua usuarioAtributo = new UsuarioAtributoUsua();
286         usuarioAtributo.setUsuarioUsu(usuario);
287         usuarioAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(classesAcesso[i])));
288         usuarioAtributo.setDataInclusao(Data.getDataAtual());
289         if (usuario.getUsuarioAtributoUsuas() == null)
290           usuario.setUsuarioAtributoUsuas(new HashSet());
291         usuario.getUsuarioAtributoUsuas().add(usuarioAtributo);
292       }
293 
294     }
295   }
296 
297   /**
298    * Método para criar a coleção de atributos do usuário a partir de parâmetros
299    * passados por request
300    * @param request
301    * @param usuario Objeto usuário a ser manipulado
302    * @throws ECARException
303    */
304   public void setAtributosUsuario(HttpServletRequest request, UsuarioUsu usuario, boolean cadastroSite) throws ECARException {
305     usuario.setUsuarioAtributoUsuas(null);
306     List lAtributos;
307     if (cadastroSite)
308       lAtributos = new SisGrupoAtributoDao(request).getGruposAtributosCadastroUsuarioSite();
309     else
310       lAtributos = new SisGrupoAtributoDao(request).getGruposAtributosCadastro("U");
311     Iterator it = lAtributos.iterator();
312     while (it.hasNext()) {
313       SisGrupoAtributoSga grupoAtributo = (SisGrupoAtributoSga) it.next();
314       String tipoExibicao = "";
315       if (grupoAtributo.getSisTipoExibicGrupoCadUsuSteg() != null) {
316         tipoExibicao = grupoAtributo.getSisTipoExibicGrupoCadUsuSteg().getCodSteg().toString();
317       }
318       else {
319         tipoExibicao = grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString();
320       }
321       if (!"".equals(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()))) {
322         UsuarioAtributoUsua usuarioAtributo = new UsuarioAtributoUsua();
323         usuarioAtributo.setUsuarioUsu(usuario);
324         /*
325          * Caso o tipo de campo seja texto considera-se que o Grupo de Atributos
326          * possuirá apenas 1 atributo que o representa.
327          */
328         if (SisTipoExibicGrupoDao.TEXT.equals(tipoExibicao) || SisTipoExibicGrupoDao.VALIDACAO.equals(tipoExibicao) || SisTipoExibicGrupoDao.TEXTAREA.equals(tipoExibicao) || SisTipoExibicGrupoDao.IMAGEM.equals(tipoExibicao)) {
329           if (grupoAtributo.getSisAtributoSatbs() != null && grupoAtributo.getSisAtributoSatbs().size() > 0) {
330             usuarioAtributo.setInformacao(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()));
331             usuarioAtributo.setSisAtributoSatb((SisAtributoSatb) grupoAtributo.getSisAtributoSatbs().iterator().next());
332             usuarioAtributo.setDataInclusao(Data.getDataAtual());
333             if (usuario.getUsuarioAtributoUsuas() == null)
334               usuario.setUsuarioAtributoUsuas(new HashSet());
335             usuario.getUsuarioAtributoUsuas().add(usuarioAtributo);
336           }
337         }
338         else {
339 
340           String[] atributos = request.getParameterValues("a" + grupoAtributo.getCodSga().toString());
341           for (int i = 0; i < atributos.length; i++) {
342             /*
343              * Tenho que criar novamente o usuário atributo senão ele não é
344              * adicionado no set no final deste laço
345              */
346             usuarioAtributo = new UsuarioAtributoUsua();
347             usuarioAtributo.setUsuarioUsu(usuario);
348             usuarioAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])));
349             usuarioAtributo.setDataInclusao(Data.getDataAtual());
350             if (usuario.getUsuarioAtributoUsuas() == null)
351               usuario.setUsuarioAtributoUsuas(new HashSet());
352             usuario.getUsuarioAtributoUsuas().add(usuarioAtributo);
353           }
354         }
355       }
356       /*
357        * Foi necessário alterar o nome dos campos dos elementos multitexto,
358        * adicionando "-codSatb" Assim, ficamos com o nome do campo no seguinte
359        * padrão: "a + codSteg + - + codSatb" (ex.: a12-38) Isto foi feito visto
360        * a diferença existente entre um grupo com suporte a 1 campo texto e
361        * este, que suporta vários campos texto.
362        */
363       else {
364         if (SisTipoExibicGrupoDao.MULTITEXTO.equals(tipoExibicao)) {
365           Enumeration lAtrib = request.getParameterNames();
366           while (lAtrib.hasMoreElements()) {
367             String atrib = (String) lAtrib.nextElement();
368             if (atrib.lastIndexOf('-') > 0) {
369               String nomeAtrib = atrib.substring(0, atrib.lastIndexOf('-'));
370               String nomeCampo = atrib.substring(atrib.lastIndexOf('-') + 1);
371               if (nomeAtrib.equals("a" + grupoAtributo.getCodSga().toString()) && !"".equals(Pagina.getParamStr(request, atrib))) {
372                 UsuarioAtributoUsua usuarioAtributo = new UsuarioAtributoUsua();
373                 usuarioAtributo.setUsuarioUsu(usuario);
374                 usuarioAtributo.setInformacao(Pagina.getParamStr(request, atrib));
375                 usuarioAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(nomeCampo)));
376                 usuarioAtributo.setDataInclusao(Data.getDataAtual());
377                 if (usuario.getUsuarioAtributoUsuas() == null)
378                   usuario.setUsuarioAtributoUsuas(new HashSet());
379                 usuario.getUsuarioAtributoUsuas().add(usuarioAtributo);
380               }
381             }
382           }
383         }
384       }
385     }
386   }
387 
388   /**
389    * Concatena todos as coleções de Atributos e Perfis do Usuário em uma única
390    * lista e chama o método salvar do Dao para gravar essa lista e o próprio
391    * usuário
392    * @param estrutura
393    * @throws ECARException
394    */
395   public void salvar(UsuarioUsu usuario) throws ECARException {
396     if (pesquisarDuplos(usuario, new String[] { "idDominioUsu" }, "codUsu").size() > 0)
397       throw new ECARException("usuario.validacao.registroDuplicado");
398     usuario.setDataInclusaoUsu(Data.getDataAtual());
399     List filhos = new ArrayList();
400     if (usuario.getUsuarioAtributoUsuas() != null)
401       filhos.addAll(usuario.getUsuarioAtributoUsuas());
402     super.salvar(usuario, filhos);
403   }
404 
405   /**
406    * Altera um objeto estrutura e salva os registros filhos passados na List
407    * @param usuario
408    * @throws ECARException
409    */
410   public void alterar(UsuarioUsu usuario, HttpServletRequest request) throws ECARException {
411     Transaction tx = null;
412 
413     try {
414       ArrayList objetos = new ArrayList();
415       super.inicializarLogBean();
416 
417       tx = session.beginTransaction();
418 
419       /* apaga os filhos para serem gravados novamente */
420       if (usuario.getUsuarioAtributoUsuas() != null) {
421         Iterator itAtb = usuario.getUsuarioAtributoUsuas().iterator();
422         while (itAtb.hasNext()) {
423           UsuarioAtributoUsua usuAtrib = (UsuarioAtributoUsua) itAtb.next();
424           session.delete(usuAtrib);
425           objetos.add(usuAtrib);
426         }
427       }
428       usuario.setUsuarioAtributoUsuas(null);
429 
430       this.setUsuario(request, usuario, false);
431 
432       usuario.setDataUltAlteracaoUsu(Data.getDataAtual());
433 
434       List filhos = new ArrayList();
435       if (usuario.getUsuarioAtributoUsuas() != null)
436         filhos.addAll(usuario.getUsuarioAtributoUsuas());
437 
438       session.update(usuario);
439       objetos.add(usuario);
440 
441       Iterator it = filhos.iterator();
442 
443       while (it.hasNext()) {
444         PaiFilho object = (PaiFilho) it.next();
445         object.atribuirPKPai();
446         // salva os filhos
447         session.save(object);
448         objetos.add(object);
449       }
450 
451       tx.commit();
452 
453       if (super.logBean != null) {
454         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
455         super.logBean.setOperacao("INC_ALT_EXC");
456         Iterator itObj = objetos.iterator();
457 
458         while (itObj.hasNext()) {
459           super.logBean.setObj(itObj.next());
460           super.loggerAuditoria.info(logBean.toString());
461         }
462       }
463 
464     } catch (HibernateException e) {
465       if (tx != null)
466         try {
467           tx.rollback();
468         } catch (HibernateException r) {
469           this.logger.error(r);
470           throw new ECARException("erro.hibernateException");
471         }
472       this.logger.error(e);
473       throw new ECARException("erro.hibernateException");
474     } catch (ECARException e) {
475       this.logger.error(e);
476       if (tx != null)
477         try {
478           tx.rollback();
479         } catch (HibernateException r) {
480           this.logger.error(r);
481           throw new ECARException("erro.hibernateException");
482         }
483       throw e;
484     }
485   }
486 
487   /**
488    * Altera um objeto estrutura e salva os registros filhos passados na List
489    * @param usuario
490    * @throws ECARException
491    */
492   public void alterarCadastroSite(UsuarioUsu usuario, HttpServletRequest request) throws ECARException {
493     Transaction tx = null;
494 
495     try {
496       ArrayList objetos = new ArrayList();
497       super.inicializarLogBean();
498 
499       tx = session.beginTransaction();
500 
501       SisGrupoAtributoSga grupoClasseAcesso = new ConfiguracaoDao(request).getConfiguracao().getSisGrupoAtributoSgaByCodSgaGrAtrClAcesso();
502 
503       /*
504        * apaga os filhos para serem gravados novamente (menos os de class de
505        * acesso e grupos de atributos que não aparecem no site)
506        */
507       if (usuario.getUsuarioAtributoUsuas() != null) {
508         Iterator itAtb = usuario.getUsuarioAtributoUsuas().iterator();
509         while (itAtb.hasNext()) {
510           UsuarioAtributoUsua usuAtrib = (UsuarioAtributoUsua) itAtb.next();
511           SisGrupoAtributoSga grupoAtributo = usuAtrib.getSisAtributoSatb().getSisGrupoAtributoSga();
512           if ((!grupoAtributo.equals(grupoClasseAcesso)) && (grupoAtributo != null && "S".equals(grupoAtributo.getIndCadSiteSga()))) {
513             session.delete(usuAtrib);
514             objetos.add(usuAtrib);
515             itAtb.remove();
516           }
517         }
518       }
519       usuario.setUsuarioAtributoUsuas(null);
520 
521       this.setUsuarioCadastroSite(request, usuario);
522 
523       usuario.setDataUltAlteracaoUsu(Data.getDataAtual());
524 
525       List filhos = new ArrayList();
526       if (usuario.getUsuarioAtributoUsuas() != null)
527         filhos.addAll(usuario.getUsuarioAtributoUsuas());
528 
529       session.update(usuario);
530       objetos.add(usuario);
531 
532       Iterator it = filhos.iterator();
533 
534       while (it.hasNext()) {
535         PaiFilho object = (PaiFilho) it.next();
536         object.atribuirPKPai();
537         // salva os filhos
538         session.save(object);
539         objetos.add(object);
540       }
541 
542       tx.commit();
543 
544       if (super.logBean != null) {
545         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
546         super.logBean.setOperacao("INC_ALT_EXC");
547         Iterator itObj = objetos.iterator();
548 
549         while (itObj.hasNext()) {
550           super.logBean.setObj(itObj.next());
551           super.loggerAuditoria.info(logBean.toString());
552         }
553       }
554 
555     } catch (HibernateException e) {
556       if (tx != null)
557         try {
558           tx.rollback();
559         } catch (HibernateException r) {
560           this.logger.error(r);
561           throw new ECARException("erro.hibernateException");
562         }
563       this.logger.error(e);
564       throw new ECARException("erro.hibernateException");
565     } catch (ECARException e) {
566       this.logger.error(e);
567       if (tx != null)
568         try {
569           tx.rollback();
570         } catch (HibernateException r) {
571           this.logger.error(r);
572           throw new ECARException("erro.hibernateException");
573         }
574       throw e;
575     }
576   }
577 
578   /**
579    * Exclui registros das tabelas relacionadas ao usuário
580    * @param usuario
581    * @throws ECARException TODO: Definir quando excluir em cascata e quando não
582    *           permitir exclusão
583    */
584 
585   /**
586    * Exclui um usuário, verificando antes se existem registros nas tabelas
587    * relacionadas
588    * @param usuario
589    * @throws ECARException
590    */
591   public void excluir(UsuarioUsu usuario) throws ECARException {
592     try {
593       boolean excluir = true;
594       if (contar(usuario.getAcompReferenciaArefsByCodUsuIncAref()) > 0) {
595         excluir = false;
596         throw new ECARException("usuario.exclusao.erro.acompReferenciaArefsByCodUsuIncAref");
597       }
598       if (contar(usuario.getAcompReferenciaArefsByCodUsuUltManutAref()) > 0) {
599         excluir = false;
600         throw new ECARException("usuario.exclusao.erro.acompReferenciaArefsByCodUsuUltManutAref");
601       }
602       if (contar(usuario.getAcompRelatorioArelsByUsuarioUsu()) > 0) {
603         excluir = false;
604         throw new ECARException("usuario.exclusao.erro.acompRelatorioArels");
605       }
606       if (contar(usuario.getAcompRelatorioArelsByUsuarioUsuUltimaManutencao()) > 0) {
607         excluir = false;
608         throw new ECARException("usuario.exclusao.erro.acompRelatorioArels");
609       }
610       if (contar(usuario.getAgendaAges()) > 0) {
611         excluir = false;
612         throw new ECARException("usuario.exclusao.erro.agendaAges");
613       }
614       if (contar(usuario.getApontamentoApts()) > 0) {
615         excluir = false;
616         throw new ECARException("usuario.exclusao.erro.apontamentoApts");
617       }
618       if (contar(usuario.getEfItemEstRealizadoEfiers()) > 0) {
619         excluir = false;
620         throw new ECARException("usuario.exclusao.erro.efItemEstRealizadoEfiers");
621       }
622       if (contar(usuario.getEstruturaEtts()) > 0) {
623         excluir = false;
624         throw new ECARException("usuario.exclusao.erro.estruturaEtts");
625       }
626       if (contar(usuario.getItemEstrutMarcadorIettms()) > 0) {
627         excluir = false;
628         throw new ECARException("usuario.exclusao.erro.itemEstrutMarcadorIettms");
629       }
630       if (contar(usuario.getItemEstrutUploadIettups()) > 0) {
631         excluir = false;
632         throw new ECARException("usuario.exclusao.erro.itemEstrutUploadIettups");
633       }
634       if (contar(usuario.getItemEstruturaIettsByCodUsuIncIett()) > 0) {
635         excluir = false;
636         throw new ECARException("usuario.exclusao.erro.itemEstruturaIettsByCodUsuIncIett");
637       }
638       if (contar(usuario.getItemEstruturaIettsByCodUsuUltManutIett()) > 0) {
639         excluir = false;
640         throw new ECARException("usuario.exclusao.erro.itemEstruturaIettsByCodUsuUltManutIett");
641       }
642       if (contar(usuario.getItemEstrutUsuarioIettuses()) > 0) {
643         excluir = false;
644         throw new ECARException("usuario.exclusao.erro.itemEstrutUsuarioIettuses");
645       }
646       if (contar(usuario.getItemEstUsutpfuacIettutfas()) > 0) {
647         excluir = false;
648         throw new ECARException("usuario.exclusao.erro.itemEstUsutpfuacIettutfas");
649       }
650       if (contar(usuario.getLogs()) > 0) {
651         excluir = false;
652         throw new ECARException("usuario.exclusao.erro.logs");
653       }
654       if (contar(usuario.getRegControleAcessoRcas()) > 0) {
655         excluir = false;
656         throw new ECARException("usuario.exclusao.erro.regControleAcessoRcas");
657       }
658       if (contar(usuario.getSegmentoCategoriaSgtcs()) > 0) {
659         excluir = false;
660         throw new ECARException("usuario.exclusao.erro.segmentoCategoriaSgtcs");
661       }
662       if (contar(usuario.getSegmentoItemSgtis()) > 0) {
663         excluir = false;
664         throw new ECARException("usuario.exclusao.erro.segmentoItemSgtis");
665       }
666       if (contar(usuario.getSegmentoSgts()) > 0) {
667         excluir = false;
668         throw new ECARException("usuario.exclusao.erro.segmentoSgts");
669       }
670       if (contar(usuario.getHistoricoIettusHs()) > 0) {
671         excluir = false;
672         throw new ECARException("usuario.exclusao.erro.historicoIettusHs");
673       }
674 
675       // Retirado do mapeamento
676       // if (contar(usuario.getIettutfaHistorIettutfahsByCodUsu()) > 0) {
677       // excluir = false;
678       // throw new
679       // ECARException("usuario.exclusao.erro.iettutfaHistorIettutfahsByCodUsu");
680       // }
681       // if
682       // (contar(usuario.getIettutfaHistorIettutfahsByCodUsuHistoricoIettutfah())
683       // > 0) {
684       // excluir = false;
685       // throw new
686       // ECARException("usuario.exclusao.erro.iettutfaHistorIettutfahsByCodUsuHistoricoIettutfah");
687       // }
688       if (contar(usuario.getRegDemandaRegdsByCodUsuInclusaoRegd()) > 0) {
689         excluir = false;
690         throw new ECARException("usuario.exclusao.erro.regDemandaRegdsByCodUsuInclusaoRegd");
691       }
692       if (excluir) {
693 
694         List objs = new ArrayList();
695         if (usuario.getUsuarioAtributoUsuas() != null) {
696           Iterator itAtb = usuario.getUsuarioAtributoUsuas().iterator();
697           while (itAtb.hasNext()) {
698             UsuarioAtributoUsua usuAtrib = (UsuarioAtributoUsua) itAtb.next();
699             objs.add(usuAtrib);
700           }
701         }
702         usuario.setUsuarioAtributoUsuas(null);
703 
704         objs.add(usuario);
705         super.excluir(objs);
706       }
707     } catch (ECARException e) {
708       this.logger.error(e);
709       throw e;
710     }
711   }
712 
713   /**
714    * Retorna uma Lista (List) de objetos do tipo UsuarioAtributoUsua de um
715    * determinado usuario
716    * @param usuario UsuarioUsu
717    * @return List dos UsuarioAtributoUsua de um usuário
718    * @throws ECARException
719    */
720 
721   public List getAtributosUsuario(UsuarioUsu usuario) throws ECARException {
722     List retorno = new ArrayList();
723     Set result = usuario.getUsuarioAtributoUsuas();
724     if (result != null) {
725       if (result.size() > 0) {
726         Iterator it = result.iterator();
727         while (it.hasNext()) {
728           retorno.add((UsuarioAtributoUsua) it.next());
729         }
730 
731       }
732     }
733     return retorno;
734   }
735 
736   /**
737    * Retorna uma Lista (List) de objetos do tipo UsuarioAtributoUsua de um
738    * determinado usuario pertencentes a um determinado SisGrupoAtributoSga
739    * @param usuario UsuarioUsu
740    * @param grupo SisGrupoAtibutoSga
741    * @return List dos UsuarioAtributoUsua de um usuário
742    * @throws ECARException
743    */
744 
745   public List getAtributosUsuarioByGrupo(UsuarioUsu usuario, SisGrupoAtributoSga grupo) throws ECARException {
746     List retorno = new ArrayList();
747     Set result = usuario.getUsuarioAtributoUsuas();
748     if (result != null) {
749       if (result.size() > 0) {
750         Iterator it = result.iterator();
751         while (it.hasNext()) {
752           UsuarioAtributoUsua usuarioAtributo = (UsuarioAtributoUsua) it.next();
753           if (usuarioAtributo.getSisAtributoSatb().getSisGrupoAtributoSga().equals(grupo))
754             retorno.add(usuarioAtributo);
755         }
756       }
757     }
758     return retorno;
759   }
760 
761   /**
762    * Retorna uma Lista (List) de objetos do tipo Usuario de um determinado
763    * SisAtributoSatb
764    * @param sisAtributoSatb SisAtibrutoSatb
765    * @return List dos Usuarios de um SisAtributoSatb
766    * @throws ECARException
767    */
768 
769   public List getUsuariosBySisAtributoSatb(SisAtributoSatb sisAtributoSatb) throws ECARException {
770     List retorno = new ArrayList();
771 
772     Set result = sisAtributoSatb.getUsuarioAtributoUsuas();
773     if (result != null) {
774       Iterator it = result.iterator();
775       while (it.hasNext()) {
776         UsuarioAtributoUsua usuarioAtributo = (UsuarioAtributoUsua) it.next();
777         retorno.add(usuarioAtributo.getUsuarioUsu());
778 
779       }
780     }
781     return retorno;
782   }
783 
784   /**
785    * Retorna uma Lista com os IDs Atributos do Sistema que definem a classe de
786    * acesso do usuário
787    * @param usuario
788    * @return
789    */
790   public List getClassesAcessoUsuarioById(UsuarioUsu usuario) throws ECARException {
791 
792     List retorno = new ArrayList();
793 
794     Set classesAcesso = getClassesAcessoUsuario(usuario);
795 
796     if (classesAcesso != null) {
797       Iterator it = classesAcesso.iterator();
798       while (it.hasNext()) {
799         retorno.add(((SisAtributoSatb) it.next()).getCodSatb());
800       }
801     }
802 
803     return retorno;
804 
805   }
806 
807   /**
808    * Retorna uma Lista com os Atributos do Sistema que definem a classe de
809    * acesso do usuário
810    * @param usuario
811    * @return
812    */
813 
814   public Set getClassesAcessoUsuario(UsuarioUsu usuario) throws ECARException {
815     Set lClasses = new HashSet();
816     if (usuario.getUsuarioAtributoUsuas() != null) {
817       SisGrupoAtributoSga grupoAtributosClasseAcesso = new ConfiguracaoDao(request).getConfiguracao().getSisGrupoAtributoSgaByCodSgaGrAtrClAcesso();
818 
819       Set lAtributosClasseAcesso = grupoAtributosClasseAcesso.getSisAtributoSatbs();
820       Iterator itAtributos = usuario.getUsuarioAtributoUsuas().iterator();
821       while (itAtributos.hasNext())
822         lClasses.add(((UsuarioAtributoUsua) itAtributos.next()).getSisAtributoSatb());
823       if (usuario.getUsuarioAtributoUsuas() != null) {
824         Iterator it = lClasses.iterator();
825         while (it.hasNext()) {
826           SisAtributoSatb atributo = (SisAtributoSatb) it.next();
827           if (!lAtributosClasseAcesso.contains(atributo))
828             it.remove();
829         }
830       }
831     }
832 
833     return lClasses;
834   }
835 
836   /**
837    * Devolve um usuario cadastrado em UsuarioUsu a partir de seu ID de usuário
838    * no sentinela. Retorna um usuario vazio caso nao exista
839    * @param idDominioUsu String ID do usuário no sentinela
840    * @return
841    * @throws ECARException
842    */
843   public UsuarioUsu getUsuarioByIdDominio(String idDominioUsu) throws ECARException {
844     UsuarioUsu usuario;
845 
846     try {
847       Query query = this.session.createQuery("select u from UsuarioUsu u where u.idDominioUsu = :idDominioUsu");
848 
849       query.setString("idDominioUsu", idDominioUsu);
850 
851       List lista = query.list();
852 
853       if (lista.size() > 0) {
854         usuario = (UsuarioUsu) lista.get(0);
855 
856         // BUG 4608 - Comentada a linha abaixo porque estava fazendo
857         // querys desnecessárias
858         // usuario.getItemEstrutUsuarioIettuses().size();
859 
860         // recuperar os dados do usuário no sentinela
861         // this.setUsuarioUsuDadosSentinela(usuario);
862 
863       }
864       else
865         usuario = new UsuarioUsu();
866     } catch (HibernateException e) {
867       this.logger.error(e);
868       throw new ECARException("erro.hibernateException");
869     }
870 
871     return usuario;
872   }
873 
874   /**
875    * Devolve uma lista com todos os idDominioUsu cadastrados no ECAR
876    * @return
877    * @throws ECARException
878    */
879   public List getListaIdDominio() throws ECARException {
880     List lista;
881     try {
882       lista = this.session.createQuery("select u.idDominioUsu from UsuarioUsu u").list();
883       return lista;
884     } catch (HibernateException e) {
885       this.logger.error(e);
886       throw new ECARException("erro.hibernateException");
887     }
888   }
889 
890   /**
891    * Invoca o método pesquisar do Dao e itera sobre o resultado para inicializar
892    * as Collections.<br>
893    * @param UsuarioUsu usuario
894    * @param String nome
895    * @param String login
896    * @param String cpf
897    * @param String eMail
898    * @return List
899    * @throws ECARException
900    */
901   public List pesquisar(UsuarioUsu usuario, String nome, String login, String cpf, String eMail) throws ECARException {
902 
903     // classes de acesso marcadas na tela como filtro
904     List<UsuarioAtributoUsua> listClassesAcessoFiltro = new ArrayList<UsuarioAtributoUsua>();
905     if (usuario.getUsuarioAtributoUsuas() != null && usuario.getUsuarioAtributoUsuas().size() > 0) {
906 
907       for (Iterator itAtr = usuario.getUsuarioAtributoUsuas().iterator(); itAtr.hasNext();) {
908         UsuarioAtributoUsua usuAtr = (UsuarioAtributoUsua) itAtr.next();
909         listClassesAcessoFiltro.add(usuAtr);
910       }
911     }
912 
913     List listaOrgaos = null;
914     if (usuario.getOrgaoOrgs() != null) {
915       listaOrgaos = new ArrayList(usuario.getOrgaoOrgs());
916       usuario.setOrgaoOrgs(null);
917     }
918 
919     List pesquisa = super.pesquisar(usuario, new String[] { "codUsu", "asc" });
920 
921     for (Iterator it = pesquisa.iterator(); it.hasNext();) {
922       UsuarioUsu usu = (UsuarioUsu) it.next();
923 
924       // filtrando por orgao
925       boolean pesquisaOrgao = false;
926       boolean achouOrgao = false;
927 
928       // se tiver alguma coisa na lista de orgaos
929       if (listaOrgaos != null && !listaOrgaos.isEmpty()) {
930         pesquisaOrgao = true;
931         // se o usuario possui uma lista de orgaos
932         if (usu.getOrgaoOrgs() != null && !usu.getOrgaoOrgs().isEmpty()) {
933 
934           for (Iterator itOrgaos = usu.getOrgaoOrgs().iterator(); itOrgaos.hasNext();) {
935 
936             OrgaoOrg aux = (OrgaoOrg) itOrgaos.next();
937             // se o usuario possui um orgao
938             if (listaOrgaos.contains(aux)) {
939               achouOrgao = true;
940               continue;
941             }
942           }
943         }
944       }
945 
946       // se pesquisou e não achou
947       if (pesquisaOrgao && !achouOrgao) {
948         it.remove();
949         continue;
950       }
951 
952       // verificações se foi marcado classes de acesso como filtro da
953       // pesquisa
954       boolean ignorar = false;
955       List<UsuarioAtributoUsua> listVerificacoes = new ArrayList<UsuarioAtributoUsua>();
956 
957       if (listClassesAcessoFiltro.size() > 0) {
958         if (usu.getUsuarioAtributoUsuas() != null && usu.getUsuarioAtributoUsuas().size() > 0) {
959 
960           for (Iterator itAtr = usu.getUsuarioAtributoUsuas().iterator(); itAtr.hasNext();) {
961             UsuarioAtributoUsua usuAtr = (UsuarioAtributoUsua) itAtr.next();
962             listVerificacoes.add(usuAtr);
963           }
964 
965           List<String> listIgnorar = new ArrayList<String>();
966           String ignorarItem = "";
967           for (Iterator itClassesTela = listClassesAcessoFiltro.iterator(); itClassesTela.hasNext();) {
968             UsuarioAtributoUsua atributosTela = (UsuarioAtributoUsua) itClassesTela.next();
969 
970             ignorarItem = "SIM";
971 
972             for (Iterator itVerificacoes = listVerificacoes.iterator(); itVerificacoes.hasNext();) {
973               UsuarioAtributoUsua atributosUsuario = (UsuarioAtributoUsua) itVerificacoes.next();
974 
975               SisGrupoAtributoSga tipo = (SisGrupoAtributoSga) atributosTela.getSisAtributoSatb().getSisGrupoAtributoSga();
976               if (SisTipoExibicGrupoDao.TEXT.equals(tipo.getSisTipoExibicGrupoSteg().getCodSteg().toString())) {
977                 if (atributosUsuario.getInformacao() != null && atributosUsuario.getInformacao().length() > 0) {
978                   if (atributosUsuario.getInformacao().indexOf(atributosTela.getInformacao()) > -1) {
979                     ignorarItem = "NAO";
980                     break;
981                   }
982                 }
983               }
984               else {
985                 if (atributosUsuario.getSisAtributoSatb().getCodSatb().floatValue() == atributosTela.getSisAtributoSatb().getCodSatb().floatValue()) {
986                   ignorarItem = "NAO";
987                   break;
988                 }
989               }
990             }
991 
992             listIgnorar.add(ignorarItem);
993           }
994 
995           if (listIgnorar.contains("SIM")) {
996             ignorar = true;
997           }
998           else {
999             ignorar = false;
1000           }
1001         }
1002         else {
1003           ignorar = true;
1004         }
1005       }
1006       if (!ignorar) {
1007         boolean retirarCollection = false;
1008         if (nome != null && !"".equals(nome.trim())) {
1009           if (usu.getNomeUsuSent().toUpperCase().lastIndexOf(nome.toUpperCase()) == -1)
1010             retirarCollection = true;
1011         }
1012         if (login != null && !"".equals(login.trim())) {
1013           if (usu.getIdUsuarioUsu().toUpperCase().lastIndexOf(login.toUpperCase()) == -1)
1014             retirarCollection = true;
1015         }
1016         if (cpf != null && !"".equals(cpf.trim())) {
1017           if (!usu.getCnpjCpfUsu().equals(cpf))
1018             retirarCollection = true;
1019         }
1020         if (eMail != null && !"".equals(eMail.trim())) {
1021           if (!usu.getEmail1UsuSent().toUpperCase().equals(eMail.toUpperCase()))
1022             retirarCollection = true;
1023         }
1024 
1025         if (!retirarCollection) {
1026           usu.getUsuarioAtributoUsuas().size();
1027         }
1028         else {
1029           it.remove();
1030         }
1031       }
1032       else {
1033         it.remove();
1034       }
1035     }
1036 
1037     Collections.sort(pesquisa, new Comparator() {
1038       public int compare(Object o1, Object o2) {
1039         return ((UsuarioUsu) o1).getNomeUsuSent().compareToIgnoreCase(((UsuarioUsu) o2).getNomeUsuSent());
1040       }
1041     });
1042 
1043     return pesquisa;
1044   }
1045 
1046   /**
1047    * lista os niveis de planejamento do usuario
1048    * @param usuario
1049    * @return List
1050    * @throws ECARException
1051    */
1052   public List getNiveisPlanejamentoUsuario(UsuarioUsu usuario) throws ECARException {
1053     try {
1054 
1055       SisGrupoAtributoSga grupoNivelPlanejamento = new ConfiguracaoDao(request).getConfiguracao().getSisGrupoAtributoSgaByCodSgaGrAtrNvPlan();
1056 
1057       String str = "select usuarioAtributo from UsuarioAtributoUsua " + "usuarioAtributo where usuarioAtributo.sisAtributoSatb.sisGrupoAtributoSga.codSga = ? ";
1058 
1059       boolean ignorarPermissoes = this.validaPermissao.getIgnorarPermissoes();
1060       if (!ignorarPermissoes) {
1061         str += "and usuarioAtributo.usuarioUsu.codUsu = ?";
1062       }
1063 
1064       Query q = this.getSession().createQuery(str);
1065 
1066       q.setLong(0, grupoNivelPlanejamento.getCodSga().longValue());
1067 
1068       if (!ignorarPermissoes) {
1069         q.setLong(1, usuario.getCodUsu().longValue());
1070       }
1071 
1072       return q.list();
1073 
1074     } catch (HibernateException e) {
1075       this.logger.error(e);
1076       throw new ECARException(e);
1077     }
1078   }
1079 
1080   /**
1081    * Pesquisa a Página Inicial configurada para o Usuário que está se logando no
1082    * sistema. Obs.: Recebe da Configuração Geral (ConfiguracaoCfg) o grupo de
1083    * Atributo (SisGrupoAtributoSga) que está cadastro em Página Inicial. A
1084    * partir do grupo de atributo é filtrado o atributo relacionado a página
1085    * inicial.
1086    * @param usuario
1087    * @param paginaInicialSga
1088    * @return
1089    * @throws ECARException
1090    */
1091   public SisAtributoSatb getPaginaInicialByUsuarioAndCodSgaPgIni(UsuarioUsu usuario, SisGrupoAtributoSga paginaInicialSga) throws ECARException {
1092     try {
1093       SisAtributoSatb sisAtributo = new SisAtributoSatb();
1094       sisAtributo.setSisGrupoAtributoSga(paginaInicialSga);
1095 
1096       List lista = this.pesquisar(sisAtributo, new String[] { "descricaoSatb", "asc" });
1097       List listaCodSga = new ArrayList();
1098       Iterator it = lista.iterator();
1099       while (it.hasNext()) {
1100         SisAtributoSatb satb = (SisAtributoSatb) it.next();
1101         listaCodSga.add(satb.getCodSatb());
1102       }
1103 
1104       StringBuilder select = new StringBuilder("select usuarioAtributo from UsuarioAtributoUsua usuarioAtributo").append(" where usuarioAtributo.sisAtributoSatb.sisGrupoAtributoSga.codSga in (:listaSga)").append(" and usuarioAtributo.usuarioUsu.codUsu = :usuario");
1105 
1106       Query q = this.getSession().createQuery(select.toString());
1107       q.setParameterList("listaSga", listaCodSga);
1108       q.setLong("usuario", usuario.getCodUsu().longValue());
1109 
1110       List listaPgIni = q.list();
1111 
1112       if (listaPgIni != null && listaPgIni.size() > 0)
1113         return ((UsuarioAtributoUsua) listaPgIni.iterator().next()).getSisAtributoSatb();
1114 
1115       return null;
1116     } catch (HibernateException e) {
1117       this.logger.error(e);
1118       throw new ECARException("erro.hibernateException");
1119     }
1120   }
1121 
1122   /**
1123    * Retorna um objeto usuário com dados de um usuário do Sentinela a partir de
1124    * seu codigo
1125    * @param codUsuarioSentinela
1126    * @return
1127    */
1128   /*
1129    * public UsuarioUsu getUsuarioSentinela(long codUsuarioSentinela){
1130    * SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1131    * SentinelaParam[] usuarios = s.getUsuariosSistema(); List retorno = new
1132    * ArrayList(); for(int i = 0; i < usuarios.length; i++){
1133    * if(usuarios[i].getCodigo() == codUsuarioSentinela){ UsuarioUsu u = new
1134    * UsuarioUsu();
1135    * u.setIdDominioUsu(Long.valueOf(usuarios[i].getCodigo()).toString());
1136    * u.setIdUsuarioUsu(usuarios[i].getParamAux()[0]);
1137    * u.setCnpjCpfUsu(usuarios[i].getParamAux()[1]);
1138    * u.setEmail1Usu(usuarios[i].getParamAux()[2]);
1139    * u.setNomeUsu(usuarios[i].getNome()); return u; } } return null; }
1140    */
1141 
1142   public String getNomeUsuarioSentinela(long codUsuarioSentinela) {
1143     SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1144     if (s != null) {
1145       SentinelaParam usuario = s.getUsuarioById(codUsuarioSentinela);
1146       if (usuario != null) {
1147         return usuario.getNome();
1148       }
1149       /*
1150        * SentinelaParam[] usuarios = s.getUsuariosSistema(); if (usuarios !=
1151        * null) { for (int i = 0; i < usuarios.length; i++) { if
1152        * (usuarios[i].getCodigo() == codUsuarioSentinela) { return
1153        * usuarios[i].getNome(); } } }
1154        */
1155     }
1156     return INFORMACAO_NAO_LOCALIZADA_SENTINELA;
1157   }
1158 
1159   /**
1160    * pega o login do usuario no sentinela
1161    * @param codUsuarioSentinela
1162    * @return String
1163    */
1164   public String getLoginUsuarioSentinela(long codUsuarioSentinela) {
1165     SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1166 
1167     if (s != null) {
1168       SentinelaParam usuario = s.getUsuarioById(codUsuarioSentinela);
1169       if (usuario != null) {
1170         return usuario.getParamAux()[0];
1171       }
1172       /*
1173        * SentinelaParam[] usuarios = s.getUsuariosSistema(); if (usuarios !=
1174        * null) { for (int i = 0; i < usuarios.length; i++) { if
1175        * (usuarios[i].getCodigo() == codUsuarioSentinela) { return
1176        * usuarios[i].getParamAux()[0]; } } }
1177        */
1178     }
1179 
1180     return INFORMACAO_NAO_LOCALIZADA_SENTINELA;
1181   }
1182 
1183   /**
1184    * Pega o CPF usuario no sentinela
1185    * @param codUsuarioSentinela
1186    * @return String
1187    */
1188   public String getCpfUsuarioSentinela(long codUsuarioSentinela) {
1189     SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1190 
1191     if (s != null) {
1192       SentinelaParam usuario = s.getUsuarioById(codUsuarioSentinela);
1193       if (usuario != null) {
1194         return usuario.getParamAux()[1];
1195       }
1196       /*
1197        * SentinelaParam[] usuarios = s.getUsuariosSistema(); if (usuarios !=
1198        * null) { for (int i = 0; i < usuarios.length; i++) { if
1199        * (usuarios[i].getCodigo() == codUsuarioSentinela) { return
1200        * usuarios[i].getParamAux()[1]; } } }
1201        */
1202     }
1203 
1204     return INFORMACAO_NAO_LOCALIZADA_SENTINELA;
1205   }
1206 
1207   /**
1208    * Pega o e-mail do usuario no sentinela
1209    * @param codUsuarioSentinela
1210    * @return String
1211    */
1212   public String getEmailUsuarioSentinela(long codUsuarioSentinela) {
1213     SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1214 
1215     if (s != null) {
1216       SentinelaParam usuario = s.getUsuarioById(codUsuarioSentinela);
1217       if (usuario != null) {
1218         return usuario.getParamAux()[2];
1219       }
1220       /*
1221        * SentinelaParam[] usuarios = s.getUsuariosSistema(); if (usuarios !=
1222        * null) { for (int i = 0; i < usuarios.length; i++) { if
1223        * (usuarios[i].getCodigo() == codUsuarioSentinela) { return
1224        * usuarios[i].getParamAux()[2]; } } }
1225        */
1226     }
1227 
1228     return EMAIL_NAO_LOCALIZADO_SENTINELA;
1229   }
1230 
1231   /**
1232    * Retorna uma lista de objetos usuário com dados de usuários do Sentinela, a
1233    * partir dos parâmetros informados
1234    * @param nome String a ser usada na pesquisa
1235    * @param tipoComp Se "N" pesquisa nome em Nome, se for "L" pesquisa nome em
1236    *          Login
1237    * @return List
1238    */
1239   public List pesquisarUsuarioSentinela(String nome, String tipoComp) throws ECARException {
1240     SentinelaInterface s = SentinelaUtil.getSentinelaInterface();
1241 
1242     List retorno = new ArrayList();
1243 
1244     if (s != null) {
1245       SentinelaParam[] usuarios = s.getUsuariosSistema();
1246 
1247       List ids = getListaIdDominio();
1248 
1249       if (usuarios != null) {
1250         for (int i = 0; i < usuarios.length; i++) {
1251           UsuarioUsu u = new UsuarioUsu();
1252 
1253           String[] param = usuarios[i].getParamAux();
1254 
1255           if (!ids.contains(Long.valueOf(usuarios[i].getCodigo()).toString())) {
1256             u.setCodUsu(Long.valueOf(usuarios[i].getCodigo()));
1257             u.setNomeUsu(usuarios[i].getNome());
1258 
1259             if (param != null) {
1260               u.setIdUsuarioUsu(param[0]);
1261               u.setCnpjCpfUsu(param[1]);
1262               u.setEmail1Usu(param[2]);
1263             }
1264 
1265             if ("N".equals(tipoComp)) {
1266               if (u.getNomeUsuSent().toLowerCase().lastIndexOf(nome.toLowerCase()) >= 0)
1267                 retorno.add(u);
1268             }
1269             if ("L".equals(tipoComp)) {
1270               if (u.getIdUsuarioUsu().toLowerCase().lastIndexOf(nome.toLowerCase()) >= 0)
1271                 retorno.add(u);
1272             }
1273 
1274           }
1275         }
1276       }
1277     }
1278     return retorno;
1279   }
1280 
1281   /**
1282    * Atribuir ao objeto UsuarioUsu os seus respectivos dados do sentinela: CPF,
1283    * Login, E-mail, Nome
1284    * @param UsuarioUsu
1285    * @return
1286    * @throws ECARException
1287    */
1288   /*
1289    * public void setUsuarioUsuDadosSentinela(UsuarioUsu usu) throws
1290    * ECARException { // recuperar os dados do usuário no sentinela UsuarioUsu
1291    * usuarioSentinela =
1292    * this.getUsuarioSentinela(Long.parseLong(usu.getIdDominioUsu()));
1293    * usu.setCnpjCpfUsu(usuarioSentinela.getCnpjCpfUsu());
1294    * usu.setIdUsuarioUsu(usuarioSentinela.getIdUsuarioUsu());
1295    * usu.setEmail1Usu(usuarioSentinela.getEmail1UsuSent());
1296    * usu.setNomeUsu(usuarioSentinela.getNomeUsu()); }
1297    */
1298 
1299   /**
1300    * Busca um objeto do banco de dados pela chave
1301    * @param Class cl - classe do objeto a buscar
1302    * @param Serializable chave - PK
1303    * @return Object - um objeto reencarnado do banco de dados da classe
1304    *         informada contendo os dados do sentinela
1305    * @throws ECARException - NAO tem rollback
1306    */
1307   /*
1308    * public Object buscar(Class cl, Serializable chave) throws ECARException {
1309    * Object obj = super.buscar(cl, chave);
1310    * //this.setUsuarioUsuDadosSentinela((UsuarioUsu)obj); return obj; }
1311    */
1312 
1313   public String geraListaTelefonica(StringBuffer html, String status) throws ECARException, IOException {
1314     ConfiguracaoDao configDao = new ConfiguracaoDao(request);
1315     ConfiguracaoCfg config = configDao.getConfiguracao();
1316 
1317     String path = config.getRaizUpload() + "/listaTelefonica.txt";
1318     String separador = config.getSeparadorArqTXT();
1319     String separadorMultivalor = config.getSeparadorCampoMultivalor();
1320 
1321     FileWriter csvFile = new FileWriter(path);
1322     // BufferedWriter outStr = new BufferedWriter(new FileWriter(path));
1323     // ExcelCSVPrinter csvPrinter = new ExcelCSVPrinter(outStr);
1324 
1325     UsuarioDao usuDao = new UsuarioDao(request);
1326     List usuarios = new ArrayList();
1327 
1328     if ("ativo".equals(status)) {
1329 
1330       status = "S";
1331       usuarios = selecionaPorIndAtivo(status);
1332 
1333     }
1334     else if ("inativo".equals(status)) {
1335 
1336       status = "N";
1337       usuarios = selecionaPorIndAtivo(status);
1338 
1339     }
1340     else if ("todos".equals(status)) {
1341 
1342       usuarios = usuDao.pesquisar(new UsuarioUsu(), "", "", "", "");
1343     }
1344 
1345     int qtdeUsu = usuarios.size();
1346     Iterator itUsu = usuarios.iterator();
1347 
1348     /*
1349      * Criação da matriz que abrigará os valores A matriz conta com 7 colunas
1350      * (nome, orgao, e-mail, fone, login e tipoAcesso, situação cadst) e
1351      * qtdeUsuarios * cm. (Usando a "Aproximação de Steinmacher", em que cm é
1352      * uma constante que, para casos de usuarios relacionados a orgaos e grupos
1353      * de acesso, tem valor "12"
1354      */
1355     int linhas = qtdeUsu * 12;
1356     if (linhas < 1) {
1357       html.append("<table align=\"center\">");
1358       html.append("\n\t<tr class=\"linha_subtitulo_estrutura\" bgcolor=\"#EAEEF4\">");
1359 
1360       String checked = "";
1361       if ("S".equals(status))
1362         checked = "checked";
1363       html.append("\n\t<tr>" + "<td></td>" + "<td></td>" + "<td class=\"label\">Situação Cadastral:</td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\" value=\"ativo\">   Ativos" + "</td>" + "</tr>");
1364       checked = "";
1365 
1366       if ("N".equals(status))
1367         checked = "checked";
1368       html.append("<tr>" + "<td></td>" + "<td></td>" + "<td></td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\" value=\"inativo\">  Inativos" + "</td>" + "</tr>");
1369 
1370       checked = "";
1371       if ("todos".equals(status))
1372         checked = "checked";
1373       html.append("<tr>" + "<td></td>" + "<td></td>" + "<td></td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\"  value=\"todos\">  Todos" + "</td>" + "</tr>" + "<tr>" + "</tr>");
1374       html.append("<br>");
1375       html.append("<tr>" + "<td colspan=\"4\" align=\"center\" >" + "<b>Não existem usuários inativos</b>" + "</td>" + "</tr>" + "<tr>" + "</tr>");
1376       html.append("</table>");
1377       return path;
1378     }
1379 
1380     html.append("<table cellspacing=0>");
1381     html.append("\n\t<tr class=\"linha_subtitulo_estrutura\" bgcolor=\"#EAEEF4\">");
1382 
1383     String checked = "";
1384     if ("S".equals(status))
1385       checked = "checked";
1386     html.append("\n\t<tr>" + "<td class=\"label\" colspan=\"3\">Situação Cadastral:</td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\" value=\"ativo\">   Ativos" + "</td>" + "</tr>");
1387     checked = "";
1388 
1389     if ("N".equals(status))
1390       checked = "checked";
1391     html.append("<tr>" + "<td></td>" + "<td></td>" + "<td></td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\" value=\"inativo\">  Inativos" + "</td>" + "</tr>");
1392 
1393     checked = "";
1394     if ("todos".equals(status))
1395       checked = "checked";
1396     html.append("<tr>" + "<td></td>" + "<td></td>" + "<td></td>" + "<td align=\"left\" >" + "<input type=\"radio\" class=\"form_check_radio\" name=\"indAtivo\" id=\"indAtivo\" " + checked + " onclick=\"filtraPorIndAtivo(this.value)\"  value=\"todos\">  Todos" + "</td>" + "</tr>" + "<tr>" + "</tr>");
1397 
1398     String[][] arquivo = new String[linhas][7];
1399     int linha = 2, coluna = 0;
1400 
1401     /*
1402      * Formato atual da coluna: Nome | Orgao(s) | e-mail | DDD - Fone | login |
1403      * tipoAcesso | situaçãoCadastral
1404      */
1405 
1406     // Cabeçalho da lista
1407     arquivo[0][0] = "Nome";
1408     arquivo[0][1] = "Orgão(s)";
1409     arquivo[0][2] = "e-mail";
1410     arquivo[0][3] = "Fone";
1411     arquivo[0][4] = "Login";
1412     arquivo[0][5] = "Grupos de Acesso";
1413     arquivo[0][6] = "Situação Cadastral";
1414 
1415     while (itUsu.hasNext()) {
1416       UsuarioUsu usu = (UsuarioUsu) itUsu.next();
1417 
1418       // Coluna do nome do Usuario
1419       arquivo[linha][coluna] = Pagina.trocaNull(usu.getNomeUsuSent());
1420       coluna++;
1421 
1422       // Coluna dos Órgãos
1423       int contOrg = 0;
1424       if ((usu.getOrgaoOrgs() != null) && (usu.getOrgaoOrgs().size() > 0)) {
1425         Iterator itOrg = usu.getOrgaoOrgs().iterator();
1426         while (itOrg.hasNext()) {
1427           OrgaoOrg orgao = (OrgaoOrg) itOrg.next();
1428           arquivo[linha + (contOrg++)][coluna] = Pagina.trocaNull(orgao.getSiglaOrg().toString());
1429         }
1430       }
1431       coluna++;
1432 
1433       // Coluna do e-mail
1434       arquivo[linha][coluna] = Pagina.trocaNull(usu.getEmail1UsuSent());
1435       coluna++;
1436 
1437       // Coluna do Telefone
1438       arquivo[linha][coluna] = "(" + Pagina.trocaNull(usu.getComercDddUsu()) + ") " + Pagina.trocaNull(usu.getComercTelefoneUsu());
1439       coluna++;
1440 
1441       // Coluna do login
1442       arquivo[linha][coluna] = Pagina.trocaNull(usu.getIdUsuarioUsu());
1443       coluna++;
1444 
1445       // Coluna dos grupos de acesso
1446       Set atribUsu = usu.getUsuarioAtributoUsuas();
1447       Iterator itAtrib = atribUsu.iterator();
1448       int contAcesso = 0;
1449       while (itAtrib.hasNext()) {
1450         UsuarioAtributoUsua sisatr = (UsuarioAtributoUsua) itAtrib.next();
1451         if (sisatr.getSisAtributoSatb().getSisGrupoAtributoSga().getCodSga().equals(Long.valueOf(4))) {
1452           arquivo[linha + (contAcesso++)][coluna] = Pagina.trocaNull(sisatr.getSisAtributoSatb().getDescricaoSatb());
1453         }
1454       }
1455       coluna++;
1456 
1457       // Coluna da Situação Cadastral
1458       arquivo[linha][coluna] = Pagina.trocaNull(usu.getIndAtivoUsu());
1459       if ("S".equals(arquivo[linha][coluna]))
1460         arquivo[linha][coluna] = "Ativo";
1461       else
1462         arquivo[linha][coluna] = "Inativo";
1463 
1464       coluna++;
1465 
1466       linha = linha + (Math.max(contAcesso, contOrg));
1467       coluna = 0;
1468     }
1469     int j = 0;
1470 
1471     for (j = 0; j < 7; j++) {
1472       String width = "";
1473       if (j == 3) { // Fone
1474         width = "width=\"100px\" nowrap";
1475       }
1476       html.append("\n\t\t<td ").append(width).append(" >");
1477       html.append("\n\t\t\t<b>").append(arquivo[0][j]).append("</b>");
1478       html.append("\n\t</td>");
1479     }
1480     html.append("\n\t</tr>");
1481 
1482     String cor = "";
1483     int auxCor = 0;
1484     for (int i = 1; i < linha; i++) {
1485       auxCor++;
1486 
1487       html.append("\n\t<tr class=\"linha_subtitulo2_estrutura\" >");
1488       for (j = 0; j < 7; j++) {
1489         String width = "";
1490         if (j == 3) { // Fone
1491           width = "width=\"100px\" nowrap";
1492         }
1493         cor = (auxCor % 2 == 0) ? "#F6F7FB\" " : "#FFFFFF\" ";
1494 
1495         html.append("\n\t\t<td ").append(width).append(" bgcolor=\"").append(cor);
1496         html.append(">\n\t\t\t").append(Pagina.trocaNull(arquivo[i][j]));
1497         html.append("\n\t\t</td>");
1498 
1499       }
1500 
1501       if (i + 1 < linha && "".equals(arquivo[i + 1][0]) || arquivo[i + 1][0] == null && "".equals(arquivo[i + 1][1]) || arquivo[i + 1][1] == null && "".equals(arquivo[i + 1][2]) || arquivo[i + 1][2] == null && "".equals(arquivo[i + 1][3]) || arquivo[i + 1][3] == null && "".equals(arquivo[i + 1][4]) || arquivo[i + 1][4] == null) {
1502         html.append("\n\t<tr class=\"linha_subtitulo2_estrutura\" >");
1503         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1504         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1505         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1506         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1507         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1508 
1509         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor);
1510         html.append(">\n\t\t\t ").append(Pagina.trocaNull(arquivo[i + 1][5]));
1511         html.append("\n\t\t</td>");
1512 
1513         html.append("\n\t\t<td ").append(" bgcolor=\"").append(cor).append(">\n\t\t</td>");
1514         html.append("\n\t</tr>");
1515         i++;
1516       }
1517       else
1518         html.append("\n\t</tr>");
1519     }
1520     html.append("</table>");
1521 
1522     this.generateFile(path, arquivo, separador);
1523 
1524     // csvPrinter.writeln(arquivo);
1525     // outStr.close();
1526     return path;
1527   }
1528 
1529   /**
1530    * Retorna uma lista de usuarios que pode ser apenas os ativos, apenas os
1531    * inativos.
1532    * @author luanaoliveira
1533    * @return
1534    * @throws ECARException
1535    */
1536   public List selecionaPorIndAtivo(String status) throws ECARException {
1537 
1538     try {
1539       Query query = this.session.createQuery("select u from UsuarioUsu u where u.indAtivoUsu = :status");
1540 
1541       query.setString("status", status);
1542 
1543       List lista = query.list();
1544 
1545       return lista;
1546 
1547     } catch (HibernateException e) {
1548       this.logger.error(e);
1549       throw new ECARException("erro.hibernateException");
1550     }
1551 
1552   }
1553 
1554   /**
1555    * Retorna celular se este existir.
1556    * @author yuri
1557    * @since 21/06/2007
1558    * @param usuario
1559    * @return String
1560    */
1561   public String getCelularByUsuario(UsuarioUsu usuario) {
1562     String retorno = "";
1563 
1564     if (usuario.getUsuarioAtributoUsuas() != null && !usuario.getUsuarioAtributoUsuas().isEmpty()) {
1565       for (Iterator it = usuario.getUsuarioAtributoUsuas().iterator(); it.hasNext();) {
1566         UsuarioAtributoUsua usua = (UsuarioAtributoUsua) it.next();
1567         if (usua.getSisAtributoSatb().getCodSatb().longValue() == 22) { // 22 eh
1568                                                                         // o
1569                                                                         // codigo
1570                                                                         // do
1571                                                                         // atributo
1572                                                                         // que
1573                                                                         // corresponde
1574                                                                         // ao
1575                                                                         // celular.
1576           retorno = usua.getInformacao();
1577           break;
1578         }
1579       }
1580     }
1581 
1582     return retorno;
1583   }
1584 
1585   /**
1586    * Retorna True se o Indicador de Usuario ativo existir e for S.
1587    * @author yuri
1588    * @since 26/06/2007
1589    * @param Long
1590    * @return boolean
1591    */
1592   public boolean verificarUsuarioAtivo(Long codUsu) throws ECARException {
1593     UsuarioUsu usu = (UsuarioUsu) this.buscar(UsuarioUsu.class, codUsu);
1594     if (usu != null)
1595       return "S".equals(usu.getIndAtivoUsu()) ? true : false;
1596     else
1597       return false;
1598   }
1599 
1600   /**
1601    * Este método analisa quais os grupos que não estavam vinculados ao sentinela
1602    * antes e então só vincula estes grupos
1603    * @param request
1604    * @param usuario
1605    * @throws ECARException
1606    * @throws SentinelaException
1607    */
1608   public void associarAhGruposSentinela(HttpServletRequest request, UsuarioUsu usuario) throws ECARException, SentinelaException {
1609     long codUsuarioSentinela = 0l;
1610     int i = 0;
1611     SentinelaAdmInterface sentinelaAdmin = SentinelaUtil.getSentinelaAdmInterface(request);
1612     SentinelaInterface sentinela = SentinelaUtil.getSentinelaInterface();
1613 
1614     try {
1615       if (usuario.getIdDominioUsu() != null && usuario.getIdDominioUsu().length() != 0)
1616         codUsuarioSentinela = Long.parseLong(usuario.getIdDominioUsu());
1617     } catch (NumberFormatException numExcep) {
1618       throw new ECARException();
1619     }
1620     Set gruposVinculadosDepois = new HashSet<Long>(1);
1621     String[] strGruposVinculadosDepois = request.getParameterValues("vinculandos");
1622 
1623     SentinelaParam[] gruposVinculadosSent = null;
1624 
1625     if (codUsuarioSentinela != 0l)
1626       gruposVinculadosSent = sentinela.getGruposByUsuario(codUsuarioSentinela);
1627 
1628     if (strGruposVinculadosDepois != null && strGruposVinculadosDepois.length != 0) {
1629       gruposVinculadosDepois = new HashSet<Long>(strGruposVinculadosDepois.length);
1630 
1631       for (i = 0; i < strGruposVinculadosDepois.length; i++) {
1632         gruposVinculadosDepois.add(new Long(strGruposVinculadosDepois[i]));
1633       }
1634     }
1635 
1636     // try {
1637 
1638     for (int j = 0; j < gruposVinculadosSent.length; j++) {
1639       Long codigo = new Long(gruposVinculadosSent[j].getCodigo());
1640 
1641       if (gruposVinculadosDepois.contains(codigo)) {
1642         gruposVinculadosDepois.remove(codigo);
1643       }
1644       else {
1645         sentinelaAdmin.desvincularUsuarioGrupo(codUsuarioSentinela, codigo);
1646       }
1647     }
1648 
1649     for (Iterator iterator = gruposVinculadosDepois.iterator(); iterator.hasNext();) {
1650       Long codigo = (Long) iterator.next();
1651       sentinelaAdmin.vincularUsuarioGrupo(codUsuarioSentinela, codigo);
1652     }
1653 
1654     // } catch (SentinelaException e) {
1655     // throw new
1656     // ECARException("Usuário sem permissão aos métodos de vinculação de usuários aos grupos do Sentinela.");
1657     // }
1658 
1659   }
1660 
1661   private void generateFile(String sFileName, String[][] conteudo, String separador) throws IOException {
1662     FileWriter writer = new FileWriter(sFileName);
1663 
1664     for (int i = 0; i < conteudo.length; i++) {
1665       for (int j = 0; j < conteudo[i].length; j++) {
1666         if (conteudo[i][j] != null) {
1667           writer.append(conteudo[i][j]);
1668         }
1669         if (j + 1 < conteudo[i].length) {
1670           writer.append(separador);
1671         }
1672       }
1673       writer.append('\n');
1674     }
1675 
1676     // generate whatever data you want
1677 
1678     writer.flush();
1679     writer.close();
1680 
1681   }
1682 }