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:
saludos y gracias 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();
}
}

