Pessoa fiz uma aplicação aqui na empresa que é o seguinte
conecto no banco de dados e gero um txt!
só que gero em determinadas datas tipo de dois em dois dias eu pego a data do sistema e gero o arquivo com datas definidas pela regra
só que ficou muito grande o código e agora ele gera o txt mas nao esta populando nada dentro do txt alguem poderia me ajudar nisso por favor?!
[img]
Poe grande nisso!
Cara, ja ouviu falar em metodos? =D Use-os!
Vc colocou switchs dentro de outros switchs… ta muito confuso. E pelo visto, a grande parte é copy-paste.
Nao precisa ficar replicando codigo… Faça metodos com os codigos repetidos ou mesmo outras classes. isso vai simplificar seu codigo.
Pois é amigo, estou colocando switchs dentro de switchs , pois é regra de negocio
pra quando chegar o mês de janeiro de 2012 nao dá pau!
entao eu pego janeiro a dezembro
e pego as datas da regra de negocio onde tenho que rodar o programa!
tentei fazer com métodos mais nao conseguir, se puder me ajudar agradeçço!
Blz cara?
Realmente o código é enorme e muito confuso, é muito “case”
Eu acho melhor você projetar teu código implementando métodos, pois fica melhor para você entender e também pra dar manutenção.
Você pode implementar métodos nas cases, diminuindo o código. Criar uma classe à parte contendo todos os métodos.
Vai ai uma dica.
Ate mais.
Eai cara, blz?
Vou repetir o que os demais falaram… Vc precisa criar métodos…kkkkk
Você Já tem conceitos de Orientação ao Objeto? Sei que métodos tbm existem em linguagens não OO, mas cria-los é uma pratica que se adquire com este conceito.
Confesso que não entendi muito bem o que está acontecendo no código, mas você pode diminui-lo facilmente. Algumas dicas:
[list]Verifique partes do código que se repetem[/list]
[list]Códigos repetidos não precisão ser exatamente iguais, uma String que muda não significa nada, o seu método pode exigir um parâmetro String[/list]
Veja um téco do seu código abaixo, onde fiz alguns comentários.
switch (Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) {
case 07:
System.out.println("dt_ciclo 01 Periodo 09"); //reparei que esta String muda entaum criei um parametro no método chamado "cicloPeriodo"
soma4 = "01";// soma4 ---- reparei que este valor muda tambem, no caso aqui é "22" e mais abaixo é "25",
//entaum criei um método chamado val
soma3 = dtHora5 + dtHora2;// soma3
soma1 = dtHora5 + dtHora2 + dt_ciclo;// soma1
soma2 = dtHora6 + dtHora4 + "22";// soma2 ---reparei que este valor tambem muda,
// no caso aqui é "22" e mais abaixo é "25", entaum criei um metodo chamado val2
int dt_ciclo = Integer.parseInt(soma4);
int dt_corte = Integer.parseInt(soma2);
int dt_mes_ftra = Integer.parseInt(soma3);
int dt_data = Integer.parseInt(soma1);
System.out.println("dt_ciclo : " + dt_ciclo);
System.out.println("dt_data : " + dt_data);
System.out.println("dt_mes_ftra : " + dt_mes_ftra);
System.out.println("dt_corte : " + dt_corte);
break;
case 10:
System.out.println("dt_ciclo 02 Periodo 12");
soma4 = "02";
soma3 = dtHora5 + dtHora2;
soma1 = dtHora5 + dtHora2 + "02";
soma2 = dtHora6 + dtHora4 + "25";
dt_ciclo = Integer.parseInt(soma4);
dt_corte = Integer.parseInt(soma2);
dt_mes_ftra = Integer.parseInt(soma3);
dt_data = Integer.parseInt(soma1);
System.out.println("dt_ciclo : " + dt_ciclo);
System.out.println("dt_data : " + dt_data);
System.out.println("dt_mes_ftra : " + dt_mes_ftra);
System.out.println("dt_corte : " + dt_corte);
break;
Olha como diminui quando se cria um método para isso
switch (Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) {
case 07:
CriandoMetodo("dt_ciclo 01 Periodo 09", "01", "22");
break;
case 10:
CriandoMetodo("dt_ciclo 02 Periodo 12", "02", "25");
break;
}
}
public void CriandoMetodo(String cicloPeriodo, String val, String val2){
System.out.println(cicloPeriodo);
soma4 = valSoma4;
soma3 = dtHora5 + dtHora2;
soma1 = dtHora5 + dtHora2 + val;
soma2 = dtHora6 + dtHora4 + val2;
dt_ciclo = Integer.parseInt(soma4);
dt_corte = Integer.parseInt(soma2);
dt_mes_ftra = Integer.parseInt(soma3);
dt_data = Integer.parseInt(soma1);
System.out.println("dt_ciclo : " + dt_ciclo);
System.out.println("dt_data : " + dt_data);
System.out.println("dt_mes_ftra : " + dt_mes_ftra);
System.out.println("dt_corte : " + dt_corte);
break;
}
bom ta meio tosco, mas, foi o que deu pra fazer
se reparar tem quase 10 linhas a menos. Parece pouco? mas eu modifiquei apenas 5% do seu código, faz pra tudo pra vc ver… :lol:
Bom, é isso. Não sei se fui claro. Se não entendeu, posta ai, e se entendeu, posta tbm…rsrsrsr
Abs e boa Sorte
fala
softlesk
Smalltalk blz grande!!!?
Cara eu até tentei colocar métodos mas nao conseguir chamar e pegar os valores depois, pra colocar na query
vou passar o arquivo para que possa dar uma olhada, eu nao sei fazer mesmo cara, tentei e ja faz um tempo diminuir e tudo mas
mas nao conseguir se puder me dar uma força agradeço!!
Falando diretamente deste seu arquivo, diria que vc pode declarar as variáveis como globais,
por que assim se vc altera uma(ou mais) delas dentro de seu método e pode recupera-las onde quiser!! Entendeu??
Mas isso é só para vc poder diminuir o código e começar a entender como funcionam os métodos, o correto seria criar classes, atributos e métodos desta classe… e assim vai.
É como eu disse com o conceito de Orientação ao Objeto vc vai pegando essas manhas… se possível, leia uns artigos sobre OO.
AH!! La vai mais umas dicas, pra melhorar seu código:
[list]Evite usar underscore(_) o famoso underline em suas variáveis e métodos[/list]
[list]Não inicie uma variável com seu tipo, por ex.: dt_Data[/list]
[list]Use o conceito CamelCase, onde a primeira letra da variável começa com minuscula e a primeira letra de todas as próximas palavras começa com maiúscula, ex.: dataCorte, dataCiclo. Isto vale tbm para nomes de métodos, só que a primeira letra do nome do método começa com Maiúscula[/list]
sei que isso não tem nada a ver com o que vc realmente quer, que é diminuir seu código pra achar o erro, mas isso ajuda vc a ler melhor a codificação que também já te ajudaria a achar o erro.
Mas tenta isso, que eu falei. Cria um método simples como o que mostrei no post anterior, mas se precisar que o mesmo retorne vários valores utilize variáveis globais, atribui os valores a elas no método, e coleta onde precisar. Só que chama este método apenas de um case pra testar, se der certo vai pro próximo.
abs.
valeu grande!
Duvida no seu metodo!
voce coloou String val e String val2, como faço pra colocar esses valores
na variavel dt_ciclo por exemplo!?
switch (Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) {
case 07:
CriandoMetodo("dt_ciclo 01 Periodo 09", "01", "22");
break;
case 10:
CriandoMetodo("dt_ciclo 02 Periodo 12", "02", "25");
break;
}
}
public void CriandoMetodo(String cicloPeriodo, String val, String val2){
System.out.println(cicloPeriodo);
soma4 = valSoma4;
soma3 = dtHora5 + dtHora2;
soma1 = dtHora5 + dtHora2 + val;
soma2 = dtHora6 + dtHora4 + val2;
dt_ciclo = Integer.parseInt(soma4);
dt_corte = Integer.parseInt(soma2);
dt_mes_ftra = Integer.parseInt(soma3);
dt_data = Integer.parseInt(soma1);
System.out.println("dt_ciclo : " + dt_ciclo);
System.out.println("dt_data : " + dt_data);
System.out.println("dt_mes_ftra : " + dt_mes_ftra);
System.out.println("dt_corte : " + dt_corte);
break;
}
Ou como irei passar os valores dos métodos pra cá!?
pois pra cada case é um mês diferente e um dia diferente
onde mudam os valores dt_data e dt_corte
ResultSet rs = st.executeQuery("select * from system.parque_trafego_"+dt_data+" where conta = "+dt_corte+" and cod_subtp_produto_comercial = 'LINA'");
É mais fácil você explicar como se calcula as variáveis (soma1, soma2, soma3 e soma4). coloque nomes nas variáveis de forma que todos entendam.
Tipo ao invés de colocar o nome da variável dtHora3 coloque mesAnterior.
//PEGA MÊS ANTERIOR
GregorianCalendar call3 = new GregorianCalendar();
call3.add(Calendar.MONTH, -1);
String dtHora3 = formatador2.format(call3.getTime());
Abraço,
Fred
vamos tentar outro exemplo
digamos que queremos exibir uma string com o dia/mes mas com algumas condições
Sem método ficaria assim:
[code]public class Teste{
private static int mes;
private static String msg;
public static void main(String args[]){
int dia = new Date().getDay();
//somete chama o metodo se hj for dia 12, 13 ou 14
switch (dia) {
case 12:
mes = new Date().getMonth();
msg = "Mês " + mes + " Dia " + 12;
break;
case 13:
mes = new Date().getMonth();
msg = "Mês " + mes + " Dia " + 13;
break;
case 14:
mes = new Date().getMonth();
msg = "Mês " + mes + " Dia " + 14;
break;
}
System.out.print(msg); //recupero a variavel msg que foi alterada no metodo
}
}[/code]
Com métodos ficaria assim:
[code]public class Teste{
private static int mes;
private static String msg;
public static void main(String args[]){
int dia = new Date().getDay();
//somete chama o metodo se hj for dia 12, 13 ou 14
switch (dia) {
case 12:
metodo(12);//chama metodo
break;
case 13:
metodo(13);//chama metodo
break;
case 14:
metodo(14);//chama metodo
break;
}
System.out.print(msg); //recupero a variavel msg que foi alterada no metodo
}
public static void metodo(int dia){
mes = new Date().getMonth();
msg = "Mês " + mes + " Dia " + dia;// usando o parametro dia
}
}[/code]
é só um exemplo bobo, nem tenta compilar que é erro na certa, não tenho como testar aqui!!
Tenta ai!!
Mas nao estou querendo CALCULAR NADA… apenas quero pegar o valores colocar na variável e chmar o select com essas variáveis!
apenas isso!!
Fala softlesk !!!
Cara já deu uma clareada, gostei!! vou tentar!!
opa!!! que bom.
Tenta ai, e qualquer coisa avisa!