Ho una classe che gestisce la creazione di file CSV con dati letti da un DB Mongo e ne permette il download. Al momento ho un metodo per ogni tipologia di dato richiesto. Ecco un esempio di un paio di metodi.
public Result staffCSV() throws IOException {
MongoCursor<StaffRegister> u = StaffRegister.findAll();
String fname = configuration.getString("tmpDir") + "staff.csv";
CSVWriter writer = new CSVWriter(new FileWriter(fname), ';');
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ITALY);
String[] entries = {"Nome", "Cognome", "CF", "Data di nascita", "Titolo di studio",
"Data assunzione", "Contratto di lavoro", "Ore settimanali",
"Ore mensili", "Funzione", "Mansioni", "Sede di lavoro"};
writer.writeNext(entries);
for (StaffRegister s : u) {
String[] ucvs = {s.getFirstname(), s.getLastname(), s.getTaxCode(),
dateFormat.format(s.getBirthday()), s.getQualification(), s.getHireDate(), s.getWorkContract(),
s.getWeeklyHours(), s.getMontlyHours(), s.getPosition(), s.getTasks(), s.getWorkPlace(),
};
writer.writeNext(ucvs);
}
writer.close();
response().setContentType("application/x-download");
response().setHeader("Content-disposition", "attachment; filename=staff.csv");
return ok(new File(fname));
}
public Result trainingCSV() throws IOException {
MongoCursor<Trainings> t = Trainings.findAllTraining();
String fname = configuration.getString("tmpDir") + "training.csv";
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ITALY);
CSVWriter writer = new CSVWriter(new FileWriter(fname), ';');
String[] entries = {"Personale", "Data inizio", "Data fine", "Oggetto formazione",
"Durata", "Luogo svolgimento", "Docenza", "Attestato rilasciato", "Scadenza aggiornamento",
"Note"};
writer.writeNext(entries);
for(Trainings tr: t) {
String[] ucvs = {tr.getWriterFullName(), dateFormat.format(tr.getStartDate()),
dateFormat.format(tr.getEndDate()), tr.getTrainingObject(), tr.getDuration(),
tr.getLocation(), tr.getProfessorShip(), tr.getCertificate().toString(),
tr.getEndUpdate(), tr.getNote()};
writer.writeNext(ucvs);
}
writer.close();
response().setContentType("application/x-download");
response().setHeader("Content-disposition", "attachment; filename=training.csv");
return ok(new File(fname));
}
Secondo voi e' possibile creare un metodo generico per gestire ogni richiesta, tenuto conto che le collezioni sono diverse cosi' come i campi in esse contenuti? Il filename puo' essere lo stesso per tutte le tipologie.
Grazie