示例#1
0
 public LocalDate getDataVencimento(LocalDate hojeFicticio) {
   LocalDate terceiraSegundaFeira = getTerceiraSegundaFeiraDesteMes(hojeFicticio);
   Serie serieAtual = getSerieAtualPorData(hojeFicticio, terceiraSegundaFeira);
   if (this.ordinal() == serieAtual.ordinal()) {
     // se for a mesma Serie, o vencimento é a proxima 3a segunda
     if (hojeFicticio.isBefore(terceiraSegundaFeira) || hojeFicticio.equals(terceiraSegundaFeira))
       return terceiraSegundaFeira;
     // a 3a segunda deste mes ja passou, vamos para a do proximo mes
     return getTerceiraSegundaFeiraDesteMes(hojeFicticio.plusMonths(1));
   } else if (this.ordinal() == (serieAtual.ordinal() + 1) % 12) {
     // se for a próxima Serie, o vencimento é
     // a 3a segunda-feira do mes que vem, caso a
     // 3a segunda-feira deste mes ainda nao tenha
     // passado. Caso ja tenha passado, sera a 3a
     // segunda-feira daqui a 2 meses.
     int meses = (hojeFicticio.isAfter(terceiraSegundaFeira)) ? 2 : 1;
     return getTerceiraSegundaFeiraDesteMes(hojeFicticio.plusMonths(meses));
   }
   throw new IllegalArgumentException(
       "Serie nao vencera no mes atual ou no proximo para a data " + hojeFicticio);
 }
示例#2
0
 public static Serie getProximaSeriePorData(LocalDate data) {
   Serie atual = getSerieAtualPorData(data);
   return values()[(atual.ordinal() + 1) % 12];
 }