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 }