View Javadoc

1   /*
2    * Created on 06/06/2005
3    * 
4    * Classe que implementa a interface PopUpPesquisa que é utilizada pelo template jsp
5    * popup_pesquisa.jsp
6    * 
7    * O template instancia essa classe utilizando os métodos definidos na interface.
8    * Assim o template pode ser usado para pesquisar e navegar em várias classes sem 
9    * precisar escrever um jsp específico para cada um.
10   * Basta criar uma classe que implementa a interface PopUpPesquisa e passá-la como
11   * parâmatro no momento de chamar a tela de pesquisa
12   * 
13   * A tela de pesquisa sempre retorna um código e uma descrição do que foi selecionado.
14   *
15   * Esta classe tem mais implementações que outras classes PopUp.
16   * Esta classe foi desenvolvida para contemplar o novo Caso de Uso de Editores/Leitores
17   * onde pode ser incluído um Grupo (SisAtributoSatb) ou Usuario e dar as devidas
18   * permissões.
19   * Por este detalhe de pode incluir ou um ou outro, a classe sofreu implementações 
20   * diferentes das demais. 
21   */
22  package ecar.popup;
23  
24  import java.util.ArrayList;
25  import java.util.Collections;
26  import java.util.Comparator;
27  import java.util.List;
28  
29  import javax.servlet.http.HttpServletRequest;
30  
31  import comum.database.Dao;
32  import comum.util.Pagina;
33  
34  import ecar.dao.ConfiguracaoDao;
35  import ecar.dao.UsuarioDao;
36  import ecar.exception.ECARException;
37  import ecar.pojo.ConfiguracaoCfg;
38  import ecar.pojo.SisAtributoSatb;
39  import ecar.pojo.UsuarioUsu;
40  import ecar.util.Dominios;
41  
42  /**
43   * @author garten
44   *
45   */
46  public class PopUpUsuarioEGrupo implements PopUpPesquisa {
47      
48  
49      // array de nomes de campos em que pode pesquisar
50      private String[] pesquisarEm;
51      
52      // declaramos Object e Dao para declaração genérica
53      private Object pojo;
54      private Dao dao;
55      private UsuarioUsu usuario;
56      private SisAtributoSatb grupo;
57      private UsuarioDao usuarioDao = new UsuarioDao(null);
58  
59      public PopUpUsuarioEGrupo(){
60          pojo = new Object();
61          dao = new Dao();
62          this.setPesquisarEm(new String[] {"Nome","E-mail"});
63      }
64      
65      /**
66       * Devolve para o template jsp o Dao.<br>
67       * 
68       * @author N/C
69       * @since N/C
70       * @version N/C
71       * @return Dao
72       * @see ecar.popup.PopUpPesquisa#getDao()
73       */
74      public Dao getDao() {
75          return dao;
76      }
77      
78      /**
79       * Retorna "Usu&aacute;rios e Grupos de Acesso".<br>
80       * 
81       * @author N/C
82       * @since N/C
83       * @version N/C
84       * @return String
85       */
86      public String getTitulo(){
87          return "Usu&aacute;rios e Grupos de Acesso";
88      }
89  
90      /**
91       * Recebe o argumento de pesquisa do template jsp e seta nos respectivos campos.<br>
92       * String arg - a string do argumento d pesquisa.<br>
93       * String[] pesquisarEm - um array de string com os nomes dos campos que devem ser pesquisados.<br>
94       * 
95       * @author N/C
96       * @since N/C
97       * @version N/C
98       * @param HttpServletRequest request
99       * @throws ECARException
100      */
101     public void setArgPesquisa(HttpServletRequest request) throws ECARException{
102     	usuario = new UsuarioUsu();
103     	grupo = new SisAtributoSatb();
104     	
105     	String arg = Pagina.getParam(request, "hidArg");
106         String[] pesquisarEm = request.getParameterValues("hidPesquisarEm");
107         
108         usuario.setIndAtivoUsu(Dominios.SIM);
109         
110         if (pesquisarEm != null)
111 	        for (int i = 0; i < pesquisarEm.length; i++) {
112 	            if("0".equals(pesquisarEm[i])){
113 	                usuario.setNomeUsu(arg);
114 	                grupo.setDescricaoSatb(arg);
115 	            }
116 	            // o grupo nao possui e-mail, por isso só pesquisa em descrição
117 	            if("1".equals(pesquisarEm[i]))
118 	                usuario.setEmail1Usu(arg);
119 	        }
120     }
121     
122     /**
123      * Executamos duas pesquisas e adicionamos os resultados em uma lista
124      * que é ordenada de acordo com usuário ou grupo.<br>
125      * 
126      * @author N/C
127      * @since N/C
128      * @version N/C
129      * @return List
130      * @throws ECARException
131      */ 
132     public List pesquisar() throws ECARException {
133     	ConfiguracaoCfg configuracao = new ConfiguracaoCfg();
134     	ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(null);
135     	
136     	List lista = new ArrayList();
137     	List listaGrupos = new ArrayList();
138     	List listaUsuarios = new ArrayList();
139     	
140     	String nomeUsu = usuario.getNomeUsuSent();
141     	String emailUsu = usuario.getEmail1UsuSent();
142     	
143     	// retirar o nome e email do usuario do bean para não pesquisa-lo no banco de dados ECAR
144     	usuario.setNomeUsu(null);
145     	usuario.setEmail1Usu(null);
146     	
147         listaUsuarios.addAll( usuarioDao.pesquisar(usuario, nomeUsu, "", "", emailUsu));
148         
149         /* Filtrar somente Classe de Acesso - Grupo de Acesso (Cadastro em ConfiguracaoCgf) */
150         if(configuracaoDao.getConfiguracao() != null){
151         	configuracao = configuracaoDao.getConfiguracao();
152         	
153         	if( configuracao.getSisGrupoAtributoSgaByCodSgaGrAtrClAcesso() != null ) {
154         		grupo.setSisGrupoAtributoSga(configuracao.getSisGrupoAtributoSgaByCodSgaGrAtrClAcesso());
155         		listaGrupos.addAll( dao.pesquisar(grupo, new String[] {"descricaoSatb", "asc"}) );
156         	}
157         }
158         
159         Collections.sort(listaGrupos,
160 	            new Comparator() {
161 	        		public int compare(Object o1, Object o2) {
162         				return ( (SisAtributoSatb)o1 ).getDescricaoSatb().compareToIgnoreCase( ( (SisAtributoSatb)o2 ).getDescricaoSatb() );
163 	        		}
164 	    		} );
165         
166         Collections.sort(listaUsuarios,
167 	            new Comparator() {
168 	        		public int compare(Object o1, Object o2) {
169         				return ( (UsuarioUsu)o1 ).getNomeUsuSent().compareToIgnoreCase( ( (UsuarioUsu)o2 ).getNomeUsuSent() );
170 	        		}
171 	    		} );
172         
173         lista.addAll(listaGrupos);
174         lista.addAll(listaUsuarios);
175 
176         return lista;
177     }
178     
179     /**
180      * Para diferenciar o grupo do usuário antes do valor do cógigo é passado a letra
181      * "U" para Usuário e "G" para grupo.<br>
182      * Esse código é tratado no método setItemUsuarioGrupo do ItemEstrutUsuarioDao,
183      * que é executado somente quando o objeto é salvo.<br>
184      * 
185      * @author N/C
186      * @since N/C
187      * @version N/C
188      * @return String
189      */
190     public String getCodigo() {
191     	if( pojo.getClass() == UsuarioUsu.class )
192     		return "U"+((UsuarioUsu) pojo).getCodUsu().toString();
193     	else
194     		return "G"+((SisAtributoSatb) pojo).getCodSatb().toString();
195     }
196     
197     /**
198      * Devolve para o template a descricao de acordo com o objeto.<br>
199      * 
200      * @author N/C
201      * @since N/C
202      * @version N/C
203      * @return String
204      */
205     public String getDescricao() {
206     	if( pojo.getClass() == UsuarioUsu.class )
207     		return ((UsuarioUsu) pojo).getNomeUsuSent().toString();
208     	else
209     		return ((SisAtributoSatb) pojo).getDescricaoSatb().toString();
210     }
211     
212     /**
213      * Recebe um objeto do template.<br>
214      * 
215      * @author N/C
216      * @since N/C
217      * @version N/C
218      * @param Object o
219      */
220     public void setPojo(Object o) {
221     	if( o.getClass() == UsuarioUsu.class)
222     		pojo = (UsuarioUsu) o;
223     	else
224     		pojo = (SisAtributoSatb) o;
225     }
226 
227     /**
228      * Retorna para o template um array com os nomes para montar os checkbox.<br>
229      * 
230      * @author N/C
231      * @since N/C
232      * @version N/C
233      * @return String[] - (Returns the pesquisarEm)
234      */
235     public String[] getPesquisarEm() {
236         return pesquisarEm;
237     }
238 
239     /**
240      * Atribui internamente um array com os campos possiveis para a pesquisa.<br>
241      * 
242      * @author N/C
243      * @since N/C
244      * @version N/C
245      * @param String[] pesquisarEm - The pesquisarEm to set.
246      */
247     private void setPesquisarEm(String[] pesquisarEm) {
248         this.pesquisarEm = pesquisarEm;
249     }
250 }