Riunire piu' metodi in uno solo, possibile?

di il
1 risposte

Riunire piu' metodi in uno solo, possibile?

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

1 Risposte

  • Re: Riunire piu' metodi in uno solo, possibile?

    Se hai la struttura delle tabelle raggiungibile via codice potresti forse usare il nome dei campi delle tabelle ed il tipo di dato nel db per costruire il csv in modo dinamico
Devi accedere o registrarti per scrivere nel forum
1 risposte