Esta semana precisei criar uma funcao no banco de dados PostgreSQL que me retornasse o menor valor dentre outros cotados. Nesta funcao eu passo dois parametros: codigo do material e codigo da cotacao (ambos do tipo inteiro).A funcao me retorna um tipo NUMERIC(20, 2), que e o tipo no qual venho trabalhando com valores monetarios pois segundo a propria documentacao do PostgreSQL: It is especially recommended for storing monetary amounts and other quantities where exactness is required.Outro detalhe importante que podemos observar e que na query, os valores contidos nos parametros sao lidos utilizando $1 e $2 respectivamente. Vejamos:CREATE FUNCTION func_menor_valor(codigo_material INT, codigo_cotacao INT)RETURNS NUMERIC(20, 2) AS $$ SELECT MIN(valor_total) AS menor_valor FROM view_cotacoes WHERE codigo_material = $1 AND codigo_cotacao = $2 GROUP BY codigo_material;$$ LANGUAGE SQL;Enfim, isso e apenas um exemplo basico de funcao. Mais informacoes podem ser encontradas na documentacao. Tambem e importante lembrar que a versao do PostgreSQL utilizada foi a 9.1. Hoje vou ensinar como retornar todos os objetos JMenuItems contidos num JMenuBar. Eventualmente voce pode querer retornar tambem os objetos JMenu, entao fica livre para fazer sua implementacao do metodo.O metodo que vou apresentar pode ser muito util para fazer o controle de acesso da aplicacao, permitindo que o item de menu seja exibido ou nao de acordo com as permissoes de cada usuario.A estrutura de menus em Java e basicamente a seguinte:JMenubar | |__ JMenu | | | |__JMenuItem | |__JMenu | |__JMenu | |__JMenuItemComo podemos observar, temos uma barra de menu e dentro dela temos 2 menus. No primeiro menu temos um item e no segundo temos um sub menu e dentro deste outro item. Entao para recuperar todos itens, considerando que podem existir itens dentro de sub menus, devemos utilizar a recursividade.Resumidamente, um metodo recursivo e um metodo que faz chamadas a ele mesmo. Certos problemas, como o apresentado, exigem esta abordagem, pois os elementos estao dispostos numa estrutura do tipo arvore que pode ter varias ramificacoes. Sendo assim, segue abaixo uma possivel implementacao do metodo que resolve este problema. /** * Retorna todos JMenuItems de um JMenuBar. * * @param obj Uma variavel do tipo JMenuBar. * @return void */ public void getMenuItems(Object obj) { if (obj instanceof JMenuBar) { for (Component c : ((JMenuBar) obj).getComponents()) { getMenuItems(c); } } if (obj instanceof JMenu) { for (Component c : ((JMenu) obj).getMenuComponents()) { getMenuItems(c); } } if (obj.getClass() == JMenuItem.class) { System.out.println("JMenuItem: " + ((JMenuItem) obj).getName()); } }Fiquem a vontade para modificar e utilizar. Ate a proxima! Ola! Hoje vou mostrar como adicionar uma progressbar dentro de uma actionbar. Um bom exemplo de implementacao deste recurso e o aplicativo do Gmail, onde voce tem um item de menu (usado para atualizar seus e-mails) que quando clicado, e substituido pela progressbar ate o procedimento ser concluido e entao volta novamente a ser o item.Para utilizar este recurso, a versao minima requerida do sdk e a 11. Voce tambem vai precisar dos icones, que podem variar de acordo com o tema (baixe o pacote neste link). Para o exemplo estarei utilizando estes que sao adequados para