Foros del Web » Programación para mayores de 30 ;) » Java »

calculo de tarea programada semanal

Estas en el tema de calculo de tarea programada semanal en el foro de Java en Foros del Web. Hola como estan? bueno aqui ando de nuevo trancado con un algoritmo! estoy haciendo una proyecto en el cual necesito configurar tareas programadas (sin usar ...
  #1 (permalink)  
Antiguo 14/04/2009, 11:40
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
calculo de tarea programada semanal

Hola como estan? bueno aqui ando de nuevo trancado con un algoritmo! estoy haciendo una proyecto en el cual necesito configurar tareas programadas (sin usar el Quartz) donde tengo tareas Diarias, Semanales, Mensuales y Anuales para ello me cree un metodo en cada clase q me devuelve la proxima instancia de la tarea pero en el de la semanal me tranque jejeje (tambien me falta la mensual)
La idea es que una tarea semanal se ejecuta cierta cantidad de dias (Lunes,Martes,Miercoles,etc) y cada tantas semanas (todas las semanas, cada dos semanas, cada tres semanas,etc).

Bueno aca dejo lo q voy de la clase a ver si me pueden guiar un poco

Código:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "periodicidad_semanal")
@DiscriminatorValue("2")
@PrimaryKeyJoinColumn(name="id_periodicidad")
public class PeriodicidadSemanal extends PeriodicidadTarea implements Serializable{

	private int cadaSemana;
	private boolean lunes;
	private boolean martes;
	private boolean miercoles;
	private boolean jueves;
	private boolean viernes;
	private boolean sabado;
	private boolean domingo;
	
	private ArrayList<Boolean> dias = new ArrayList<Boolean>();
	
	@Column(name="cada_semana")
	public int getCadaSemana() {
		return cadaSemana;
	}

	public void setCadaSemana(int cadaSemana) {
		this.cadaSemana = cadaSemana;
	}

	@Column(name="lunes")
	public boolean isLunes() {
		return lunes;
	}

	public void setLunes(boolean lunes) {
		this.lunes = lunes;
	}

	@Column(name="martes")
	public boolean isMartes() {
		return martes;
	}

	public void setMartes(boolean martes) {
		this.martes = martes;
	}

	@Column(name="miercoles")
	public boolean isMiercoles() {
		return miercoles;
	}

	public void setMiercoles(boolean miercoles) {
		this.miercoles = miercoles;
	}

	@Column(name="jueves")
	public boolean isJueves() {
		return jueves;
	}

	public void setJueves(boolean jueves) {
		this.jueves = jueves;
	}

	@Column(name="viernes")
	public boolean isViernes() {
		return viernes;
	}

	public void setViernes(boolean viernes) {
		this.viernes = viernes;
	}

	@Column(name="sabado")
	public boolean isSabado() {
		return sabado;
	}

	public void setSabado(boolean sabado) {
		this.sabado = sabado;
	}

	@Column(name="domingo")
	public boolean isDomingo() {
		return domingo;
	}

	public void setDomingo(boolean domingo) {
		this.domingo = domingo;
	}
	
	@Transient
	public Date getProximaEjecucion(Date ultimaEjecucion) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(ultimaEjecucion);
		calendar.setTime(proximoDia(calendar));
		if(getConfiguracionTarea().getFechaFin() == null){
			return calendar.getTime();
		}else{
			if(getConfiguracionTarea().getFechaFin().equals(calendar.getTime()) || 
					getConfiguracionTarea().getFechaFin().after(calendar.getTime())){
				return calendar.getTime();
			}else{
				return null;
			}
		}
	}
	
	@Transient
	public ArrayList<Boolean> getDias(){
		dias = new ArrayList<Boolean>();
		dias.add(domingo);
		dias.add(lunes);
		dias.add(martes);
		dias.add(miercoles);
		dias.add(jueves);
		dias.add(viernes);
		dias.add(sabado);
		return dias;
	}
	
	@Transient
	public Date proximoDia(Calendar calAux){
		int diaSemana = calAux.get(Calendar.DAY_OF_WEEK);
                //En este for estoy trancado
		for(int i = diaSemana;i < getDias().size(); i++){
			boolean valor = getDias().get(i);
			if(valor){
				
				break;
			}
		}
		
		
		calAux.add(Calendar.DATE, cadaSemana * 7);
		
		return calAux.getTime();
	}
}
saludos y gracias
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.