View Javadoc

1   /*
2    * Created on 25/04/2005
3    *
4    */
5   package comum.util;
6   
7   import gov.pr.celepar.sentinela.comunicacao.SentinelaParam;
8   
9   import java.io.Serializable;
10  import java.util.ArrayList;
11  import java.util.HashMap;
12  import java.util.List;
13  
14  /** 
15   * @author garten
16   * @since 25/04/2005
17   * @version N/C
18   */
19  public class ItemMenu implements Serializable{
20      
21  
22  	private static final long serialVersionUID = 7212422172582344256L;
23  	private static final int COMANDO = 0;
24      private static final int ITEM_MENU	 = 1;
25  
26      private Integer		codigo;
27      private int 		hierarquia;
28      private String		nome;
29      private String 		descricao;  
30      private String 		url;
31      private ItemMenu	itemMenuPai;
32      private List<ItemMenu> itemMenuFilhos;
33      private boolean		acessoPublico;
34      private boolean		funcaoGenerica;
35      
36      
37  
38      /**
39       * Construtor default, gera um item de menu.<br>
40       * 
41       * @author N/C
42       * @since N/C
43       * @version N/C
44       * @param ItemMenu pai
45       */
46      public ItemMenu(ItemMenu pai) {
47          setAcessoPublico(false);  // a interface do sentinela nao exporta esses parametros
48          setFuncaoGenerica(false);
49          setItemMenuPai(pai);
50      }
51  
52      /**
53       * Construtor completo.<br>
54       * 
55       * @author N/C
56       * @since N/C
57       * @version N/C
58       * @param ItemMenu pai
59       * @param Integer codigo
60       * @param String nome
61       * @param String url
62       */
63      public ItemMenu(ItemMenu pai, Integer codigo, String nome, String url) {
64          setCodigo(codigo);
65          setHierarquia("".equals(url) ? ITEM_MENU : COMANDO);
66          setNome(nome);
67          setDescricao(""); 			// a interface do sentinela nao exporta esses parametros
68          setUrl(url);
69          setItemMenuPai(pai);
70          setItemMenuFilhos(new ArrayList<ItemMenu>());
71          setAcessoPublico(false);	// a interface do sentinela nao exporta esse parametros
72          setFuncaoGenerica(false);	// a interface do sentinela nao exporta esse parametros
73      }
74      
75  
76      /**
77       * Retorna uma lista de Item de Menu.<br>
78       * Percorre o array fornecido pela interface do sentinela e agrupa os menus de uma forma estruturada.<br>
79       * 
80       * @author N/C
81       * @since N/C
82       * @version N/C
83       * @param SentinelaParam[] menuSentinela
84       * @return List					- List de ItemMenu
85       */
86      public static List<ItemMenu> carregaMenu(SentinelaParam[] menuSentinela) {
87          HashMap<Integer, ItemMenu> tabela = new HashMap<Integer, ItemMenu>();  //tabela hash com os itens de menu sem pai (menu(s) principal(ais))
88          List<ItemMenu> lista = new ArrayList<ItemMenu>();
89          
90          Integer codigo;
91          String nome;
92          String url;
93          Integer codigoPai;
94          
95  		for(int i = 0; i < menuSentinela.length; i++) {
96  			long codAux = menuSentinela[i].getCodigo();
97  			
98  			codigo		= Integer.valueOf(Long.valueOf(codAux).intValue());
99  			
100 			nome		= menuSentinela[i].getNome();
101 			url			= menuSentinela[i].getParamAux()[0];
102 			codigoPai	= (menuSentinela[i].getParamAux()[1].trim().length() > 0) ? 
103 					Integer.valueOf(Integer.parseInt(menuSentinela[i].getParamAux()[1])) :
104 						Integer.valueOf(0);
105 		    
106 		    if(codigoPai.intValue() == 0) {
107 		        ItemMenu m = new ItemMenu(null, codigo, nome, url);
108 		        // coloca na tabela hash para pesquisar depois
109 		        if (!tabela.containsKey(codigo))
110 		            tabela.put(codigo, m);
111 		        lista.add(m);
112 		    } else {
113 		        // busca o pai
114 		        ItemMenu pai = (ItemMenu) tabela.get(codigoPai);
115 		        // seta o pai ao filho
116 		        ItemMenu m = new ItemMenu(pai, codigo, nome, url);
117 		        // adiciona o filho na lista de filhos do pai
118 		        pai.getItemMenuFilhos().add(m);
119 		        
120 		        //deve testar se o item de menu é um novo menu
121 		        if(m.getHierarquia() == ITEM_MENU)
122 			        if (!tabela.containsKey(codigo))
123 			            tabela.put(codigo, m);
124 		    }
125 		}
126         return lista;
127     }
128     
129     /**
130      * Retorna boolean acessoPublico.<br>
131      * 
132      * @author N/C
133      * @since N/C
134      * @version N/C
135      * @return boolean				- Returns the acessoPublico.
136      */
137     public boolean isAcessoPublico() {
138         return acessoPublico;
139     }
140     
141     /**
142      * Atribui valor especificado para boolean acessoPublico.<br>
143      * E utilizado para definir se a funcao no menu pode ou nao ser visto sem uso de chave e senha.<br>
144      * 
145      * @author N/C
146      * @since N/C
147      * @version N/C
148      * @param boolean acessoPublico	- The acessoPublico to set.
149      */
150     public void setAcessoPublico(boolean acessoPublico) {
151         this.acessoPublico = acessoPublico;
152     }
153     
154     /**
155      * Retorna integer codigo.<br>
156      * 
157      * @author N/C
158      * @since N/C
159      * @version N/C
160      * @return Integer				- Returns the codigo.
161      */
162     public Integer getCodigo() {
163         return codigo;
164     }
165     
166     /**
167      * Atribui valor especificado para integer codigo.<br>
168      * 
169      * @author N/C
170      * @since N/C
171      * @version N/C
172      * @param Integer codigo		- The codigo to set.
173      */
174     public void setCodigo(Integer codigo) {
175         this.codigo = codigo;
176     }
177     
178     /**
179      * Retorna String descricao.<br>
180      * 
181      * @author N/C
182      * @since N/C
183      * @version N/C
184      * @return String				- Returns the descricao.
185      */
186     public String getDescricao() {
187         return descricao;
188     }
189     
190     /**
191      * Atribui valor especificado para a String descricao.<br>
192      * 
193      * @author N/C
194      * @since N/C
195      * @version N/C
196      * @param String descricao		- The descricao to set.
197      */
198     public void setDescricao(String descricao) {
199         this.descricao = descricao;
200     }
201     
202     /**
203      * Retorna boolean funcaoGenerica.<br>
204      * 
205      * @author N/C
206      * @since N/C
207      * @version N/C
208      * @return boolean				- Returns the funcaoGenerica.
209      */
210     public boolean isFuncaoGenerica() {
211         return funcaoGenerica;
212     }
213     
214     /**
215      * Atribui valor especificado para boolean funcaoGenerica.<br>
216      * 
217      * @author N/C
218      * @since N/C
219      * @version N/C
220      * @param boolean funcaoGenerica - The funcaoGenerica to set.
221      */
222     public void setFuncaoGenerica(boolean funcaoGenerica) {
223         this.funcaoGenerica = funcaoGenerica;
224     }
225     
226     /**
227      * Retorna int hierarquia.<br>
228      * 
229      * @author N/C
230      * @since N/C
231      * @version N/C
232      * @return int					- Returns the hierarquia.
233      */
234     public int getHierarquia() {
235         return hierarquia;
236     }
237     
238     /**
239      * Atribui valor especificado para int hierarquia.<br>
240      * 
241      * @author N/C
242      * @since N/C
243      * @version N/C
244      * @param int hierarquia		- The hierarquia to set.
245      */
246     public void setHierarquia(int hierarquia) {
247         this.hierarquia = hierarquia;
248     }
249     
250     /**
251      * Retorna List itemMenuFilhos.<br>
252      * 
253      * @author N/C
254      * @since N/C
255      * @version N/C
256      * @return List					- Returns the itemMenuFilhos.
257      */
258     public List<ItemMenu> getItemMenuFilhos() {
259         return itemMenuFilhos;
260     }
261     
262     /**
263      * Atribui valor especificado para List itemMenuFilhos.<br>
264      * 
265      * @author N/C
266      * @since N/C
267      * @version N/C
268      * @param List itemMenuFilhos	- The itemMenuFilhos to set.
269      */
270     public void setItemMenuFilhos(List<ItemMenu> itemMenuFilhos) {
271         this.itemMenuFilhos = itemMenuFilhos;
272     }
273     
274     /**
275      * Retorna itemMenuPai.<br>
276      * 
277      * @author N/C
278      * @since N/C
279      * @version N/C
280      * @return ItemMenu				- Returns the itemMenuPai.
281      */
282     public ItemMenu getItemMenuPai() {
283         return itemMenuPai;
284     }
285     
286     /**
287      * Atribui valor especificado para ItemMenu ItemMenuPai
288      * 
289      * @author N/C
290      * @since N/C
291      * @version N/C
292      * @param ItemMenu itemMenuPai	- The itemMenuPai to set.
293      */
294     public void setItemMenuPai(ItemMenu itemMenuPai) {
295         this.itemMenuPai = itemMenuPai;
296     }
297     
298     /**
299      * Retorna String nome.<br>
300      * 
301      * @author N/C
302      * @since N/C
303      * @version N/C
304      * @return String				- Returns the nome.
305      */
306     public String getNome() {
307         return nome;
308     }
309     
310     /**
311      * Atribui valor especificado para String nome.<br>
312      * 
313      * @author N/C
314      * @since N/C
315      * @version N/C
316      * @param String nome			- The nome to set.
317      */
318     public void setNome(String nome) {
319         this.nome = nome;
320     }
321     
322     /**
323      * Retorna String url.<br>
324      * 
325      * @author N/C
326      * @since N/C
327      * @return String				- Returns the url.
328      */
329     public String getUrl() {
330         return url;
331     }
332     
333     /**
334      * Atribui valor especificado para String url.<br>
335      * 
336      * @author N/C
337      * @since N/C
338      * @param String url			- The url to set.
339      */
340     public void setUrl(String url) {
341         this.url = url;
342     }
343 }