Caso de Uso: Obtener Informes de una Evaluación

Clase: net.hrider.api.usecases.GetReports.java
Este ejemplo muestra cómo obtener los informes disponibles para una evaluación concreta y como descargar su contenido.

Como en los ejemplos anteriores, utilizamos el enlace a la compañía y a la evaluación para obtener ambos recursos mediante una llamada GET:

Link companyLink = root.getLinks().getCompanies().build(companyId);
Company company = service.get(Company.class, companyLink);        
Link appraisalLink = company.getLinks().getAppraisals().build("" + appraisalId);
Appraisal appraisal = service.get(Appraisal.class, appraisalLink);


Siguiendo el enlace reports de la evaluación obtenemos todos los informes que están disponibles para esa evaluación:

ReportsCollection collection = service.get(ReportsCollection.class, appraisal.getLinks().getReports());
List<Report> reports = collection.getEmbedded().getReports();
printReports(reports);


Para una evaluación de feedback obtenemos este resultado:

ID                            Description                               Mimetypes           
---------------------------   ---------------------------------------   ---------------------------------
survey-list                   Survey list                               text/csv,application/vnd.ms-excel
feedback-reports              Individual reports for feedback appra...  application/json    
feedback-results              Individual results list for feedback ...  text/csv,application/vnd.ms-excel
feedback-results-jobs         Results by jobs for feedback appraisal    text/csv,application/vnd.ms-excel
feedback-results-gender       Results by gender for feedback appraisal  text/csv,application/vnd.ms-excel
feedback-results-age          Results by age for feedback appraisal     text/csv,application/vnd.ms-excel
feedback-results-antiquity    Results by seniority ranges for feedb...  text/csv,application/vnd.ms-excel
feedback-detail               Individual results detailed by indica...  text/csv,application/vnd.ms-excel
feedback-group-detail         Individual results detailed by indica...  text/csv,application/vnd.ms-excel
feedback-action-plan          Action plan objectives list for each ...  text/csv,application/vnd.ms-excel


Cada informe contiene un ID, una descripción de qué contiene el informe y los tipos de contenido que se soportan en la descarga.
Por ejemplo, el segundo informe, con ID feedback-results puede descargarse tanto en Excel como en CSV e incluye la lista de resultados individuales para una evaluación de feedback.
El siguiente fragmento de código descarga el informe en Excel y lo guarda en un fichero:

Report report = collection.getEmbedded().findReport("feedback-results");
InputStream in = service.get(InputStream.class, report.getLinks().getSelf(), 
            net.hrider.api.Constants.MIMETYPE_EXCEL);

try (FileOutputStream fout = new FileOutputStream(new File(outputDir, "feedback-results.xls"))) {
    saveToFile(in, fout);
} catch (IOException ex) {
    LOG.log(Level.SEVERE, "error saving file", ex);
}


Alternativamente podríamos haber creado el enlace manualmente utilizando el ID del informe. En este ejemplo la URI al informe sería (sustituyendo 'companyId' y 'appraisalId' por sus correespondientes IDs):

https://dev.hrider.net/api/v1/companies/companyId/appraisals/appraisalId/reports/feedback-results