Caelum Stella – o cinto de utilidades para o desenvolvedor brasileiro

Durante o Falando em Java 2008 anunciamos o lançamento do novo Caelum Stella. Em 2013 saiu a versão 2.0!

O projeto vem para auxiliar os desenvolvedores brasileiros, suprindo algumas das necessidades comumente encontradas em aplicações desenvolvidas aqui no Brasil. Atualmente, o Caelum Stella fornece uma biblioteca de validadores, formatadores e conversores para documentos brasileiros, tais como CPF, CNPJ e PIS/PASEP.

String cpf = "867.554.707-24";
CPFValidator vld = new CPFValidator();
for(ValidationMessage error : vld.invalidMessagesFor(cpf)) {
  System.out.println(error.getMessage());
}

Há uma alternativa que lança uma exceção caso ocorra algum problema de validação:

new CPFValidator().assertValid("867.554.707-24");

O Stella também inclui módulos extras, como o de geração de boletos bancários, adaptadores para JSF, VRaptor, JBoss Seam e Hibernate Validator. Veja um exemplo de validação para CPFs usando o Caelum Stella junto ao Hibernate Validator:

@Entity
public class Modelo {
  @CPF
  private String cpf;

  public String getCpf() {
    return cpf;
  }
}

O módulo Stella Faces conta com alguns validadores compatíveis com a especificação JSF, que você pode adicionar aos seus componentes:

<h:inputText id="cpf" value="#{usuarioBean.cpf}">
  <stella:validateCPF/>
</h:inputText>

O Stella Boleto procura fornecer um idioma mais fluente para a geração de boletos, através do encadeamento de métodos, gerando PDFs, PNGs e em breve TXT, RTF e HTML:

Emissor rodrigo = Emissor.novoEmissor().comCedente("Rodrigo Turini")
	.comAgencia(1234).comCarteira(157).comContaCorrente(123456)
	.comNossoNumero(123456789l).comDigitoNossoNumero("6");

Sacado paulo = Sacado.novoSacado().comNome("Paulo Silveira");

Boleto boleto = Boleto.novoBoleto().comDatas(datas).comEmissor(rodrigo)
	.comBanco(banco).comSacado(paulo).comValorBoleto(2680.16)
	.comNumeroDoDocumento("123456");

new GeradorDeBoleto(boleto).geraPDF("arquivo.pdf");

Estão ainda previstas funcionalidades como JSP taglibs, rotinas JavaScript para máscaras, validação e suporte a formulários, seleção de cidades dependente da seleção de estados, suporte a mais documentos, geração da nota fiscal eletrônica, webservices para busca de endereços através de CEP, entre muitas outras.

Todas estas funcionalidades estão divididas em diversos módulos dentro do Stella. Atualmente são quatro: Stella Core, Stella Bean Validation (para usar também com Hibernate e JPA), Stella Faces e Stella Boleto. Cada um com um propósito diferente, mas todos relacionados aos problemas do dia a dia recorrentes no mercado brasileiro.

Como de costume em qualquer projeto open-source, o código fonte está disponível em um repositório no github. Para tirar as suas dúvidas, sugerir funcionalidades, apontar bugs e discutir sobre o projeto, não deixe de postá-la no GUJ.

Visite, use, comente e participe do desenvolvimento do projeto!

