Recogiendo el siguiente día válido.

Estoy escribiendo una aplicación java donde necesito hacer lo siguiente.

Tengo que evitar dos días de una semana (configurables externamente), por ejemplo, MARTES y VIERNES para hacer un procesamiento lógico de negocios. Quiero saber el próximo día disponible. Por ejemplo: si hoy es MARTES, debería recibir MIÉRCOLES como el próximo disponible o si hoy es el JUEVES, entonces el próximo disponible debería ser el LUNES.

¿Podría alguien guiarme para resolver esto? Esto suena simple pero es realmente engañoso.

Esto es lo que hice hasta ahora

<code>       List<String> exceptionDays = new ArrayList<String>();
  exceptionDays.add("SUNDAY");
  exceptionDays.add("MONDAY");
  exceptionDays.add("FRIDAY");

  Date today = new Date();

      Calendar calendar = Calendar.getInstance();
      calendar.setTime(today);

  int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

  if (dayOfWeek == Calendar.FRIDAY) {
      calendar.add(Calendar.DATE, 3);
  } else if (dayOfWeek == Calendar.SATURDAY) {
      calendar.add(Calendar.DATE, 2);
  } else {
      calendar.add(Calendar.DATE, 1);
  }
  String strDateFormat = "E";
  SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);

  strDateFormat = "EEEE";
  sdf = new SimpleDateFormat(strDateFormat);

  Date nextBusinessDay = calendar.getTime();
  System.out.println(sdf.format(nextBusinessDay).toUpperCase());
  if(exceptionDays.contains(sdf.format(nextBusinessDay).toUpperCase())){
      if(sdf.format(nextBusinessDay).toUpperCase().equals("FRIDAY")){
          calendar.add(Calendar.DATE, 3);
      }else if(sdf.format(nextBusinessDay).toUpperCase().equals("SATURDAY")){
          calendar.add(Calendar.DATE, 2);
      } else
          calendar.add(Calendar.DATE, 1);


   nextBusinessDay = calendar.getTime();
  }
  DateFormat df = new SimpleDateFormat("dd-MMM-yy");
    String format = df.format(nextBusinessDay.getTime());
  System.out.println("Today            : " + df.format(today));
  try {
    System.out.println("Next business day: " + df.parse(format));

      System.out.println("Next business day: " + df.format(nextBusinessDay));
</code>

Por favor ignore la lógica anterior si parece torpe.

Respuestas a la pregunta(1)

Su respuesta a la pregunta