public void loop() { while (!Program.Terminated) { if (q.Count == 0) { Console.WriteLine("fim do agendamento"); break; } Business.Agendamento nextAgendamento = q.Dequeue(); int nexHour = nextAgendamento.horaDoDia; float abertura = nextAgendamento.value; int horaAgora = -1; Console.WriteLine("///////////////////////continue agora vale {0}", CONTINUE); while ((!Program.Terminated) && (horaAgora != nexHour)) { horaAgora = Natureza.Tempo.Instance.HoraDoDia(); Natureza.Tempo.Instance.inserePequenoDelay(); } //se saiu do loop eh pq ta na hora de fazer o negocio setAbertura(abertura); } }
private void configurarSistemaCortes() { /* * * se ha um corte agendado para amanha, o sistema agenda o corte * */ return; DateTime tomorrow = Natureza.Tempo.Instance.Now.AddDays(1); this.agendamentosCorte.Sort(); foreach (AgendamentoCorte agendamentoCorte in this.agendamentosCorte) { //TO-DO verificar se agendamentoCorte.getDate() é para amanha // se for, entao criamos um novo agendamento Business.Agendamento a = new Business.Agendamento(agendamentoCorte.getDate().Hour, agendamentoCorte.getAltura()); sistemaCorte.agendarCorte(a); //remove esse agendamento da lista //quando nao for mais amanha, ai break. } }
private Queue <Business.Agendamento> createCronogramaHorasSol(int horaInicial) { if (horaInicial > 24 || horaInicial < 0) { throw new Exception("hora invalida"); } DateTime today = Natureza.Tempo.Instance.Now; Sistema_de_Previsão_do_Tempo.Previsao prev = new Sistema_de_Previsão_do_Tempo.Previsao(today); Queue <Business.Agendamento> q = new Queue <Business.Agendamento>(); if (prev.iraChover()) { for (int i = horaInicial; i < 24; i++) { float p = 30; //como vai chover matenho a abertura em 30% para nao molhar demais a grama Business.Agendamento a = new Business.Agendamento(i, p); q.Enqueue(a); } } else { for (int i = horaInicial; i < 24; i++) { float p; //50% eh o padrao, mas entre as 14 e as 18, abro em 100 pra pegar sol% if (i >= 14 && i <= 18) { p = 100; } else { p = 50; } Business.Agendamento a = new Business.Agendamento(i, p); q.Enqueue(a); } } return(q); }
/* * cronograma de horas de sol. precisa saber se vai chover * */ private Queue <Business.Agendamento> createCronogramaHorasSol() { Queue <Business.Agendamento> q = new Queue <Business.Agendamento>(); Previsao prev = new Previsao(Natureza.Tempo.Instance.Now); if (prev.iraChover()) { for (int i = 0; i < 24; i++) { float p = 30; //como vai chover matenho a abertura em 30% para nao molhar demais a grama Business.Agendamento a = new Business.Agendamento(i, p); q.Enqueue(a); } } else { for (int i = 0; i < 24; i++) { //fake total float p; //50% eh o padrao, mas entre as 14 e as 18, abro em 100 pra pegar sol% if (i >= 14 && i <= 18) { p = 100; } else { p = 50; } Business.Agendamento a = new Business.Agendamento(i, p); q.Enqueue(a); } } return(q); }
public TimeMonitor(Action cortarGrama, Action <float> setarAlturaGrama, Business.Agendamento agendamento) { this.cortarGrama = cortarGrama; this.setarAlturaGrama = setarAlturaGrama; this.agendamento = agendamento; }