O estagiário não entendia porque os valores eram substituidos ou não estavam como ele esperava.
[code]for (int desc = 0; desc < 30; desc++) {
if (rmiau03.getCodCaracteristica().get(desc) != 0L) {
List<Long> listaLong = new ArrayList<Long>();
for (int j = 0; j < 30; j++) {
listaLong.add(0L);
}
pesquisa.setTbCodCaracteristica(listaLong);
pesquisa.setTbCodValorCaracteristica(listaLong);
pesquisa.getTbCodCaracteristica().add(desc, rmiau03.getCodCaracteristica().get(desc));
pesquisa.getTbCodValorCaracteristica().add(desc, rmiau03.getCodValorCarac().get(desc));
}
tabs.add( pesquisa );
}
/* todos direitos reservados */[/code]
Descobri o porquê. Código certo abaixo:
[code]pesquisa.setTbCodCaracteristica(new ArrayList());
pesquisa.setTbCodValorCaracteristica(new ArrayList());
for (int j = 0; j < 30; j++) {
pesquisa.getTbCodCaracteristica().add(0L);
pesquisa.getTbCodValorCaracteristica().add(0L);
}
for (int desc = 0; desc < 30; desc++) {
if (rmiau03.getCodCaracteristica().get(desc) != 0L) {
pesquisa.getTbCodCaracteristica().add(desc, rmiau03.getCodCaracteristica().get(desc));
pesquisa.getTbCodValorCaracteristica().add(desc, rmiau03.getCodValorCarac().get(desc));
}
}
/* todos direitos reservados */[/code]
O pior é que ele achava que no set ele colocaria duas listas diferentes nos atributos, como se fosse uma cópia ou clone. hehehehehe…
[code]int size = 0;
if( codigo == 7L ) {
lista.add( 9L );
} else {
lista.add( codigo );
}
for( … ) {
if( alguma condiçao especial ) {
lista.add( valorQueVeioDeAlgumLugar );
size++;
}
}
//retorna o tamanho da lista
return size;[/code]
Será que ele já ouviu falar de lista.size() ??? Fora que ele esqueceu de fazer um size++ logo no início (if/else).
[quote=plentz][quote=Thiagosc][quote=giulianocosta]hhehehe…
Essa é classica:
if(isAlgumaCoisa == true){
//sfkljsdklfjklsdfkl
}[/quote]
Acho que isso se encaixa mais no “estilo de código” do que código burro. O “true” é desnecesssário mas não faz mal algum.
Seria o mesmo que implicar com indentação do código de alguém ou algo parecido, tipo o indivídio que usa tab tirando uma onda de quem usa espaço, e o que usa a formatação automática da IDE tirando sarro dos dois.[/quote]
Eu ainda não vi ninguém que achasse melhor usar “== true”. Sempre era falta de conhecimento.[/quote]
Eu já vi sim!
O arquiteto do projeto garantiu que quando houvesse manutenção no código seria mais fácil o entendimento.
Mas o motivo real era quando alguém fosse ler e entender de cara o que se esperava.
Encontrar true ou false. Deixando-os explícitos.
E tive que trocar todos meus códigos por == true ou != false.
At++
[quote=danieldestro]...
for( ... )
...
[/quote]
O foreach deve ser ensinado DEPOIS do for normal. :lol:
Neste caso, não seria melhor usar new ArrayList<Long>(60) ?
poderia, mas de qualquer forma ele prrcisava cria uma lista de 30 posicoes com valores zero.
Masterpiece / Obra-prima:
[code]public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) {
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);
String strDate;
Timestamp dataTimestamp;
try {
if (new SimpleDateFormat("dd/MM/yyyy").format(sdf.parse(stData)).equals(stData)) {
strDate = new SimpleDateFormat("dd-MM-yyyy 00:00:00").format(sdf.parse(stData));
dataTimestamp = new Timestamp(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse(strDate).getTime());
} else {
dataTimestamp = null;
}
} catch (ParseException e) {
dataTimestamp = null;
} catch (Exception e) {
dataTimestamp = null;
}
return dataTimestamp;
}[/code]
[quote=danieldestro]Masterpiece / Obra-prima:
[code]public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) {
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);
String strDate;
Timestamp dataTimestamp;
try {
if (new SimpleDateFormat("dd/MM/yyyy").format(sdf.parse(stData)).equals(stData)) {
strDate = new SimpleDateFormat("dd-MM-yyyy 00:00:00").format(sdf.parse(stData));
dataTimestamp = new Timestamp(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse(strDate).getTime());
} else {
dataTimestamp = null;
}
} catch (ParseException e) {
dataTimestamp = null;
} catch (Exception e) {
dataTimestamp = null;
}
return dataTimestamp;
}[/code][/quote]
Só faltou colocar o catch (Throwable e).
Imagino como é a “sobrecarga” desse método, obterTimestampPorDataDDMMYYYYHHMMSS, obterTimestampPorDataYYYYMMDD, obterTimestampPorDataYYYYMMDDHHMMSS,
obterDatePorDataDDMMYYYY…
O IF deste método foi SENSACIONAL!
O que o cara que fez isso tava fumando?
Esse select SQL não me cheira muito bem:
SELECT * FROM UMA_TABELA O WHERE O.CD_DOCTO=?1 AND ROWNUM<=1 ORDER BY O.DT_INICO_VIGEN_DOCTO DESC
Acredito que seria melhor usar um MAX na data.
ps: Roda o ORACLE.
[quote=danieldestro]Esse select SQL não me cheira muito bem:
SELECT * FROM UMA_TABELA O WHERE O.CD_DOCTO=?1 AND ROWNUM<=1 ORDER BY O.DT_INICO_VIGEN_DOCTO DESC
Acredito que seria melhor usar um MAX na data.
ps: Roda o ORACLE.[/quote]
Bem, você tem que admitir que isso é melhor do que iterar todo o ResultSet para pegar apenas a última tupla. :lol:
Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.
O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.
Se faz muita confusão nesse sentido. A seguir um link legal sobre isso:
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
[quote=Ssalgado]Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.
O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.[/quote]
Exatamente!
victorwss, o Ssalgado tem razão. Por isso coloquei a query aqui.
[quote=danieldestro][quote=Ssalgado]Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.
O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.[/quote]
Exatamente!
victorwss, o Ssalgado tem razão. Por isso coloquei a query aqui.[/quote]
Realmente, nem prestei atenção direito nisso.
E por falar em if, peguei alguns assim num código:
if (a == b) {
......
......
} else {
//faz nada
}
Um else com um comentário “faz nada”… muito bom
hahahaah… deve ser daquele tipo de programador: “vai que um dia o programa precisa tratar a outra condição, ele já estará preparado”. kkkkk
Tem um proejto aqui que fui analisá-lo e vi que tinha um monte de DAOs vazios. Perguntei o porque e o cara respondeu: “Se um dia precisar criar as queries, já existe a classe”…
hahahahahahhahahaha
Quando se cria classes utilitárias, o legal seria não colocar um construtor público e deixar apenas métodos estáticos, vide a classe java.lang.Math.
Porém, quando você oferece isso ao programado, e ele não tem a menor idéia de como usar esta classe, ele faz algo assim:
DateUtil du = null;
Date umaData = du.parse( umaDataString );
Date proximoDiaUtil = du.proximoDiaUtil( umaData );
Vamos corrigir o código e deixá-lo mais “bunitinhu”:
Date umaData = DateUtil.parse( umaDataString );
Date proximoDiaUtil = DateUtil.proximoDiaUtil( umaData );
DateUtil du = null;
Date umaData = du.parse( umaDataString );
mas isto da NullPointer…
[quote=luistiagos]
DateUtil du = null;
Date umaData = du.parse( umaDataString );
mas isto da NullPointer…[/quote]
Não se o método parse for estático.