Artigo Recente
Última Postagem

quarta-feira, 9 de maio de 2012

O método Equals

Ola pessoal!

Conforme solicitado hoje vou falar um pouco sobre o método equals do java.

Bom vamos ao que interessa.

O nome do método já diz tudo equals do inglês "igual", significa que serve para igualar ou comparar objetos, da especificação do java "Indica se algum outro objeto é "igual a" um presente." ou seja comparação entre objetos em memoria.

Existe varios pontos que devemos elencar:


O método equals implementa uma relação de equivalência em referências a objetos não nulos:
  • É reflexivo : para qualquer valor não nulo de referência x , deve retornar  true .
    • Exemplos:  x.equals(x) --> true
  • É simétrico : para qualquer valor não nulo de referência x e y ,  deve retornar true .
    • Exemplo: 
      • x.equals(y) --> true
      • y.equals(x)  --> true
  • É transitivo : para quaisquer valores não nulos de referência x , y , e z.
    • Exemplo:
      • se x.equals(y) --> true
      • e y.equals(z) --> true
      • então x.equals(z) --> true
  • É consistente : para qualquer valor não nulo de referência x e y , várias invocações de x.equals(y) consistentemente retornar true ou retornar sempre false, desde que nenhuma informação usada em equals comparações sobre os objetos seja modificado.
  • Para qualquer valor não nulo de referência x , retornar false .
    • Exemplo:
      •  x.equals(null) ou   x.equals(objeto nulo) --> false
O método equals para a classe Object implementa a mais exigente possível relação de equivalência em objetos, ou seja, para qualquer valor não nulo de referência x e y , este método retorna true se e somente se x e y se referem ao mesmo objeto ( x == y tem o valor true ).

Obs: note-se que geralmente é necessário sobrescrever também o método hashCode sempre que o método equals é sobrescrito, de modo a manter o contrato geral para o método hashCode , que afirma que os objectos iguais deve ter códigos de hash iguais, assunto para um proximo post.

Exemplos de codigos:

1
2
3
4
5
6
7
8
9
10
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (!super.equals(obj))
        return false;
    if (getClass() != obj.getClass())
        return false;
 
    ...
}





segunda-feira, 20 de fevereiro de 2012

Classe Para Gerar Chamar o Relatorio do IReport

