segunda-feira, 14 de novembro de 2011
Uma rica biblioteca de java com ferramentas muito úteis, Op4J
Uma dica interessante.... Op4j. É uma biblioteca para facilitar a nossa vida. Principalmente em termos de conversões e criação de funções. Ótima.
domingo, 13 de novembro de 2011
Exemplo para serializar vários objetos da mesma classe.
A serialização é um recurso excelente para solução de armazenar objetos em disco. A gravação destes objetos poderá ser feita conforme o exemplo (download).
Para se gravar vários tipos de objetos diferentes e recuperá-los para a memória, faço diferente, normalmente utilizo uma lista genérica. Crio um objeto List, adiciono todos os objetos que implementam a interface serializable, gravo a lista em disco e a recupero depois, com todo o seu conteúdo, ou seja, persisto os objetos que estão na memória para o disco e depois os recupero.
Para se gravar vários tipos de objetos diferentes e recuperá-los para a memória, faço diferente, normalmente utilizo uma lista genérica. Crio um objeto List, adiciono todos os objetos que implementam a interface serializable, gravo a lista em disco e a recupero depois, com todo o seu conteúdo, ou seja, persisto os objetos que estão na memória para o disco e depois os recupero.
Exemplo de DAO, seguindo catálogo JEE, para bancos Relacionais e OO
No catálogo JEE da Oracle se propõe algumas soluções utilizando padrões. Em sala de aula, fizemos uma implementação de DAO como forma de aplicar e fornecer um modelo de implementação.
Sugiro este modelo para aplicar-se diretamente. Vale estudá-lo um pouquinho.(download ).
Para o DAO só banco relacional. (download ).
Sugiro este modelo para aplicar-se diretamente. Vale estudá-lo um pouquinho.(download ).
Para o DAO só banco relacional. (download ).
sábado, 12 de março de 2011
Criar arquivo de Log
Abaixo publico m exemplo de como fazer arquivo de log de forma simples:
Logger logger = Logger.getLogger("MyLog");
FileHandler fh;
try {
// This block configure the logger with handler and formatter
fh = new FileHandler("MyLogFile.log", true);
// fh = new FileHandler("MyLogFile.log", 10000, 5); 10000 bytes cada arquivo em 5 arquivos
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
// the following statement is used to log any messages
logger.log(Level.FINEST, "My first log");
//os níveis são:
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Logger logger = Logger.getLogger("MyLog");
FileHandler fh;
try {
// This block configure the logger with handler and formatter
fh = new FileHandler("MyLogFile.log", true);
// fh = new FileHandler("MyLogFile.log", 10000, 5); 10000 bytes cada arquivo em 5 arquivos
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
// the following statement is used to log any messages
logger.log(Level.FINEST, "My first log");
//os níveis são:
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
domingo, 27 de fevereiro de 2011
ClassLoader desmitificado.
Ótimo artigo sobre classloader. Recomendo a leitura.
http://marcosroriz.wordpress.com/2009/12/16/entendendo-classloader-java/
http://marcosroriz.wordpress.com/2009/12/16/entendendo-classloader-java/
domingo, 26 de setembro de 2010
Relacionamento n x n em JPA
Considere as tabelas abaixo:
create table eleitor (id integer, nome varchar(40), primary key (id));
create table enquete (id integer, perguntar varchar(40), primary key (id));
create table voto (id_eleitor integer, id_enquete integer, primary key(id_eleitor,id_enquete), FOREIGN KEY (id_eleitor) references eleitor(id), FOREIGN KEY (id_enquete) references enquete(id));
create table eleitor (id integer, nome varchar(40), primary key (id));
create table enquete (id integer, perguntar varchar(40), primary key (id));
create table voto (id_eleitor integer, id_enquete integer, primary key(id_eleitor,id_enquete), FOREIGN KEY (id_eleitor) references eleitor(id), FOREIGN KEY (id_enquete) references enquete(id));
O mapeamento em JPA seria o seguinte:
@Entity
@Table(name = "ELEITOR", catalog = "", schema = "APP")
@NamedQueries({
@NamedQuery(name = "Eleitor.findAll", query = "SELECT e FROM Eleitor e"),
@NamedQuery(name = "Eleitor.findById", query = "SELECT e FROM Eleitor e WHERE e.id = :id"),
@NamedQuery(name = "Eleitor.findByNome", query = "SELECT e FROM Eleitor e WHERE e.nome = :nome")})
public class Eleitor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "NOME", length = 40)
private String nome;
@JoinTable(name = "VOTO", joinColumns = {
@JoinColumn(name = "ID_ELEITOR", referencedColumnName = "ID", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "ID_ENQUETE", referencedColumnName = "ID", nullable = false)})
@ManyToMany
private Collection enqueteCollection;
public Eleitor() {
}
public Eleitor(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Collection getEnqueteCollection() {
return enqueteCollection;
}
public void setEnqueteCollection(Collection enqueteCollection) {
this.enqueteCollection = enqueteCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Eleitor)) {
return false;
}
Eleitor other = (Eleitor) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "modelo.Eleitor[id=" + id + "]";
}
}
@Entity
@Table(name = "ENQUETE", catalog = "", schema = "APP")
@NamedQueries({
@NamedQuery(name = "Enquete.findAll", query = "SELECT e FROM Enquete e"),
@NamedQuery(name = "Enquete.findById", query = "SELECT e FROM Enquete e WHERE e.id = :id"),
@NamedQuery(name = "Enquete.findByPerguntar", query = "SELECT e FROM Enquete e WHERE e.perguntar = :perguntar")})
public class Enquete implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "PERGUNTAR", length = 40)
private String perguntar;
@ManyToMany(mappedBy = "enqueteCollection")
private Collection eleitorCollection;
public Enquete() {
}
public Enquete(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPerguntar() {
return perguntar;
}
public void setPerguntar(String perguntar) {
this.perguntar = perguntar;
}
public Collection getEleitorCollection() {
return eleitorCollection;
}
public void setEleitorCollection(Collection eleitorCollection) {
this.eleitorCollection = eleitorCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Enquete)) {
return false;
}
Enquete other = (Enquete) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "modelo.Enquete[id=" + id + "]";
}
}
quinta-feira, 2 de setembro de 2010
Retorno de relatório Jasper no Faces
Para retornar um relatório ao usuário pela web:
Código do Botão
action="#{empresaBean.imprimir}" />
Código do método
public String imprimir() {
FacesContext context = getContext();
try {
HttpServletResponse response = (HttpServletResponse) context
.getExternalContext().getResponse();
ServletOutputStream responseStream;
responseStream = response.getOutputStream();
String pathJasper = ((ServletContext) context.getExternalContext()
.getContext()).getRealPath("/WEB-INF/relatorios/")
+ "/ArcheionEmpresas.jasper";
Relatorio relatorio = empresaBO.getRelatorio(
new HashMap(), pathJasper);
relatorio.exportarParaPdfStream(responseStream);
response.setContentType("application/pdf");
response.setHeader("Content-disposition",
"filename=\"RelacaoEmpresa.pdf\"");
responseStream.flush();
responseStream.close();
context.renderResponse();
context.responseComplete();
} catch (IOException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
} catch (AccessDeniedException aex) {
return Constants.ACCESS_DENIED;
}
return findAll();
}
Código do Botão
action="#{empresaBean.imprimir}" />
Código do método
public String imprimir() {
FacesContext context = getContext();
try {
HttpServletResponse response = (HttpServletResponse) context
.getExternalContext().getResponse();
ServletOutputStream responseStream;
responseStream = response.getOutputStream();
String pathJasper = ((ServletContext) context.getExternalContext()
.getContext()).getRealPath("/WEB-INF/relatorios/")
+ "/ArcheionEmpresas.jasper";
Relatorio relatorio = empresaBO.getRelatorio(
new HashMap
relatorio.exportarParaPdfStream(responseStream);
response.setContentType("application/pdf");
response.setHeader("Content-disposition",
"filename=\"RelacaoEmpresa.pdf\"");
responseStream.flush();
responseStream.close();
context.renderResponse();
context.responseComplete();
} catch (IOException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
} catch (AccessDeniedException aex) {
return Constants.ACCESS_DENIED;
}
return findAll();
}
Assinar:
Postagens (Atom)