package nc.noumea.mairie.organigramme.utils;
/*
* #%L
* Logiciel de Gestion des Organigrammes de la Ville de Nouméa
* $Id:$
* $HeadURL:$
* %%
* Copyright (C) 2015 Mairie de Nouméa
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import nc.noumea.mairie.organigramme.core.utility.DateUtil;
import nc.noumea.mairie.organigramme.core.ws.ISirhWSConsumer;
import nc.noumea.mairie.organigramme.dto.EntiteDto;
import nc.noumea.mairie.organigramme.dto.FichePosteDto;
import nc.noumea.mairie.organigramme.enums.StatutFichePoste;
import org.apache.commons.io.IOUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.zkoss.bind.annotation.GlobalCommand;
import org.zkoss.zul.Filedownload;
public class ExportExcelUtil {
private static final int NUM_COL_SIGLE = 0;
private static final int NUM_COL_NUMERO = 1;
private static final int NUM_COL_TITRE = 2;
private static final int NUM_COL_STATUT = 3;
private static final int NUM_COL_CATEGORIE = 4;
private static final int NUM_COL_AGENT = 5;
private static final int NUM_COL_REGLEMENTAIRE = 6;
private static final int NUM_COL_COMMENTAIRE = 7;
@GlobalCommand
public static void genereExportExcel(EntiteDto entiteDto, boolean afficheFdpInactive, ISirhWSConsumer sirhWSConsumer) throws IOException {
Workbook wb = new HSSFWorkbook();
Sheet feuillePrincipale = wb.createSheet("Fiches de postes");
creerEntete(feuillePrincipale);
String listIdStatutFDP = StatutFichePoste.getListIdStatutActif();
if (afficheFdpInactive) {
listIdStatutFDP += "," + StatutFichePoste.INACTIVE.getId();
}
int numeroLigne = 1;
for (FichePosteDto fichePosteDto : sirhWSConsumer.getFichePosteByIdEntite(entiteDto.getIdEntite(), listIdStatutFDP, true)) {
Row row = feuillePrincipale.createRow((short) numeroLigne);
row.createCell(NUM_COL_SIGLE).setCellValue(fichePosteDto.getSigle());
row.createCell(NUM_COL_NUMERO).setCellValue(fichePosteDto.getNumero());
row.createCell(NUM_COL_TITRE).setCellValue(fichePosteDto.getTitre());
row.createCell(NUM_COL_STATUT).setCellValue(fichePosteDto.getStatutFDP());
row.createCell(NUM_COL_CATEGORIE).setCellValue(fichePosteDto.getLibelleGradeCategorie());
row.createCell(NUM_COL_AGENT).setCellValue(fichePosteDto.getAgent());
row.createCell(NUM_COL_REGLEMENTAIRE).setCellValue(fichePosteDto.getReglementaire());
row.createCell(NUM_COL_COMMENTAIRE).setCellValue(fichePosteDto.getCommentaire());
numeroLigne++;
}
// Aucolumns
for (int i = NUM_COL_SIGLE; i <= NUM_COL_COMMENTAIRE; i++) {
feuillePrincipale.autoSizeColumn(i);
}
File tempFile = File.createTempFile("tempFile", ".xls");
FileOutputStream fileStream = new FileOutputStream(tempFile);
wb.write(fileStream);
FileInputStream fileInputStream = new FileInputStream(tempFile);
// Création et sauvegarde du fichier
String nomFichier = "Organigramme - Impression Fiche Poste - " + entiteDto.getSigle() + "-" + DateUtil.formatDateForFile(new Date()) + ".xls";
Filedownload.save(IOUtils.toByteArray(fileInputStream), null, nomFichier);
}
private static void creerEntete(Sheet sheet) {
Row rowEntete = sheet.createRow((short) 0);
rowEntete.createCell(NUM_COL_SIGLE).setCellValue("Sigle");
rowEntete.createCell(NUM_COL_NUMERO).setCellValue("Numéro");
rowEntete.createCell(NUM_COL_TITRE).setCellValue("Titre");
rowEntete.createCell(NUM_COL_STATUT).setCellValue("Statut");
rowEntete.createCell(NUM_COL_CATEGORIE).setCellValue("Catégorie");
rowEntete.createCell(NUM_COL_AGENT).setCellValue("Agent");
rowEntete.createCell(NUM_COL_REGLEMENTAIRE).setCellValue("Réglementaire");
rowEntete.createCell(NUM_COL_COMMENTAIRE).setCellValue("Commentaire");
}
}