Pessoal segue uma classe fornecida pelo Marcos Vinícius para chamar o relatorio gerado pelo IReport


  1. /*
  2. * @(#)Relatorio.java 1.0 28/04/2006
  3. *
  4. * Copyright 2006 Marcos Vinícius Soares. Todos os direitos reservados.
  5. * mvsoares@estadao.com.br
  6. *
  7. */
  8. import java.sql.*;
  9. import java.net.URL;
  10. import java.util.HashMap;
  11. import net.sf.jasperreports.engine.util.JRLoader;
  12. import net.sf.jasperreports.view.JasperViewer;
  13. import net.sf.jasperreports.engine.*;
  14. import conexao.Conexao;
  15. /**
  16. * Relatorio.java
  17. *
  18. *

    A classe Relatorio deve ser utilizada para emissão de relatórios. Após a

  19. * criação de algum relatório é possível exibí-lo na tela, exportá-lo para um
  20. * arquivo pdf/html ou enviá-lo direto para impressão.

  21. *
  22. *

    A classe manipula relatórios desenvolvidos utilizando-se a ferramenta

  23. * iReport e utiliza a ferramenta JasperReports para emissão dos relatórios

  24. *
  25. * @author Marcos Vinícius Soares
  26. */
  27. public class Relatorio {
  28. /** Representa o relatório gerado. */
  29. private JasperPrint jasperPrint_;
  30. /**
  31. * Cria um novo Relatorio.
  32. *
  33. * @param conn Conexão com o banco de dados.
  34. * @param parameters Parâmetros a serem exibidos no relatório.
  35. * @param localRelatorio Localização do relatório.
  36. * @throws JRException Caso o relatório não seja encontrado ou haja
  37. * algum problema com ele, uma exceção é gerada.
  38. */
  39. public Relatorio(Conexao conn, HashMap parameters, URL localRelatorio) throws JRException{
  40. try {
  41. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  42. // Ou seja, o arquivo .jasper
  43. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
  44. // JasperPrint representa o relatório gerado.
  45. // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
  46. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, conn.getConnection());
  47. } catch (JRException e) { throw e; }
  48. }
  49. /**
  50. * Cria um novo Relatorio.
  51. *
  52. * @param conn Conexão com o banco de dados.
  53. * @param parameters Parâmetros a serem exibidos no relatório.
  54. * @param localRelatorio Localização do relatório.
  55. * @throws JRException Caso o relatório não seja encontrado ou haja
  56. * algum problema com ele, uma exceção é gerada.
  57. */
  58. public Relatorio(Conexao conn, HashMap parameters, String localRelatorio) throws JRException{
  59. try {
  60. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  61. // Ou seja, o arquivo .jasper
  62. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
  63. // JasperPrint representa o relatório gerado.
  64. // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
  65. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, conn.getConnection());
  66. } catch (JRException e) { throw e; }
  67. }
  68. /**
  69. * Cria um novo Relatorio.
  70. *
  71. * @param conn Conexão com o banco de dados.
  72. * @param sql Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
  73. * @param parameters Parâmetros a serem exibidos no relatório.
  74. * @param localRelatorio Localização do relatório.
  75. * @throws JRException Caso o relatório não seja encontrado ou haja
  76. * algum problema com ele, uma exceção é gerada.
  77. * @throws SQLException Caso exista alguma divergência ou problema com
  78. * a Expressão SQL passada como parâmetro, uma exceção é gerada.
  79. */
  80. public Relatorio(Conexao conn, String sql,
  81. HashMap parameters, URL localRelatorio) throws SQLException, JRException {
  82. try {
  83. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  84. // Ou seja, o arquivo .jasper
  85. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
  86. // Resultado da consulta
  87. ResultSet rs = conn.executeQuery(sql);
  88. // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
  89. // como parametro para preencher o relatório criado.
  90. // Ele armazena o dados do ResultSet
  91. JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
  92. // JasperPrint representa o relatório gerado.
  93. // É criado um JasperPrint a partir de um JasperReport, contendo o
  94. // relatório preenchido.
  95. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);
  96. rs.close();
  97. }
  98. catch (SQLException e) { throw e; }
  99. catch (JRException e) { throw e; }
  100. }
  101. /**
  102. * Cria um novo Relatorio.
  103. *
  104. * @param conn Conexão com o banco de dados.
  105. * @param sql Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
  106. * @param parameters Parâmetros a serem exibidos no relatório.
  107. * @param localRelatorio Localização do relatório.
  108. * @throws JRException Caso o relatório não seja encontrado ou haja
  109. * algum problema com ele, uma exceção é gerada.
  110. * @throws SQLException Caso exista alguma divergência ou problema com
  111. * a Expressão SQL passada como parâmetro, uma exceção é gerada.
  112. */
  113. public Relatorio(Conexao conn, String sql,
  114. HashMap parameters, String localRelatorio) throws SQLException, JRException {
  115. try {
  116. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  117. // Ou seja, o arquivo .jasper
  118. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
  119. // Resultado da consulta
  120. ResultSet rs = conn.executeQuery(sql);
  121. // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
  122. // como parametro para preencher o relatório criado.
  123. // Ele armazena o dados do ResultSet
  124. JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
  125. // JasperPrint representa o relatório gerado.
  126. // É criado um JasperPrint a partir de um JasperReport, contendo o
  127. // relatório preenchido.
  128. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);
  129. rs.close();
  130. }
  131. catch (SQLException e) { throw e; }
  132. catch (JRException e) { throw e; }
  133. }
  134. /**
  135. * Cria um novo Relatorio.
  136. *
  137. * @param parameters Parâmetros a serem exibidos no relatório.
  138. * @param localRelatorio Localização do relatório.
  139. * @throws JRException Caso o relatório não seja encontrado ou haja
  140. * algum problema com ele, uma exceção é gerada.
  141. */
  142. public Relatorio(HashMap parameters, URL localRelatorio) throws JRException {
  143. try {
  144. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  145. // Ou seja, o arquivo .jasper
  146. JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);
  147. // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
  148. // como parametro para preencher o relatório criado.
  149. // Ele armazena o dados do ResultSet, que, neste caso, é vazio
  150. JREmptyDataSource jrEDS = new JREmptyDataSource();
  151. // Jasper Print representa o relatório gerado.
  152. // É criado um JasperPrint a partir de um JasperReport, contendo o
  153. // relatório preenchido.
  154. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);
  155. } catch (JRException e) { throw e; }
  156. }
  157. /**
  158. * Cria um novo Relatorio
  159. *
  160. * @param parameters Parâmetros a serem exibidos no relatório.
  161. * @param localRelatorio Localização do relatório.
  162. * @throws JRException Caso o relatório não seja encontrado ou haja
  163. * algum problema com ele, uma exceção é gerada.
  164. */
  165. public Relatorio(HashMap parameters, String localRelatorio) throws JRException {
  166. try {
  167. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
  168. // Ou seja, o arquivo .jasper
  169. JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);
  170. // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
  171. // como parametro para preencher o relatório criado.
  172. // Ele armazena o dados do ResultSet, que, neste caso, é vazio
  173. JREmptyDataSource jrEDS = new JREmptyDataSource();
  174. // Jasper Print representa o relatório gerado.
  175. // É criado um JasperPrint a partir de um JasperReport, contendo o
  176. // relatório preenchido.
  177. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);
  178. } catch (JRException e) { throw e; }
  179. }
  180. /**
  181. * Exibe o relatório na tela.
  182. */
  183. public void exibirRelatorio() {
  184. // emite o relatório na tela
  185. // false indica que a aplicação não será finalizada caso o relatório seja fechado
  186. JasperViewer.viewReport(this.jasperPrint_, false);
  187. }
  188. /**
  189. * Grava o relatório em um arquivo de formato pdf.
  190. *
  191. * @param caminhoDestino Caminho onde o arquivo será gravado.
  192. */
  193. public void exportaParaPdf(String caminhoDestino) throws JRException {
  194. try {
  195. // Gera o arquivo PDF
  196. JasperExportManager.exportReportToPdfFile(this.jasperPrint_, caminhoDestino);
  197. } catch (JRException e) { throw e; }
  198. }
  199. /**
  200. * Grava o relatório em um arquivo de formato html.
  201. *
  202. * @param caminhoDestino Caminho onde o arquivo será gravado.
  203. */
  204. public void exportaParaHtml(String caminhoDestino) throws JRException {
  205. try {
  206. // Gera o arquivo PDF
  207. JasperExportManager.exportReportToHtmlFile(this.jasperPrint_, caminhoDestino);
  208. } catch (JRException e) { throw e; }
  209. }
  210. /**
  211. * Envia o relatório para impressão, exibindo uma caixa de dialogo de impressão ou não.
  212. *
  213. * @param exibeCaixaDialogo Boolean indicando se será exibida uma caixa de diálogo ou não.
  214. */
  215. public void imprimir(boolean exibeCaixaDialogo) throws JRException {
  216. try {
  217. // Imprime o relatório
  218. // o segundo parâmetro indica se existirá uma caixa de dialogo antes ou nao
  219. JasperPrintManager.printReport(this.jasperPrint_, exibeCaixaDialogo);
  220. } catch (JRException e) { throw e; }
  221. }
  222. }


Primeiro vc deve criar um relatório atraves de um dos metodos disponiveis, depois basta chamar algum metodo....

Esse objeto conexao representa uma conexao com o banco de dados, e o método getConn retorna o objeto Connection associado a ele. No caso, vc deve implementar o seu, pois não sei qual bd vc está utilizando.


Pesquisar na Web

Popular Posts

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.


David e Débora. Tecnologia do Blogger.