Precisamos agora criar uma classe utilitária para obter a data de devolução em String (veja o "GenerateBookReturnDate") do método do generateEmail.
Criando classe utilitária para obter data - GenerateBookReturnDate
Essa classe será responsável por obter a data de empréstimo no formato String.
A ideia é que a gente a acesse da forma que está lá no método. Chamando: o seu nome "ponto", o método que queremos implementar.
Para isso ela será uma classe constante, ou seja, "public final class".
Precisamos começar definindo as regras de negócio.
Iremos definir o número de dias para devolução do livro no início.
Depois, criamos o método getDate, toda a explicação do código está ali embaixo.
public final class GenerateBookReturnDate {
public static int numDaysToReturnBook = 7;
//definindo dada formato DD-MM-YYYY
private static DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
// pega a data formatada do emprestimo do livro
public static String getDate(Date loan_Date) {
Calendar calendar = dateToCalendar(loan_Date);
//adicionaremos o número de dia (7 dias) para devolução do livro
calendar.add(Calendar.DATE, numDaysToReturnBook);
//e agora converte para String, mas precisamos criar outro metodo
//para converter de calender para date,
// pois o dateFormat precisa receber um Date (atualmente está Calendar)!
String result = dateFormat.format(calendarToDate(calendar));
return result;
}
//metodo para converter de Calendar pra Date, pois é o que o dateFormat precisa
//para que possamos retornar uma String
private static Date calendarToDate(Calendar calendar) {
return calendar.getTime();
}
//converts Date do Calendar
private static Calendar dateToCalendar(Date loanDate) {
//instancia o calender com getInstance
Calendar calendar = Calendar.getInstance();
//e converte
calendar.setTime(loanDate);
return calendar;
}
}
Com essa classe, podemos voltar no reader e modificar o numDaysToNofityReturn! Utilizando essa classe - 1.
@Configuration
public class readUsersWithLoansCloseToReturnReaderConfig implements ItemReader<UserBookLoan> {
int numDaysToNofityReturn = GenerateBookReturnDate.numDaysToReturnBook - 1;