Um DAO bem estranho:
public UsuarioTO getTO(ResultSet rs) throws Exception {
UsuarioTO to = new UsuarioTO();
int c;
for( int i = 0; i < rs.getMetaData().getColumnCount(); i++){
c = i + 1;
if( "CODIGO".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
to.setCodigo(rs.getInt(c));
}else if( "NOME".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
to.setNome(rs.getString(c));
}else if( "NUM_REGISTRO".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
to.setCodRegistro(rs.getInt(c));
}else if( "EMAIL".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
to.setEmail(rs.getString(c));
//... milhões de else ifs
}
}
return to;
}
hehehe…
Erros classicos
if(clause == true){ //Primeiro erro
result = true; //Segundo
}
else{
result = false; //Terceiro
}
Meu blog: Felipe Lopes
Pattern: LANÇA CHAMAS EXCEPTION
/**
* Método que gera a primeira parte do Relatório.
* @param codNegocio <b>Long </b> - Código do Negócio
* @throws ClienteNaoEncontradoException
* @throws DadosContatoClienteNaoEncontradoException
* @throws NegocioNaoEncontradoException
* @throws ModuloProdutoNaoEncontradoException
* @throws MoedaNaoEncontradaException
* @throws ParseException
* @throws RegistroNaoEncontradoException
* @throws ParametroInvalidoException
* @throws ItemNaoEncontradoException
* @throws NegocioInvalidoException
* @throws IOException
* @throws JRException
* @return byte
*/
public byte[] geraRelatorio(Long codNegocio)throws ClienteNaoEncontradoException,
DadosContatoClienteNaoEncontradoException,
NegocioNaoEncontradoException,
ModuloProdutoNaoEncontradoException,
MoedaNaoEncontradaException,
ParseException,
RegistroNaoEncontradoException,
ParametroInvalidoException,
ItemSeguradoNaoEncontradoException,
NegocioInvalidoException,
IOException,
JRException;
Código tosco:
public void setId(String id) {
if ( id == null) {
this.id = null;
} else if (id.length() == 0) {
this.id = id;
} else {
this.id = StringUtil.lpad(id, '0', 4);
}
}
Código melhorado:
public void setId(String id) {
if ( id != null && id.length()>0 ) {
this.id = StringUtil.lpad(id, '0', 4);
} else {
this.id = id;
}
}
Mesmo assim, o POGramador misturou lógica de apresentação (formatação) com classe do modelo de negócio.
* salvo engano se esta é uma regra de negócio.
Possivelmente do mesmo POGramador:
public static String padin(String txt) {
if (txt == null) {
return null;
}
if (txt.length() == 0) {
return txt;
}
return StringUtil.lpad(txt, '0', 5);
}
A little help later:
public static String padin(String txt) {
if (txt == null || txt.length() == 0) {
return txt;
}
return StringUtil.lpad(txt, '0', 5);
}
if ( isEmpty( compl ) ? false : compl.trim().length() > 0 ) {
Affffff
[code] public String retornarSituacao(String situacao) {
if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_PEN;
} else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_REC;
} else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_LIB;
} else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_AJU;
} else {
return situacao;
}
}[/code]
para mim nada supera o famoso:
where 1=1
nbluis
Setembro 10, 2008, 4:30pm
#495
[quote=luistiagos]para mim nada supera o famoso:
where 1=1
[/quote]
Então você nunca viu aqueles.
"select *";
"from [tabelas]";
"where " + filtro1 + " is null or campo = " + filtro1;
"and " + filtro2 + " is null or campo2 = " + filtro2;
Isso é de doer…
[quote=danieldestro]Affffff
[code] public String retornarSituacao(String situacao) {
if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_PEN;
} else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_REC;
} else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_LIB;
} else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_AJU;
} else {
return situacao;
}
}[/code][/quote]
Else Forever Design Pattern
[quote=danieldestro]Affffff
[code] public String retornarSituacao(String situacao) {
if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_PEN;
} else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_REC;
} else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_LIB;
} else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
return Constantes.DESC_SITUACAO_AJU;
} else {
return situacao;
}
}[/code][/quote]
Nada que enum poderia resolver com swicth, ou esse codigo legado java 1.4?
Código novo.
Mas tem algo errado, pois ele compara com “equalIgnoreCase”. Se tivesse pensado mais, faria algo que não precisaria desses IFs à toa ai.
[quote=danieldestro]Código novo.
Mas tem algo errado, pois ele compara com “equalIgnoreCase”. Se tivesse pensado mais, faria algo que não precisaria desses IFs à toa ai.[/quote]
Faltou classe ao programador. 8)
Será que ele leu o livro traduzido sobre padrões de projeto e isso aí eh um pseudo-factory ?
[code]public enum Situacao {
EmProcessamento(Long.parseLong(“1”)),
Processado(Long.parseLong(“2”)),
Pendente(Long.parseLong(“3”)),
ComErro(Long.parseLong(“4”));
private final Long codigo;
SituacaoMovimento(Long codigo) {
this.codigo = codigo;
}
public Long codigo() {
return codigo;
}
}[/code]
Qual o problema de se fazer:
EmProcessamento(1L)
???
String SQL = " SELECT " + " mp.COD, " + " mp.SEQUENCIA, " + " mp.DESCRICAO " + " FROM " + " PRODUTO mp";
Para que criar apenas um objeto String quando podemos fazer o milagre da multiplicação?
Putz, que ridículo esse da String. Será que ele acha mais claro essas concatenações?
thingol
Setembro 19, 2008, 4:07pm
#504
Acredito que isso era originalmente formatado assim,
String SQL = " SELECT "
+ " mp.COD, "
+ " mp.SEQUENCIA, "
+ " mp.DESCRICAO "
+ " FROM "
+ " PRODUTO mp";
mas aí alguém que foi fazer a manutenção usou o Ctrl+Shift+F (Auto-format do Eclipse) ou coisa parecida, e acabou ficando desse jeito. De qualquer maneira, isso indica que falta no Java o seguinte recurso do C# (as strings com “@”, que aceitam “” e outros caracteres de escape sem problemas. ) Já foi proposto que isso fosse incluído no Java, mas como de costume isso está engavetado, embora seja particularmente simples de implementar.
string SQL = @"SELECT
mp.COD,
mp.SEQUENCIA,
mp.DESCRICAO
FROM
PRODUTO mp";
thingol , acho que isso é extremamente importante, principalmente para quem tem que trabalhar com SQL e/ou JDBC.
Alguém aqui conheceu a (droga do) SQLJ da Oracle? Ele ao menos facilitava isso. Curiosamente foi meu primeiro post no GUJ, há mais de 6 anos.
http://www.guj.com.br/posts/list/61.java
Meu amigo é um ótimo desenvolvedor, mas ele devia estar com a cabeça cheia no dia
//entrada: yyyyMMdd
private Date formatarData(String dataStr)
throws ParseException
{
// Reposiciona a data yyyyMMdd para dd/MM/yyyy
String regex = "(\d{4})(\d{2})(\d{2})";
String dataFmt = dataStr.replaceAll(regex, "$3/$2/$1");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
return sdf.parse(dataFmt);
}