Tutorial do Alfred
Biblioteca Alfred
Utilitários, Validadores e Formatadores para Java
Versão 1.1 - Última atualização em 10 de Setembro de 2010
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 1
Tutorial do Alfred
Sumário
1. Licença do Alfred................................................................................... 4
2. Licença deste Manual.............................................................................. 8
3. Sobre o Alfred....................................................................................... 9
4. Como Usar.......................................................................................... 10
5. Conversores........................................................................................ 11
5.1. Armazenamento..............................................................................11
5.2. Base Numérica............................................................................... 11
5.3. Comprimento.................................................................................11
5.4. Massa.......................................................................................... 12
5.5. Moeda......................................................................................... 13
5.6. Temperatura..................................................................................13
5.7. Tempo......................................................................................... 13
5.8. Volume........................................................................................ 14
6. Formatadores...................................................................................... 15
6.1. CEP.............................................................................................15
6.2. CNPJ........................................................................................... 15
6.3. CPF.............................................................................................15
6.4. Data............................................................................................16
6.5. Inscrição Estadual........................................................................... 16
6.6. Moeda......................................................................................... 16
6.7. PIS/PASEP..................................................................................... 17
6.8. Telefone.......................................................................................17
7. Inutilitários.........................................................................................18
8. Utilitários...........................................................................................19
8.1. Bancos......................................................................................... 19
8.2. Beans.......................................................................................... 20
8.3. Bulário.........................................................................................21
8.4. Clima.......................................................................................... 21
8.5. Coleções......................................................................................21
8.6. Correios....................................................................................... 22
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 2
Tutorial do Alfred
8.7. CPF e CNPJ................................................................................... 23
8.8. CID............................................................................................. 24
8.9. Data............................................................................................24
8.10. Dicionários..................................................................................25
8.11. Dígito Verificador...........................................................................26
8.12. Física......................................................................................... 26
8.13. Horóscopos.................................................................................. 27
8.14. Idiomas.......................................................................................27
8.15. Inscrição Estadual.......................................................................... 28
8.16. Loterias...................................................................................... 28
8.17. Matemática..................................................................................28
8.18. Mídia......................................................................................... 30
8.19. Música........................................................................................30
8.20. Net............................................................................................30
8.21. PIS/PASEP....................................................................................31
8.22. Texto......................................................................................... 31
8.23. HTML......................................................................................... 32
8.24. Trânsito...................................................................................... 33
9. Validadores......................................................................................... 34
9.1. CNPJ........................................................................................... 34
9.2. CPF.............................................................................................34
9.3. Diversos....................................................................................... 34
9.4. Inscrição Estadual........................................................................... 34
9.5. E-mail..........................................................................................35
9.6. Números.......................................................................................35
9.7. PIS/PASEP..................................................................................... 35
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 3
Tutorial do Alfred
1. Licença do Alfred
O Alfred é disponibilizado sob a licença LGPL 3. Veja abaixo o texto da licença. De forma bastante
simples, podemos dizer que você pode usar livremente. O Alfred é uma biblioteca opensource.
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing
it is not allowed.
This version of the GNU Lesser General Public License incorporates the terms and conditions of
version 3 of the GNU General Public License, supplemented by the additional permissions listed
below.
0. Additional Definitions.
As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the
“GNU GPL” refers to version 3 of the GNU General Public License.
“The Library” refers to a covered work governed by this License, other than an Application or a
Combined Work as defined below.
An “Application” is any work that makes use of an interface provided by the Library, but which is not
otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a
mode of using an interface provided by the Library.
A “Combined Work” is a work produced by combining or linking an Application with the Library. The
particular version of the Library with which the Combined Work was made is also called the “Linked
Version”.
The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the
Combined Work, excluding any source code for portions of the Combined Work that, considered in
isolation, are based on the Application, and not on the Linked Version.
The “Corresponding Application Code” for a Combined Work means the object code and/or source
code for the Application, including any data and utility programs needed for reproducing the
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 4
Tutorial do Alfred
Combined Work from the Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License without being bound by section
3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data
to be supplied by an Application that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified version:
• a) under this License, provided that you make a good faith effort to ensure that, in the event
an Application does not supply the function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
• b) under the GNU GPL, with none of the additional permissions of this License applicable to
that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from a header file that is part of
the Library. You may convey such object code under terms of your choice, provided that, if the
incorporated material is not limited to numerical parameters, data structure layouts and accessors,
or small macros, inline functions and templates (ten or fewer lines in length), you do both of the
following:
• a) Give prominent notice with each copy of the object code that the Library is used in it and
that the Library and its use are covered by this License.
• b) Accompany the object code with a copy of the GNU GPL and this license document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken together, effectively do not
restrict modification of the portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of the following:
• a) Give prominent notice with each copy of the Combined Work that the Library is used in it
and that the Library and its use are covered by this License.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 5
Tutorial do Alfred
• b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
• c) For a Combined Work that displays copyright notices during execution, include the
copyright notice for the Library among these notices, as well as a reference directing the user
to the copies of the GNU GPL and this license document.
• d) Do one of the following:
• 0) Convey the Minimal Corresponding Source under the terms of this License, and the
Corresponding Application Code in a form suitable for, and under terms that permit,
the user to recombine or relink the Application with a modified version of the Linked
Version to produce a modified Combined Work, in the manner specified by section 6 of
the GNU GPL for conveying Corresponding Source.
• 1) Use a suitable shared library mechanism for linking with the Library. A suitable
mechanism is one that (a) uses at run time a copy of the Library already present on
the user's computer system, and (b) will operate properly with a modified version of
the Library that is interface-compatible with the Linked Version.
• e) Provide Installation Information, but only if you would otherwise be required to provide
such information under section 6 of the GNU GPL, and only to the extent that such
information is necessary to install and execute a modified version of the Combined Work
produced by recombining or relinking the Application with a modified version of the Linked
Version. (If you use option 4d0, the Installation Information must accompany the Minimal
Corresponding Source and Corresponding Application Code. If you use option 4d1, you must
provide the Installation Information in the manner specified by section 6 of the GNU GPL for
conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library side by side in a single library
together with other library facilities that are not Applications and are not covered by this License,
and convey such a combined library under terms of your choice, if you do both of the following:
• a) Accompany the combined library with a copy of the same work based on the Library,
uncombined with any other library facilities, conveyed under the terms of this License.
• b) Give prominent notice with the combined library that part of it is a work based on the
Library, and explaining where to find the accompanying uncombined form of the same work.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 6
Tutorial do Alfred
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General
Public License from time to time. Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library as you received it specifies that a
certain numbered version of the GNU Lesser General Public License “or any later version” applies to
it, you have the option of following the terms and conditions either of that published version or of
any later version published by the Free Software Foundation. If the Library as you received it does
not specify a version number of the GNU Lesser General Public License, you may choose any version
of the GNU Lesser General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide whether future versions of the GNU
Lesser General Public License shall apply, that proxy's public statement of acceptance of any version
is permanent authorization for you to choose that version for the Library.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 7
Tutorial do Alfred
2. Licença deste Manual
Este
manual
está
sob
a
licença
Attribution
Share
Alike*,
acessível
em
http://creativecommons.org/licenses/by-sa/3.0.
This license lets others remix, tweak, and build upon your work even for commercial reasons, as long as they credit you and
license their new creations under the identical terms. This license is often compared to open source software licenses. All new
works based on yours will carry the same license, so any derivatives will also allow commercial use.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 8
Tutorial do Alfred
3. Sobre o Alfred
O Alfred surgiu de minha necessidade em agrupar utilitários genéricos em um único lugar. Antes, era
comum eu ter diversos aplicativos em que existiam códigos interessantes e que poderiam ser
disponibilizados para a comunidade. Em alguns casos, isto não era possível, pois a funcionalidade
estava enraizada no próprio aplicativo.
Surgiu, então, a ideia: vou construir uma biblioteca opensource, colocar lá essas funcionalidades e
passar a usá-la em meus projetos. Surgiu o Alfred. E o nome? Bom, admito que foi por pura falta de
criatividade mesmo. Imaginei no mordomo do Batman, o tal Alfred. O cara está lá para ajudar um
herói e quase ninguém lembra dele. A ideia da biblioteca é esta também. Está aí para ajudar os
programadores e ninguém precisa lembrar que ela existe. :)
Um pouco da filosofia do Alfred. O objetivo é ter um conjunto de funcionalidades que não dependem
de bibliotecas externas. Portanto, você não verá dependências a log4j, hibernate e qualquer que
sejam as bibliotecas. O objetivo é que o Alfred seja um núcleo independente.
Preciso deixar meus agradecimentos a alguns colaboradores importantíssimos, como o Mário Jorge
Pereira pelas constantes ideias. Carlos Daniel Mercer pela contribuição com código e a Rodrigo
Moreira Fagundes, que contribui com tanto código que já faz parte ativamente do time.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 9
Tutorial do Alfred
4. Como Usar
Você pode usar o Alfred obtendo o arquivo alfred.jar e colocando-o no classpath de sua aplicação ou
usando o nosso repositório Maven. Neste segundo caso, adicione às dependências de seu projeto as
seguintes linhas:
01. <repositories>
02.
<repository>
03.
<id>alfredlibrary-snapshot.googlecode.com </id>
04.
<name>Alfred Library Snapshot </name>
05.
<url>http://alfredlibrary.googlecode.com/svn/repository/snapshot </url>
06.
</repository>
07.
<repository>
08.
<id>alfredlibrary-release.googlecode.com </id>
09.
<name>Alfred Library Snapshot </name>
10.
<url>http://alfredlibrary.googlecode.com/svn/repository/release </url>
11.
</repository>
12. </repositories>
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 10
Tutorial do Alfred
5. Conversores
Os conversores no Alfred são uma forma fácil e bastante prática para você converter entre unidades
de medida. Disponibilizamos diversos tipos de Conversores. Você encontra estes conversores no
pacote org.alfredlibrary.conversores. Vamos ver abaixo cada conversor e rápidos exemplos como
utilizá-los.
5.1. Armazenamento
O conversor de armazenamento serve para você converter entre unidades do tipo bit, kilobit,
megabit, gigabit, terabit, petabit, exabit, byte, kilobyte, megabyte, gigabyte, terabyte, petabyte e
exabyte. Vamos aos exemplos de uso:
1. public void converter() {
2. Double arm = Armazenamento.converter(1d, Unidade.EXABYTE, Unidade.PETABYTE);
3. }
Exemplo de conversão de Exabyte para Terabyte.
No exemplo acima, você está convertendo um (1) exabyte em petabytes. O primeiro parâmetro é o
valor que você quer converter. O segundo, a unidade de entrada. O terceito parâmetro é a unidade
de saída. Da mesma forma, você poderia converter um gigabyte em megabytes.
1. public void converter() {
2. Double arm = Armazenamento.converter(1d, Unidade.GIGABYTE, Unidade.MEGABYTE);
3. }
Exemplo de conversão de Gigabyte para Megabyte.
5.2. Base Numérica
Esta é boa para quem acabou de entrar na faculdade de ciências da computação :). No início do curso
você é bombardeado com provas que pedem para você converter de binário para decimal, de
hexadecimal para binário e por aí vai. É muito chato! O Alfred dá uma força fazendo estas conversões
para você. As bases numéricas suportadas são Binário, Octal, Decimal e Hexadecimal.
1. public void converter() {
2. String binario = BaseNumerica.converter("2", Base.DECIMAL, Base.BINARIO);
3. }
Exemplo de conversão de um número na base decimal para a base binária.
5.3. Comprimento
Precisa converter quilômetros para jardas? E o que você acha de converter metros para léguas
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 11
Tutorial do Alfred
marítimas? Então, use o conversor de comprimento. São várias as unidades suportadas:
•
Quilômetro
•
Hectômetro
•
Decâmetro
•
Metro
•
Decímetro
•
Centímetro
•
Milímetro
•
Micrometro
•
Nanômetro
•
Angstrom
Sem contar nas unidades menos convencionais, como Jardas, Pés, Milhas e Léguas. Vamos a um
exemplo de uso:
1. public void converter() {
2. Double comp = Comprimento.converter(1D, Unidade.NANOMETRO, Unidade.ANGSTROM);
3. }
Exemplo de conversão de nanômetro para angstrom.
5.4. Massa
Não, não estou falando de macarrão ou lasanha. Aqui você tem um conversor para as unidades
Tonelada, Quilograma, Hectograma, Grama, Centigrama, Quilate, Miligrama, Micrograma e
Nanograma. Mas também temos outras unidades pouco convencionais aqui no Brasil. São elas:
Onça Troy
Para metais preciosos, gemas ou medicamentos.
Onça Avordupios
Para objetos em geral.
Libra Troy
Para metais preciosos, gemas ou medicamentos.
Libra Avordupios
Para objetos em geral.
Libra Imperial
Definição obsoleta do ato de pesos e medidas de 1878 (UK).
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 12
Tutorial do Alfred
Arroba
Para gado.
Arroba Brasileira
Para gado, no padrão brasileiro.
Vamos a um exemplo de uso:
1. public void converter() {
2. Double massa = Massa.converter(1d, Unidade.TONELADA, Unidade.QUILOGRAMA);
3. }
Exemplo de conversão de tonelada para quilograma.
5.5. Moeda
Quer saber a cotação do real frente ao dólar? E porque não a cotação do dólar frente ao peso
argentino? É fácil, basta usar o conversor de Moeda do Alfred. Este conversor necessita de uma
conexão com a Internet, pois a conversão é realizada através do sítio do Banco Central do Brasil. Veja
um exemplo:
1. public void converter() {
2. String moeda = Moeda.converter("1,00", Moeda.ESTADOSUNIDOS, Moeda.BRASIL);
3. }
Exemplo de conversão de dólar para real.
Neste exemplo, você está convertendo um dólar para real. As moedas são muitas, não ficaria legal
listá-las aqui. Mas dá pra dizer que tem 32 tipos de moedas disponíveis.
5.6. Temperatura
Agora vamos converter entre unidades de temperatura? O Alfred, através deste conversor, tem as
unidades Celsius, Fahrenheit e Kelvin. Seu uso também é fácil, fácil. Veja logo abaixo.
1. public void converter() {
2. Float temperatura = Temperatura.converter(1, Unidade.CELSIUS, Unidade.FAHRENHEIT);
3. }
Exemplo de conversão de Celsius para Fahrenheit.
5.7. Tempo
Vamos converter horas em milésimos de segundo? Basta usar o conversor de Tempo do Alfred. As
unidades você já deve conhecer, certo?
•
Hora
•
Minuto
•
Segundo
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 13
Tutorial do Alfred
•
Décimo de Segundo
•
Centésimo de Segundo
•
Milésimo de Segundo
Sem muita conversa, vamos logo ao exemplo.
1. public void converter() {
2. Double tempo = Tempo.converter(1, Tempo.Unidade.HORA, Tempo.Unidade.MINUTO);
3. }
Exemplo de conversão de Horas para Minutos.
5.8. Volume
Chegou a hora de converter entre unidades de Volume. E quais estão disponíveis? Várias, além das
tradicionais, como quilolitro, hectolitro, decalitro, litro, decilitro, centilitro, mililitro, microlitro e
nanolitro. Tem também algumas pouco convencionais aqui no Brasil: Onça, Galão e Barril.
1. public void converter() {
2. Double volume = Volume.converter(1, Volume.Unidade.QUILOLITRO, Volume.Unidade.HECTOLITRO);
3. }
Exemplo de conversão de Quilolitro para Hectolitro.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 14
Tutorial do Alfred
6. Formatadores
Vimos os conversores e agora partiremos para os formatadores. Formatar textos é uma coisa bastante
comum em quase todas as aplicações. Quase sempre aparece um CPF para colocar ou tirar os pontos.
Ou então, um telefone. Também um CEP. O Alfred já conta com algumas formatações mais comuns:
CEP, CPF, CNPJ, Data, Moeda e Telefone. Vamos ver cada um destes nos próximos tópicos. O pacote
onde se encontram os formatadores é o org.alfredlibrary.formatadores.
6.1. CEP
Vamos formatar seu CEP? Digamos que o usuário digitou 40290280 mas você quer guardar no banco de
dados no formato 40.290-280. Ou também 40290-280. O Alfred faz estas duas formatações para você.
1. public void formatar() {
2. // Seu CEP no formato 40290-280.
3. String cep = CEP.formatar("40290280", true);
4. }
Exemplo de formatação de CEP simples.
Observou o parâmetro true no exemplo acima? Ele apenas diz que é para usar a formatação
simplificada, ou seja, aquela que não usa o ponto.
1. public void formatar() {
2. // Seu CEP no formato 40.290-280.
3. String cep = CEP.formatar("40290280", false);
4. }
Exemplo de formatação de CEP normal.
6.2. CNPJ
Agora você precisa formatar um CNPJ. Não se desespere com tantos substring, deixe o Alfred resolver
este problema. Um CNPJ do tipo 151939223000184 será formatado para 15.139.223/0001-84. Veja
como usar no exemplo abaixo.
1. public void formatar() {
2. // CNPJ formatado como 15.139.223/0001-84
3. String cnpj = CNPJ.formatar("15139223000184");
4. }
Exemplo de formatação de CNPJ.
6.3. CPF
Opa. Na verdade, você quer é formatar um CPF! Neste caso, o Alfred também ajuda. Passe um CPF
no formato 11111111111 que o Alfred transforma em 111.111.111-11. Exemplo logo abaixo.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 15
Tutorial do Alfred
1. public void formatar() {
2. // CPF formatado como 111.111.111-11
3. String cpf = CPF.formatar("11111111111");
4. }
Exemplo de formatação de CPF.
6.4. Data
E formatação de data em Java? Um pouco chato, não acha? Mas o Alfred também dá uma forcinha
aqui. Você pode até formatar por extenso! Uma data 12/05/2010 pode se transformar em “12 de
maio de 2010”.
1. public void formatar() {
2.
Calendar calendar = Calendar.getInstance();
3.
calendar.set(Calendar.DAY_OF_MONTH, 12);
4.
calendar.set(Calendar.MONTH, 05);
5.
calendar.set(Calendar.YEAR, 2010);
6.
String data = Data.formatarPorExtenso(calendar.getTime());
7.
Assert.assertEquals("12 DE JUNHO DE 2010", data.toUpperCase());
8. }
Exemplo de formatação de Data por extenso.
Vejamos, agora, uma formatação mais comum, na qual um padrão para formatação da data é passado
como parâmetro. Observe que este padrão é o mesmo que você usaria no SimpleDateFormat.
1. public void formatar() {
2. String data = Data.formatar(new Date(), "dd/MM/yyyy");
3. }
Exemplo de formatação de Data.
6.5. Inscrição Estadual
Inscrição Estadual é uma coisa chata. Cada estado tem seu formato, já percebeu? E você sabe todos
os formatos? Não precisa! O Alfred já lhe dá isso de presente.
1. public void converter() {
2. InscricaoEstadual.formatar(PadraoInscricaoEstadual.ACRE, "014074230")
3. }
Formatador de Inscrição Estadual.
6.6. Moeda
Opa. Você já falou em moeda antes. Sim, falei. Mas era o conversor de moedas. Agora você tem um
formatador! Podemos formatar moedas de duas formas com este utilitário. Primeiro podemos
formatar o valor para extenso. Você passa o valor 10.00 e tem como retorno uma String “10 reais”.
Entendeu? Veja o exemplo abaixo.
1. public void formatar() {
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 16
Tutorial do Alfred
2. // O resultado será “vinte e um reais e dez centavos”.
3. String moeda = Moeda.formatar(21.10);
4. }
Exemplo de formatação de moeda para extenso.
A outra opção é formatar a moeda seguindo um determinado padrão. Então, se você passa 10.00,
terá como retorno “R$ 10,00”, caso você tenha pedido a formatação da moeda brasileira. Veja um
exemplo abaixo.
1. public void formatar() {
2. String moeda = Moeda.formatar(21.10, MoedaLocal.BRASIL);
3. }
Exemplo de formatação de moeda.
6.7. PIS/PASEP
Vamos agora formatar um PIS/PASEP? Não sabe o que é? Claro que sabe. Sempre que você arranja um
emprego pela CLT, precisa informar isto e estes dados normalmente estão na sua carteira de
trabalho.
1. public void formatar() {
2. String moeda = PISPASEP.formatar("11111111114");
3. }
Exemplo de formatação de PIS/PASEP.
6.8. Telefone
Você também pode formatar telefones. E de três formas diferentes. No primeiro caso, você pode
formatar o telefone 11112222 para 1111-2222. E se tiver o DDD? O telefone 7111112222 vira (71)
1111-2222. E se tiver o código do país? Fica ainda mais bonito, veja só: de 557111112222, você tem
+55 (71) 1111-2222.
1. public void formatar() {
2. // O resultado será 3011-5761.
3. String telefone = Telefone.formatar("30115761");
4. // O resultado será (71) 3011-5761.
5. telefone = Telefone.formatar("7130115761");
6. // O resultado será +55 (71) 3011-5761.
7. telefone = Telefone.formatar("557130115761");
8. }
Exemplos de formatação de telefone.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 17
Tutorial do Alfred
7. Inutilitários
O Alfred também é um pouco de “descultura”. Vamos perturbar um pouco? Então, use alguns dos
inutilitários do Alfred. Servem para muito pouco, mas são engraçados e interessantes. Por enquanto,
temos apenas o MiGuXeItOr, idealizado pelo Aurélio Verde.
Você quer “traduzir” um texto em português para o idioma Miguxo? Ah, não sabe o que é isso? Sorte
sua! Mas você provavelmente já conversou com um miguxo na internet, seja por MSN, Google Talk,
Twitter ou Fóruns. Os miguxos estão por todas as partes. Vai me dizer que nunca viu um texto escrito
assim: U ALFred Eh 1 BiblIotEcaH D+...... mTU Bom Msm......
Caso já tenha visto, então você sabe o que é um texto miguxo. Então, vamos lá. Que tal miguxar um
texto, só de sacanagem? :) Use igual ao código abaixo. Você tem três níveis de miguxês:
•
Arcaico (da época do ICQ) – Nível 1;
•
Moderno (do MSN) – Nível 2;
•
Neo-Miguxês (Orkut e coisas afins) – Nível 3.
1. public void miguxar() {
2. String miguxada = Miguxeitor.miguxar("você é muito lindo, menino! Que fofura! Estou meio triste. Mas estou melhor!", 3);
3. }
Miguxando um texto.
E atenção, lembre-se: todos os créditos são para o Aurélio Verde. Acesse o sítio dele ou vá direto
para o Miguxeitor versão original:
http://www.aurelio.net/
http://www.coisinha.com.br/miguxeitor/
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 18
Tutorial do Alfred
8. Utilitários
Chegamos a uma das melhores partes do Alfred, em minha humilde opinião. Até mesmo porque
formatadores e conversores tem muitos por aí, mas os utilitários que o Alfred disponibiliza são poucos
que conseguem ter! Vamos ver um a um.
8.1. Bancos
Você conhece todos os bancos que atuam no Brasil? Não? Bom, eu também não sei. Eu prefiro buscar
isto na internet, como no sítio da Febraban. E se sua aplicação precisasse obter esta lista de bancos
para exibir em uma lista? Você pode usar o Alfred para isto.
Disponibilizamos um utilitário que usa o sítio da Febraban para obter esta lista de bancos. A partir
daí, você pode gravar em um banco de dados, por exemplo. Lembre-se, a lista é obtida do sítio da
Febraban, por isto, você necessitará de uma conexão com a internet.
1. public void obterBancos() {
2. Collection<Banco> bancos = Febraban.obterListaBancos(Tipo.TODOS, Origem.TODOS, Naturalidade.TODOS);
3. }
Obter lista de todos os bancos cadastrados na Febraban.
Não quer todos os bancos? Então, você também pode filtrar. Este utilitário recebe três parâmetros:
Tipo, Origem e Naturalidade. O Tipo pode ser Todos, Múltiplo, Comercial, Caixa, Investimento,
Leasing e Financeira. A origem pode ser Todos, Privado e Público. Finalizando, a Naturalidade pode
ser Todos, Nacional, Nacional com Participação Estrangeira, Nacional com Controle Estrangeiro,
Estrangeiro, Estadual e Federal.
Você terá sempre uma coleção de objetos do tipo Banco. E o que este objeto tem? Vejamos:
1. Código do Banco;
2. Nome do Banco;
3. Sítio na internet do Banco;
4. Quantidade de Agências.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 19
Tutorial do Alfred
8.2. Beans
Com este utilitário você pode manipular objetos que adotam o padrão JavaBeans. Por exemplo, e se
você quiser obter todos os atributos do objeto que estão expostos através de métodos get e colocar
em um Map? Faça igual ao exemplo abaixo.
1. public void tratarBeans() {
2.
Map<String,Object> retorno = Propriedades.transformarEmMap(umObjetoQualquer, ClasseTeste.class);
3. }
Obter um Map com os valores dos atributos de um objeto.
O que tem no objeto ClasseTeste? É simplesmente um JavaBean.
01. public class ClasseTeste {
02.
private String campo1;
03.
private String campo2;
04.
05.
public ClasseTeste(String c1, String c2) {
06.
this.campo1 = c1;
07.
this.campo2 = c2;
08.
}
09.
10.
public String getCampo1() {
11.
return campo1;
12.
}
13.
14.
public void setCampo1(String campo1) {
15.
this.campo1 = campo1;
16.
}
17.
18.
public String getCampo2() {
19.
return campo2;
20.
}
21.
22.
public void setCampo2(String campo2) {
23.
this.campo2 = campo2;
24.
}
25.
26. }
Objeto ClasseTeste.
Ah, você quer o contrário. Tem um Map e gostaria de copiar os valores dele para um objeto. Por
exemplo, você tem um Map com uma chave chamada “nome” e seu objeto tem um método
setNome(String nome). Usando o método conforme o exemplo abaixo, você copia o valor contido
nesta chave, para o objeto.
1. public void tratarBeans() {
2.
Map<String,Object> map = new HashMap<String, Object>();
3.
map.put("campo1","A1");
4.
map.put("campo2","A2");
5.
ClasseTeste c = new ClasseTeste("a","a");
6.
Propriedades.copiarPropriedades(map, c);
7. }
Copiar os valores de um Map para um Objeto.
Quer uma maneira fácil de obter uma propriedade de um objeto mas não sabe o tipo do objeto?
Então, use o Alfred igual ao exemplo abaixo.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 20
Tutorial do Alfred
1. public void tratarBeans() {
2. String valor = Propriedades.obterValorPropriedade("campo1", umObjetoQualquer);
3. }
Obter o valor de uma propriedade do objeto.
8.3. Bulário
E aí? Você é hipocondríaco? Gosta de remédios? O Alfred vai ajudar você a piorar! Quer fazer uma
aplicação que contém informações da bula de um remédio? Então, use o utilitário de Bulário. O
Alfred disponibiliza um utilitário que obtém a bula de um remédio através do sítio
http://www.bulario.net/. Você terá uma String com todo o texto da bula. Use conforme o exemplo
abaixo.
1. public void obterBula() {
2. String dorflex = BularioOnline.obter("dorflex");
3. }
Obter a bula do remédio Dorflex.
8.4. Clima
Está precisando exibir informações do clima de sua região em seu sistema? Você pode obter isto
através de diversos sítios na internet. Tem o Weather e o Climatempo, por exemplo. O Alfred dá uma
forcinha pra você. Disponibilizamos o utilitário que obtém os dados do sítio da Climatempo. Basta
usar igual ao exemplo abaixo.
1. public void obterClima() {
2.
Collection<Clima> climas = Climatempo.obterClima("800");
3. }
Obter o Clima de uma Cidade.
Você terá uma coleção contendo o clima dos cinco próximos dias para a cidade de código 800. E que
código é esse? A parte chata é que você terá que obter esta informação ainda no sítio da
Climatempo.
8.5. Coleções
Eis um utilitário para lhe ajudar com coleções. Como assim? Bom, vamos usar exemplos. Imagine que
você queira remover um item de uma coleção. Você normalmente usaria uma estrutura for para
percorrer toda a coleção e um if para identificar o item que deseja remover, chamando o método
remove da coleção. Certo? Um pouco chato, não?
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 21
Tutorial do Alfred
1. public void remover() {
2.
ClasseBean a = new ClasseBean("A");
3.
ClasseBean b = new ClasseBean("B");
4.
ClasseBean c = new ClasseBean("C");
5.
Collection<ClasseBean> colecao = new ArrayList<ClasseBean>();
6.
colecao.add(a); colecao.add(b); colecao.add(c);
7.
colecao = Colecoes.removerItem(colecao, "campo", "A");
8. }
Remover um Item de um coleção.
O Alfred está aí para tentar dar uma aliviada em tanto código. Você pode passar para o utilitário de
coleções, chamando o método removerItem, três parâmetros. O primeiro é a coleção que contém os
itens. O segundo, uma String com o nome do atributo do objeto que você deseja comparar. O último
parâmetro é o objeto em si. Veja o exemplo abaixo. Ele vai remover da coleção o item que tiver o
método getNome retornando Marlon. Entendeu? Você também pode ordenar listas com o Alfred.
1. public void ordenar() {
2. ClasseBean a = new ClasseBean("A");
3. ClasseBean b = new ClasseBean("B");
4. ClasseBean c = new ClasseBean("C");
5. List<ClasseBean> colecao = new ArrayList<ClasseBean>();
6. colecao.add(c); colecao.add(a); colecao.add(b);
7. colecao = Colecoes.ordenar(colecao, "campo");
8. }
Ordenar Listas.
8.6. Correios
O utilitário de Correios está aí para lhe ajudar com informações sobre Sedex, Sedex Hoje, Sedex 10,
PAC, CEP e Rastreamento de Encomendas. Quer saber o prazo e o valor de entrega de uma
encomenda de um CEP para outro através do Sedex? Então, veja o exemplo abaixo.
1. public void obterSedex() {
2. // Primeiro parâmetro é o CEP de Origem, o segundo o CEP de Destino. O terceiro é o peso da encomenda.
3.
String[] r = Sedex.obterPrecoPrazoEntrega("40290280", "40290280", 1);
4. }
Obter valor e prazo de entrega por Sedex.
E se for Sedex 10 ou Sedex Hoje? Muda muito pouco, como você pode ver logo abaixo.
1. public void obterSedex10Hoje() {
2. // Primeiro parâmetro é o CEP de Origem, o segundo o CEP de Destino. O terceiro é o peso da encomenda.
3.
String[] r = Sedex10.obterPrecoPrazoEntrega("40290280", "40290280", 1);
4. r = SedexHoje.obterPrecoPrazoEntrega("40290280", "40290280", 1);
5. }
Obter valor e prazo de entrega por Sedex 10.
E se for PAC? Bom, aí muda um pouco, pois PAC tem suas particularidades. Mas não é nada demais. O
primeiro parâmetro é o CEP de origem. O segundo, o CEP de destino. O terceiro parâmetro diz
respeito ao peso da encomenda. O quarto é a largura do pacote, o quinto a altura e o sexo parâmetro
o comprimento do pacote/caixa.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 22
Tutorial do Alfred
1. public void obterPAC() {
2.
String[] r = PAC. obterPrecoPrazoEntregaParaCaixaPacote("40290280", "40290280", 1, 12, 6, 16);
3. }
Obter valor e prazo de entrega por PAC.
Tem um CEP e quer saber o endereço? Isto é comum em muitas aplicações e o Alfred pode lhe ajudar.
Temos duas formas de obter estes dados. Um pelo sítio do CEP Livre. Contudo, as informações deles
não estão 100% atualizadas. Outra forma, é através do sítio dos próprios Correios. Neste, você tem a
informação certa, atualizadíssima. O mais importante é que, mais uma vez, você tem que lembrar de
executar o Alfred em uma máquina com acesso à internet.
1. public void obterEndereco() {
2. // Primeiro pelo CEP Livre.
3. String[] endereco = CEP.consultarEnderecoCEPLivre("40290280");
4. }
Obter um Endereço pelo CEP Livre.
Pelo CEP Livre você terá um Array de Strings contendo seis posições. As informações de cada posição,
em sequência, são: Tipo de Logradouro, Logradouro, Bairro, Cidade, Sigla do Estado, Estado.
1. public void obterEndereco() {
2. // Agora pelos Correios.
3. String[] endereco = CEP.consultarEnderecoCorreios("40290280");
4. }
Obter um Endereço pelos Correios.
Pelos Correios você terá um Array de Strings com quatro posições. A primeira é o próprio CEP, a
segunda é o tipo de logradouro concatenado ao logradouro, a terceira posição é o bairro e quarta a
cidade concatenada ao estado.
1. public void obterRastreamento() {
2. Collection<RegistroRastreamento> colRegistoRastreamento = Rastreamento.rastrear("RJ377032643BR");
3. }
Obter os Dados de Rastreamento.
No exemplo acima, você está fazendo o tracking, ou como chamamos aqui, o rastreamento de um
objeto enviado pelos Correios. Você terá uma coleção de objetos RegistroRastreamento, que lhe
fornece as informações Data e Hora da Situação, Local, Ação e Detalhe.
8.7. CPF e CNPJ
CPF e CNPJ, além de terem formatadores e validadores, também tem utilitários no Alfred. E qual a
diferença? Pouca, mas sutil. Em ambos os casos, você terá um gerador de CPF ou CNPJ e também um
gerador de dígito verificador. Veja como usar.
1. public void testar() {
2. // Vamos gerar um CPF aleatório e válido?
3. String cpf = CPF.gerar();
4. // Vamos obter um dígito verificador para um CPF? Para CNPJ é igual, basta usar o utilitário CNPJ no lugar!
5. String digito = CPF.gerarDigitoVerificador("111111111");
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 23
Tutorial do Alfred
6. }
Dígito Verificador e Geração de CPF e CNPJ.
8.8. CID
Você sabe o que é CID? Significa Classificação Internacional de Doenças. Muitas empresas pedem o
número do CID anotado no atestado médico. E se você precisar saber qual a doença a partir de um
código CID que lhe foi passado? O Alfred pode ajudar. Mas, tem um pequeeeeno detalhe. O arquivo
que contém os códigos é simplesmente enorme e ficaria inviável de baixá-lo pela internet toda vez
que você fizesse uma pesquisa. Então, você terá que obter o arquivo e passá-lo como parâmetro para
que o Alfred o consulte! Veja um exemplo:
1. public void testar() {
5. Collection<Map<String,Object>> lista = CID10.obter(new File("cid.xml"), "C18");
6. }
Obter dados de uma doença pelo seu CID.
Você terá como retorno uma coleção de Map<String,Object>. Cada Map terá uma String que
representa o nome do campo e um Object que representa o valor. No exemplo acima, você terá um
Map que contém “nome” = “Neoplasia maligna do cólon”. Quer saber todos os valores possíveis? Veja
essa página: http://www.datasus.gov.br/cid10/v2008/cid10.htm
8.9. Data
Usando apenas Java não é difícil fazer cálculos com data. Mas, ainda assim, você precisará de um
pouco de código para atingir seu objetivo. O Alfred pode dar uma facilitada nisto, não acha? Através
do utilitário de CalculoData você pode somar ou subtrair dias de uma data. Somar/subtrair meses ou
anos também. E que tal calcular a diferença em dias entre duas datas? E isto tudo usando apenas
uma linha de código. Bem mais fácil.
01. public void calcular() {
02. // Vamos somar alguns dias a uma data?
03. Date data = new Date();
04. Date data2 = new Date();
05. Date somado1 = CalculoData.somarDias(data, 10);
06. Date subtraido1 = CalculoData.subtrairDias(data, 10);
07. Date somado2 = CalculoData.somarAnos(data, 1);
08. Date subtraido2 = CalculoData.subtrairAnos(data, 1);
09.
10. // Vamos calcular a quantidade de dias que existe entre duas datas?
11. int valor = CalculoData.calcularDiferencaDias(data, data2);
12. }
Cálculos com Data.
Vamos a uns exemplos um pouquinho mais difíceis. Suponha que você tem dois períodos e gostaria de
saber se um está compreendido em outro. Tipo assim, você vai viajar de 12 de agosto a 12 de
setembro. Aí marcam duas reuniões no dia 9 de setembro e 10 de setembro. Você quer saber se
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 24
Tutorial do Alfred
poderá estar presente para as reuniões. Fácil, faz assim:
01. public void calcular() {
02.
Date data1 = Data.formatar("12/08/2010", "dd/MM/yyyy");
03.
Date data2 = Data.formatar("12/09/2010", "dd/MM/yyyy");
04.
Date data3 = Data.formatar("09/09/2010", "dd/MM/yyyy");
05.
Date data4 = Data.formatar("10/09/2010", "dd/MM/yyyy");
06.
07.
Date[] periodo1 = {data1, data2};
08.
Date[] periodo2 = {data3, data4};
09.
10.
CalculoData.calcularCompreensao(periodo1, periodo2);
11. }
Verificar se um período está compreendido em outro.
Neste exemplo, se o retorno for -1, então periodo1 contém o período2. Caso seja 1, o período2
contém o período 1. Vamos a um exemplo mais difícil. Você agora quer saber a interseção entre dois
períodos! Se você passa um período de 12 de agosto a 12 de setembro como primeiro parâmetro e
como segundo parâmetro passa o período de 9 de setembro a 9 de outubro, você terá como retorno o
período de 9 de setembro a 12 de setembro. Entendeu? Este é o período que faz parte dos dois
passados como parâmetro!
01. public void calcular() {
02.
Date data1 = Data.formatar("12/08/2010", "dd/MM/yyyy");
03.
Date data2 = Data.formatar("12/09/2010", "dd/MM/yyyy");
04.
Date data3 = Data.formatar("09/09/2010", "dd/MM/yyyy");
05.
Date data4 = Data.formatar("09/10/2010", "dd/MM/yyyy");
06.
07.
Date[] periodo1 = {data1, data2};
08.
Date[] periodo2 = {data3, data4};
09.
10.
CalculoData.calcularIntersecao(periodo1, periodo2);
11. }
Verificar a interseção entre dois períodos.
8.10.
Dicionários
Quer ter o significado de palavras em seu sistema? Você pode usar o utilitário Michaelis para isto.
Como o nome já diz, ele usará o sítio da Michaelis para obter este significado. Lembre-se! Internet é
necessária mais uma vez.
1. public void obter() {
2. // O significado da palavra bonito!
3. String resultado = Michaelis.obterSignificado("bonito", false);
4. }
Utilitário de Dicionários.
O parâmetro false indica se você quer o resultado vindo com a formatação HTML do próprio sítio da
Michaelis, ou se prefere que venha apenas o texto.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 25
Tutorial do Alfred
8.11.
Dígito Verificador
Dígitos verificadores são usados em muitos lugares. Sua conta corrente no banco tem um dígito
verificador. Seu CPF também tem. Um CNPJ tem. E você sabia que existem regras de formação destes
dígitos? Os mais comuns são o Módulo 10 e o Módulo 11.
1. public void obter() {
2. String resultado = Modulo10.obterDV("1111111");
3. String resultado = Modulo11.obterDV("111111");
4. }
Obter o dígito verificador.
Você tem o utilitário Modulo10 e Modulo11. Ambos podem se comportar de forma diferente a
depender dos parâmetros. O exemplo acima é o modo mais fácil. Mas você pode querer complicar um
pouco mais. Por exemplo, no Banco do Brasil, tem agências que são do tipo 4881-X. Veja, o dígito
verificar virou um “X”. É porque quando o valor do dígito é “10”, então é transformado para X.
Existem outras opções e para descobri-las, sugerimos ler nosso JavaDoc!
1. public void obter() {
2. String resultado = Modulo10.obterDV("1111111", true);
3. String resultado = Modulo11.obterDV("111111");
4. }
Obter o dígito verificador trocando 10 por “X”.
8.12.
Física
Gosta de Física? Sabe exatamente todas aquelas fórmulas de cinemática? Não?! Nem eu! :P Mas
resolvemos criar um utilitário de Física no Alfred. E o que ele tem? No momento, apenas um utilitário
com cálculos comuns em Cinemática. O nosso objetivo é termos muitos outros utilitários em Física,
mas eles vão surgir aos poucos. Aliás, quer ajudar a criá-los? Aceitamos ajuda!
Vamos a alguns exemplos de utilização, pois são muitos cálculos que disponibilizamos e ficaria muito
extenso colocar aqui. Ao invés disto, sugerimos fortemente que você acesse nosso JavaDoc para saber
exatamente quais e como usar cada cálculo de Cinemática. Por exemplo, temos cálculos de
Movimento Circular Uniforme, Movimento Circular Uniforme e Variado, Movimento Parabólico,
Movimento Retílino Uniforme e Movimento Retilínio Uniforme e Variado. Muitos, não?
Cada um citado acima refrere-se a um pacote. Por exemplo, para os cálculos de Movimento Circular
Uniforme,
temos
um
pacote
org.alfredlibrary.utilitarios.fisica.cinematica.movimentocircularuniforme. E lá você terá as classes
responsáveis pelos cálculos, como: AceleracaoCentripeta, Frequencia, Periodo, Raio, Velocidade
Angular e VelocidadeEscalar. Cada classe contém métodos responsáveis em fazer o cálculo. Vamos a
alguns exemplos.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 26
Tutorial do Alfred
1. public void obter() {
2. Double resultado = AceleracaoCentripeta.calcular(2, 5);
3. Double resultado = Periodo.calcular(2,5);
4. }
Cálculos de Cinemática.
No primeiro, calculamos a aceleração centrípeda. Passamos como primeiro valor o raio e no segundo
valor, a velocidade escalar. No segundo exemplo calculamos o período, passando como parâmetros a
velocidade escalar e o raio, respectivamente.
8.13.
Horóscopos
Ah, você é um cara supersticioso e gosta de ver seu horóscopo todas as manhãs. Está interessado,
inclusive, em fazer uma aplicação que obtém seu horóscopo e mostra em seu blog. Mas, como fazer
isso? O Alfred pode dar uma forcinha também. Disponibilizamos dois utilitários para isto. Um usa o
sítio Estrela Guia para catar estas informações. O outro usa o Portal Terra. Vejam os exemplos.
1. public void obter() {
2. // Você é de Aquário? Então, veja seu signo assim!
3. String resultado = PortalTerra.obter(Signo.AQUARIO);
4. // Vamos ver o que o sítio Estrela Guia diz sobre seu signo também.
5. resultado = EstrelaGuia.obter(Signo.AQUARIO);
6. }
Obter signos.
8.14.
Idiomas
E o que você acha de um utilitário para obter a tradução de palavras de um idioma para outro? Caso
tenha gostado da ideia, saiba que o Alfred faz isto usando renomados sítios na internet. O primeiro é
o Babelfish. O segundo o famoso Google Translate. O uso é bastante simples, nos dois casos.
1. public void obter() {
2. // Primeiro pelo Google Translate.
3. String resultado = GoogleTranslate.traduzir("o melhor", Idioma.PORTUGUESE, Idioma.ENGLISH);
4. // Agora pelo Babelfish.
5. resultado = Babelfish.traduzir(Babelfish.INGLES_PARA_PORTUGUES, "love");
6. }
Tradução usando Google Translate e Babelfish.
Mas você não quer realmente saber a tradução, mas queria ouvir a pronúncia da palavra em inglês?
Bom, então você está com sorte. O Alfred também tem este utilitário e se chama Pronuncia que
obtém um arquivo no formato wave (.wav) através do sítio da Merrian Webster e disponibiliza para
você fazer o que quiser com ele: guardar em disco, ouvir, guardar em banco de dados, etc.
1. public void obter() {
2. // Primeiro, vamos ouvir direto!
3. Pronuncia.ouvirPronuncia(Pronuncia.INGLES, "love");
4. // Agora vamos obtê-la!
5. InputStream is = Pronuncia.obterPronuncia(Pronuncia.INGLES, "love");
6. }
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 27
Tutorial do Alfred
Obter e ouvir a pronúncia de uma palavra em Inglês.
Por enquanto, temos apenas as pronúncias de palavras em inglês!
8.15.
Inscrição Estadual
Vamos supor que você tem um número de inscrição estadual e queira saber se o dígito verificador
dele está correto. Ou até mesmo gerar uma inscrição estadual aleatória!
1. public void obter() {
2. InscricaoEstadual.gerarDigitoVerificador(PadraoInscricaoEstadual.ACRE, "01407423");
3. InscricaoEstadual.gerar(PadraoInscricaoEstadual.ACRE);
4. }
Gerar Dígito verificador.
8.16.
Loterias
Ah, entendi. Você é um cara que acredita muito na sorte. Sempre faz seus jogos nas loterias da Caixa
Econômica Federal. Está pensando, inclusive, em fazer um acompanhamento dos sorteios, com
estatísticas de números sorteados e coisas do tipo, não é? Mas, e como obter estes números? Você
pode ir no sítio da Caixa Econômica Federal e obter cada concurso. Ou fazer um aplicativo que lê os
dados e interpreta pra você. Ou deixar que o Alfred faça isso para você.
01. public void obterLoterias() {
02. // Resultado do concurso número 1 da megasena.
03.
String[] resultado = Loterias.obterResultadoMegaSena("1");
04.
05. // Resultado do concurso número 1 da lotofácil.
06. resultado = Loterias.obterResultadoLotofacil("1");
07.
08. // Resultado do concurso número 1 da dupla sena.
09. resultado = Loterias.obterResultadoDuplaSena("1");
10.
11. // Resultado do concurso número 1 da lotomania.
12. resultado = Loterias.obterResultadoLotomania("1");
13.
14. // Resultado do concurso número 1 da quina.
15. resultado = Loterias.obterResultadoQuina("1");
16. }
Obter resultado de loterias.
Você tem disponível no Alfred um utilitário que lhe dará os números sorteados para o concurso que
você quiser da Megasena, Lotofácil, Lotomania, Quina e Dupla Sena.
8.17.
Matemática
Você cursou Ciências da Computação? Então, certamente, teve uma matéria chamada Álgebra de
Lenhar, ops, digo: Álgebra Linear. Lembra daqueles cálculos triloucos com Matrizes? Transposta,
Matriz Identidade, Multiplicação de Matrizes, Determinantes...
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 28
Tutorial do Alfred
01. public void estudar() {
02. // Quer a transposta?
03. Double[][] matriz = new Double[][] { {1d,1d}, {2d,2d}, {3d,3d} };
04. Double[][] transposta = Matriz.transpor(matriz);
05.
06. // E o determinante?
07. Double d = Matriz.determinante(new Double[][] {{1d,1d,1d}, {0d,4d,3d}, {2d,5d,1d}});
08.
09. // E subtrair?
10. Double[][] sub = Matriz.subtrair(new Double[][] {{1d,1d}, {1d,1d}}, new Double[][] {{1d,1d},{1d,1d}});
11. }
Utilitário de Matriz.
Bom, o Alfred tenta facilitar um pouco sua vida caso necessite trabalhar com Matrizes. No utilitário
de Matrizes já damos para você as seguintes opções:
•
Calcular o Determinante de uma Matriz;
•
Transposta de uma Matriz;
•
Somar e subtrair duas matrizes;
•
Multiplicar duas matrizes ou uma matriz por um número real;
•
Obter a oposta de uma Matriz;
•
Verificar se uma matriz passada por parâmetro é:
◦ Diagonal;
◦ Identidade;
◦ Igual a outra matriz;
◦ Quadrada;
◦ Simétrica.
Também podemos fazer cálculos com Equações de Segundo Grau no Alfred. Elas são fáceis, é
verdade. Mas podem ser mais fáceis ainda com o Alfred. Veja aí embaixo um exemplo. Lembre-se que
nestes cálculos, é preciso verificar se a equação é realmente de segundo grau ou se tem raízes
irracionais. E este utilitário já checa isto tudo pra você.
01. public void estudar() {
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 29
Tutorial do Alfred
02. EquacaoSegundoGrau.resolverRacional (3, 4, 5);
03. }
Cálculo de Equações de Segundo Grau.
8.18.
Mídia
Sabe o utilitário de Pronúncia, no pacote de Idiomas? Você obtém a pronúncia em um arquivo no
formate wave e gostaria de executá-lo, para ouvir no seu próprio computador. E qual o código para
fazer isto mesmo? Bom, o Alfred ajuda com o utilitário de Áudio, que lhe dá um único método
chamado executar.
1. public void escutar() {
2. // Vamos escutar uma música?
3. String userDir = System.getProperty("user.dir");
4. InputStream is = new FileInputStream(userDir + "/src/test/java/org/alfredlibrary/test/utilitarios/midia/love.wav");
5. AudioInputStream ais = AudioSystem.getAudioInputStream(is);
6. Audio.executar(ais);
7. }
Utilitário de Mídia.
8.19.
Música
Quer ter letras de músicas em sua aplicação? Ou apenas obtê-las para guardar em banco de dados?
Então, use o Alfred para obter as letras de suas músicas favoritas através do sítio Vagalume. A
utilização é bem simples.
1. public void obter() {
2. // Vamos obter a letra de uma música de Raulzito!
3. String letra = Letras.obter("Raul Seixas", "Ouro de Tolo");
4. }
Utilitário de Letras de Músicas.
8.20.
Net
Aqui temos um único aplicativo. Mas bem útil. Aliás, este utilitário é usado por quase todo o Alfred
internamente. Estou falando o utilitário WorldWideWeb que disponibiliza métodos para você obter o
conteúdo de sítios na internet.
1. public void obter() {
2. String conteudo = WorldWideWeb.obterConteudoSite("http://alfredlibrary.googlecode.com/", "UTF-8");
3. }
Obter conteúdo de sites pelo utilitário WorldWideWeb.
Observe o segundo parâmetro, ele diz qual a codificação usada para obter o conteúdo do sítio. Isto é
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 30
Tutorial do Alfred
importante, principalmente para sítios que contém palavras acentuadas diretamente no código fonte.
8.21.
PIS/PASEP
Já aprendemos a formatar, mas e se quisermos gerar PIS/PASEP aleatoriamente? Ou então gerar o
dígito verificador? Podemos fazer isto usando o utilitário de PIS/PASEP.
1. public void gerar() {
2. String moeda1 = PISPASEP.gerarDigitoVerificador("1111111111");
3. String moeda2 = PISPASEP.gerar();
4. }
Exemplo do utilitário de PIS/PASEP.
8.22.
Texto
Você está precisando ajustar algumas coisas em um texto? Por exemplo, precisa capitalizar as iniciais
do texto? Ou gostaria de saber quantas palavras o texto possui? Então, use o utilitário de Texto do
Alfred.
1. public void mudar() {
2. String conteudo = Texto.capitalizarIniciais("marlon silva carvalho");
3. }
Capitalizar Iniciais de um Texto.
O resultado da expressão acima será Marlon Silva Carvalho. Agora você quer tirar os caracteres
acentuados de seu texto. Digamos que você não gosta de acentos no português! :)
1. public void mudar() {
2. String conteudo = Texto.trocarCaracteresAcentuados("eu não curto acentuação.");
3. }
Utilitário de Texto. Tirar acentos.
Como você pode esperar, o resultado será “eu nao curto acentuacao”. Mas você gosta de acentuação
e só queria era tirar todas as letras e manter apenas os números de um texto.
1. public void mudar() {
2. String conteudo = Texto.manterNumeros("m1a2r3l4o5n6");
3. }
Manter apenas números no texto.
Temos como resultado, então: “123456”. Caso você precisa incluir uma determinada quantidade de
um caracter no início ou no final de uma String, então use o “completar”.
1. public void mudar() {
2. String conteudo = Texto.completar("poxa", 'a', 8, true);
3. }
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 31
Tutorial do Alfred
Acrescentar um caracter ao final do texto.
O resultado da expressão acima é “poxaaaaa”. Quando informamos o número 8, queremos dizer que
a String “poxa”, deve ser acrescentada do caracter 'a' até alcançar o tamanho 8. Agora, vamos supor
que você odeia frases pontuadas. Estranho, mas possível. Então, vamos remover todos os pontos de
uma determinada frase assim:
1. public void mudar() {
2. String conteudo = Texto.removerPontuacao("Uma frase! E tem pontos. E como, não é? Veja só: eles vão sumir.");
3. }
Remover todas as pontuações de um texto.
Sua frase vai ficar linda: “Uma frase E tem pontos E como não é Veja só eles vão sumir”. Você quer
comprar dois textos para verem se são iguais? Ah! Aí não, o .equals() já faz isso, não é? É, nós
sabemos. Mas vamos supor que você queira comparar seguindo algumas regras, como: ignorar
maiúsculas e minúsculas, ignorar os espaços em branco, ignorar a acentuação e ignorar pontuação!
1. public void mudar() {
2. String conteudo = Texto.comparar("Texto1.Igual? Será? Nâo sei!","Texto1.Igual? Será? Nâo sei!", true, true, true, true);
3. }
Comparar duas Strings.
Vamos lá. O terceiro parâmetro vai dizer se é case sensitive, o quarto quer dizer se deve ignorar
espaços, o quinto se ignora acentuação e o último, se ignora pontuação. No nosso exemplo, está
ignorando tudo.
8.23.
HTML
Você tem um texto que contém tags HTML? Então, este utilitário é para você. Com ele você pode
fazer algumas brincadeiras legais. Por exemplo, quer encontrar todos os links?
1. public void encontrar() {
2. String conteudo = HTML.acharLinks("<a href='http://www.alfredlibrary.org/'>www.alfredlibrary.org</a>");
3. }
Utilitário de HTML. Encontrar Links.
E
o
resultado
será
um
Array
de
Strings
com
uma
posição,
contendo
o
link
http://www.alfredlibrary.org/. Observe, o padrão para encontrar links espera que tenha o http:// na
frente. Agora que você obteve os links, quer é remover todas as tags do texto, mantendo apenas o
texto.
1. public void remover() {
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 32
Tutorial do Alfred
2. String conteudo = HTML.removerTags("<a href='http://www.alfredlibrary.org/'>www.alfredlibrary.org</a>");
3. }
Utilitário de HTML. Remover links.
Agora teremos apenas uma String contendo o texto www.alfredlibrary.org. Temos outros métodos
neste utilitário, dá uma olhadinha em nosso JavaDoc!
8.24.
Trânsito
Você conhece todas as infrações de trânsito que existem no Brasil? Não? Nem eu :). Mas se você tem
intenção de criar uma aplicação baseada nestas informações? Então, o Alfred pode lhe ajudar
bastante. Através do utilitário Infrações, você pode obter uma coleção de objetos Infração, que
contém as seguintes informações:
•
Código da Infração;
•
Descrição;
•
Amparo Legal;
•
Quem é o infrator (Condutor, Dono do Veículo, etc);
•
Pontos descontados na carteira;
•
Valor da infração;
•
Gravidade da Infração.
1. public void obterInfracoes() {
2.
Collection<Infracao> infracoes = Infracoes.obterInfracoes();
3. }
Obter lista de infrações.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 33
Tutorial do Alfred
9. Validadores
O Alfred disponibiliza validadores que lhe auxiliam na validação simples de dados de entrada de seus
usuários. Os validadores disponíveis são: CEP, CNPJ, CPF, E-mail e Números. A validação, em todos os
casos, é bastante simples. Você encontra os validadores no pacote org.alfredlibrary.validadores.
9.1. CNPJ
Quer saber se um CNPJ está correto? Também existe um validador para isto. Mas, atenção, ele vai
apenas dizer se o CNPJ é válido, mas não se realmente existe uma empresa com este CNPJ.
1. public void validar() {
2. CNPJ.isValido("00000000191");
3. }
Validação de CNPJ.
9.2. CPF
Seguindo na mesma linha do validador de CNPJ, temos o validador de CPF. O uso é similar. Veja
abaixo.
1. public void validar() {
2. CPF.isValido("11111111111");
3. }
Validação de CPF.
9.3. Diversos
Tá bom. Você não gostou dos validadores que aí estão e gostaria de validar só usando sua expressão
regular. Ainda assim podemos dar uma forcinha. Você pode passar sua String contendo sua expressão
regular, ou usar algumas já fornecidas.
1. public void validar() {
2. Diversos.isValido("12/12/2010", Diversos.DATASIMPLES);
3. Diversos.isValido("2", Diversos.DECIMAL);
4. Diversos.isValido("imagem.jpg", Diversos.IMAGEM);
5. Diversos.isValido("10:12", Diversos.HORA);
6. Diversos.isValido("40.290-280", "\d{2}\.\d{3}-\d{3}");
7. }
Validação usando Expressões Regulares.
9.4. Inscrição Estadual
Agora vamos validar uma inscrição estadual. Mas, lembre-se, cada estado tem seu formato específico
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 34
Tutorial do Alfred
de inscrição estadual. Mas o Alfred facilita pra você!
1. public void validar() {
2. InscricaoEstadual.isValido(PadraoInscricaoEstadual.ACRE, "01.40.7423-0")
3. }
Validar inscrição estadual.
9.5. E-mail
O usuário digitou um e-mail e você quer saber se pelo menos o e-mail está formatado corretamente?
Não dá para dizer que o e-mail existe de fato, mas já dá uma força saber que é válido!
1. public void validar() {
2. Email.isValido("[email protected]");
3. }
Validação de E-mail.
9.6. Números
Aqui temos várias validações de números. Podemos verificar se um número é, de fato, um Integer,
Long, Double, Float ou Short. Vejamos um exemplo.
1. public void validar() {
2. Numero.isShort("2");
3. Numero.isDouble("2");
4. Numero.isFloat("2");
5. Numero.isInteger("2");
6. Numero.isLong("2");
7. }
Validação de Números.
9.7. PIS/PASEP
Ok! Já formatamos e já geramos PIS/PASEP. Só faltou agora validar, certo? E, obviamente, o Alfred
também ajuda aqui!
1. public void validar() {
2. PISPASEP.isValido("11111111114");
3. }
Validar PIS/PASEP.
Biblioteca Alfred
http://www.alfredlibrary.org/
Página 35
Download

Biblioteca Alfred