22 Comentários

  1. Tiago Albineli Motta 21/05/2008 at 18:10 #

    Muito bom!!!

  2. Rafael Carneiro 21/05/2008 at 22:43 #

    Excelente iniciativa, os desenvolvedores brasileiros precisam de algo assim!

  3. Marcos Silva Pereira 22/05/2008 at 06:02 #

    Massa. Já foi para os favoritos.

    Fabio, em qual repositorio Maven o Stella está? Não encontrei nos que uso (http://repo1.maven.org/maven2/, http://www.ibiblio.org/maven/)?

    valeuz…

  4. Fabio Kung 22/05/2008 at 13:44 #

    Marcos, o pessoal do Maven demora um pouco para sincronizar o repositório deles.

    Se quiser por enquanto, pode usar nosso repositório próprio do maven:

    http://caelum-stella.sourceforge.net/maven
    ou
    http://caelum-stella.sourceforge.net/snapshots para o snapshot-repository.

  5. Guilherme Chapiewski 24/05/2008 at 16:23 #

    Pode parecer uma observação estúpida mas….. não é estranho a API ser em inglês, considerando-se que o domínio do sistema é em português?

    Já passei por esse “problema” e apesar de parecer uma coisa ridiculamente simples foi bastante complicado decidir fazer em inglês ou em portugês.

    Tenho certeza que vcs passaram por isso tb e com certeza discutiram um bocado. Por isso queria saber: quais foram os motivos que fizeram com que vcs decidissem por fazer desta forma “meio a meio”? 🙂

    [ ]s, gc

  6. Fabio Kung 24/05/2008 at 20:16 #

    Guilherme, conversamos mesmo bastante sobre isso. A conclusão foi que justamente os termos do domínio seriam em pt-BR. TODO o resto em inglês.

    Documentação e javadoc em português também.

  7. Paulo Silveira 24/05/2008 at 20:53 #

    Oi Guilherme!

    Realmente essa foi uma grande briga… nao daria pra evitar o ingles totalmente, como ficaria os getters?

    Mas de qualquer maneira, uma ou outra opcao iria deixar algumas pessoas descontentes…

  8. Guilherme Chapiewski 24/05/2008 at 21:10 #

    Eu sei que com certeza não dá pra agradar todo mundo 🙂 Na época que passei por isso também foi um problema, cada um tinha uma opinião.

    Mas “just for the record”, no fim das contas decidimos da mesma forma que vocês: domínio e documentação em português e o resto em inglês.

    [ ]s, gc

  9. Rafael Ponte 27/05/2008 at 17:31 #

    Esse componentes são muito utéis na maioria das aplicações, e já te-los prontos e desenvolvidos por vocês já é de absoluta ajuda! Principalmente os componentes para JSF!

    Parabéns!

  10. Tulio 08/06/2008 at 00:43 #

    Estou Iniciando em programação, comecei por Java , porém , ao compilar meu primeiro programa, aquele mesmo que tem na apostila, porém na hora de compilar da a seguinte mensagem, ” javac não é reconhecido como um comando interno…”
    Alguém pode me Ajudar???
    No netbens 6.0 também da erro !!!

  11. Taciano 20/08/2008 at 10:22 #

    Aqui não é um bom local para procurar ajuda, mas enfim, só uma orientaçãozinha. Provavelmente será por vc não ter adicionado o Java ao PATH.
    Te dei a direção, faça bom proveito do Google agora!

    E parabéns ao pessoal da Caelum pela biblioteca!
    É de realmente grande utilidade pra todo mundo que trabalha com Java em área comercial!
    Continuem melhorando ela!

  12. Thiago 13/07/2011 at 09:52 #

    Alguns links não estão abrindo a página como:

    http://stella.caelum.com.br/roadmap.html
    http://stella.caelum.com.br/nfe-index.html

    Tenho muito interesse no nfe e já tinha visto o site em funcionamento a muito tempo a traz

  13. Marcelo 06/01/2012 at 17:01 #

    Gostaria de saber como personalizar as mensagem de erro ao validar um CPF, utilizando JSF2

  14. Henrique 20/03/2012 at 22:32 #

    Os links do Stella ainda estão quebrados…

  15. Jose Aureliano 08/05/2012 at 10:39 #

    Galera responsavel pelo site, os links da NFE e o roadmap estao quebrados…

  16. paulino 11/05/2012 at 10:07 #

    Os links continuam quebrados, ninguém responsável pelo projeto se habilita ?

  17. Paulo Silveira 11/05/2012 at 17:18 #

    pessoal, atualizei os links. lembrando que o projeto nao esta mais no antigo sourceforge, e sim no github. documentacao:
    https://github.com/caelum/caelum-stella/wiki

  18. William Miranda 01/08/2013 at 10:48 #

    O CPF e o CNPJ nao validam se o cara digitou apenas um mesmo digito, o que deveria retornar false, está retornando true, corrigi no meu aqui, mas seria interessante corrigir
    Exemplo:
    public static void main(String[] args) {
    System.out.println(new CPFValidator(true).isEligible(“999.999.999-99”));
    System.out.println(new CPFValidator(true).isEligible(“444.444.444-44”));
    System.out.println(new CPFValidator(false).isEligible(“44444444444”));
    System.out.println(new CNPJValidator(true).isEligible(“44.444.444/4444-44”));
    System.out.println(new CNPJValidator(false).isEligible(“99999999999999”));
    }

  19. Rodrigo Nonato 17/01/2017 at 12:40 #

    Pessoal, bom dia. Tudo bem?

    Vocês já pensaram em integrar ao Stella alguma funcionalidade para gerar e imprimir os cupons fiscais / nota fiscal paulista? Caso achem bacana, tenho interesse em participar desta iniciativa.

Deixe uma resposta