Seguinte, to fazendo um sistema que agenda uma manutenção, preciso que no evento agendar (com base na periodicidade do veiculo), ele verifique se: 1 - a data que sera calculada não resultara em um final de semana, e, 2- a data que sera calculada nao resultara em um dia que ja possui uma manutenção agendada…
eis os codigos que ja fiz até agora sem sucesso…
[code]
public void gera_Agendas(){
VeiculoDAO dao = new VeiculoDAO();
for (Veiculo veiculo: dao.listar()) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,veiculo.getPeriodicidade().getPer_dias()); //pega a data de hoje e soma o valor da periodicidade
Agenda_de_Manutencao_de_Veiculo age = new Agenda_de_Manutencao_de_Veiculo();
Agenda_de_Manutencao_de_VeiculoDAO ageDAO = new Agenda_de_Manutencao_de_VeiculoDAO();
this.verifica_fim_semana(c);
JOptionPane.showInternalMessageDialog(null, data);
age.setAge_man_vei_dia(data.getTime());
…
[/code]
public void verifica_fim_semana(Calendar c){
int i=0;
if(c != Calendar.SATURDAY || c != Calendar.SUNDAY){
i=0;
}
if(c == Calendar.SATURDAY){
i=2;
}
if(c == Calendar.SUNDAY){
i=1;
}
c.add(0,i);
this.verifica_outra_manutencao(c);
}
criei uma variavel publica, data, para gravar a data final que resultara dos “loops” de verificações…
tenho varias duvidas, tipo:
c.add(0,1);
serve para o que eu preciso, ou seja, pega a data atual e adiciona 1 dia a ela?
os erros que estão acontecendo (por enquanto) são as comparações dos ifs…
Ola pessoa, consegui resolver… usando o JODA Time… (muito bom por sinal)
segue o codigo resultante:
public boolean gera_Agenda_Veiculo(){
int cont=0;
VeiculoDAO dao = new VeiculoDAO();
for (Veiculo veiculo: dao.listar()) {
DateTime c = new DateTime();
c=c.plusDays(veiculo.getPeriodicidade().getPer_dias());
Agenda_de_Manutencao_de_Veiculo age = new Agenda_de_Manutencao_de_Veiculo();
Agenda_de_Manutencao_de_VeiculoDAO ageDAO = new Agenda_de_Manutencao_de_VeiculoDAO();
this.verifica_fim_semana(c);
if(this.verifica_outra_manutencao_mesmo_veiculo(veiculo.getVei_cod())== true){
age.setAge_man_vei_dia(data.toDate());
age.setVeiculo(veiculo);
Status status = new Status();
status.setSta_cod(1);
Prioridade pri = new Prioridade();
pri.setPri_cod(1);
age.setPrioridade(pri);
age.setStatus((status));
ageDAO.inserir(age);
cont++;
}
data = null;
}
if(cont>0){
return true;
}
return false;
}
public void verifica_outra_manutencao(DateTime c){
Agenda_de_Manutencao_de_VeiculoDAO ageDAO = new Agenda_de_Manutencao_de_VeiculoDAO();
SimpleDateFormat s = new SimpleDateFormat();
String strdata1 = null;
int dia=(c.getYear());
int mes=(c.getMonthOfYear());
int ano=(c.getDayOfMonth());
strdata1 = (""+dia+mes+ano);
int dat = Integer.parseInt(strdata1);
for(Agenda_de_Manutencao_de_Veiculo agenda : ageDAO.listar()){
DateTime data2 = new DateTime(agenda.getAge_man_vei_dia());
int dia2=(data2.getYear());
int mes2=(data2.getMonthOfYear());
int ano2=(data2.getDayOfMonth());
String strdata2 = (""+dia2+mes2+ano2);
int dat2 = Integer.parseInt(strdata2);
if(dat2 == dat){
c=c.plusDays(1);
this.verifica_fim_semana(c);
break;
}
}
data=c;
}