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.
domingo, 13 de novembro de 2011
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();
}
domingo, 2 de maio de 2010
Open Source Enterprise Content Management System (CMS) by Alfresco
Link para um ECM free ("Enterprise Content Management")
Open Source Enterprise Content Management System (CMS) by Alfresco
Open Source Enterprise Content Management System (CMS) by Alfresco
Assinar:
Postagens (Atom)