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(); } }