Java tutorial
package nc.noumea.mairie.appock.util; /*- * #%L * Logiciel de Gestion des approvisionnements et des stocks des fournitures administratives de la Mairie de * Nouma * %% * Copyright (C) 2017 - 2018 Mairie de Nouma, Nouvelle-Caldonie * %% * 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 nc.noumea.mairie.appock.core.security.AppUser; import nc.noumea.mairie.appock.entity.ArticleCatalogue; import nc.noumea.mairie.appock.entity.ArticleStock; import nc.noumea.mairie.appock.entity.Service; import nc.noumea.mairie.appock.entity.Stock; import nc.noumea.mairie.appock.service.impl.AppockBaseTest; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; public class StockSpreadsheetExporterImporterTest extends AppockBaseTest { @Test public void test() throws Exception { AppUser appUser = authHelper.getCurrentUser(); Service service = ajouterServiceToAppUser(appUser); List<ArticleStock> listeArticleStock = genererListeArticleStock(service); File exportFile = File.createTempFile("stock_test_export-", ".xlsx"); logger.info("Export pour inventaire : " + exportFile); // Export StockSpreadsheetExporter.exportToXls(service, listeArticleStock, catalogueService, new FileOutputStream(exportFile)); XSSFWorkbook workbookExport = new XSSFWorkbook(exportFile); XSSFSheet worksheet = workbookExport.getSheet("Inventaire"); Assert.assertNotNull(worksheet); // Verif for (int i = 0; i < worksheet.getLastRowNum(); i++) { XSSFRow row = worksheet.getRow(i); int col = 0; if (i == 0) { Assert.assertEquals("Photo", row.getCell(col++).getStringCellValue()); Assert.assertEquals("Rfrence", row.getCell(col++).getStringCellValue()); Assert.assertEquals("Libell", row.getCell(col++).getStringCellValue()); Assert.assertEquals("Stock\n Appock", row.getCell(col++).getStringCellValue()); Assert.assertEquals("Stock\n rel", row.getCell(col++).getStringCellValue()); } else { col++; Assert.assertEquals("REF_" + (i - 1), row.getCell(col++).getStringCellValue()); Assert.assertEquals("ARTICLE CATALOGUE " + (i - 1), row.getCell(col++).getStringCellValue()); Assert.assertEquals(i, (long) row.getCell(col++).getNumericCellValue()); } } // Import : toutes les quantits ont t augments de 1 File importFile1 = File.createTempFile("stock_test_import1-", ".xlsx"); logger.info("Import de l'inventaire : " + importFile1); OutputStream outputStream1 = new FileOutputStream(importFile1); XSSFWorkbook workbookImport = new XSSFWorkbook(exportFile); XSSFSheet worksheetImport = workbookImport.getSheet("Inventaire"); for (int i = 1; i < worksheetImport.getLastRowNum() + 1; i++) { XSSFRow row = worksheetImport.getRow(i); if (i == 5) { // Cellule en erreur row.getCell(4).setCellValue(" 05 "); } else { row.getCell(4).setCellValue(row.getCell(3).getNumericCellValue() + 1); } } workbookImport.write(outputStream1); outputStream1.flush(); outputStream1.close(); List<String> warnings = StockSpreadsheetImporter.importFromXls(service, stockService, new FileInputStream(importFile1)); // Verif Stock stock = stockService.findOne(service.getStock().getId()); Assert.assertEquals(10, stock.getListeArticleStock().size()); Assert.assertEquals(1, warnings.size()); logger.info("Warning message : " + warnings.get(0)); for (int i = 0; i < stock.getListeArticleStock().size(); i++) { ArticleStock articleStock = stock.getListeArticleStock().get(i); int oldQunatite = i + 1; if (i == 4) { // Quantit inchange Assert.assertEquals(oldQunatite, (int) articleStock.getQuantiteStock()); } else { Assert.assertEquals(oldQunatite + 1, (int) articleStock.getQuantiteStock()); } } } private List<ArticleStock> genererListeArticleStock(Service service) { Stock stock = createStock(service); List<ArticleStock> listeArticleStock = new ArrayList<>(); for (int i = 0; i < 10; i++) { ArticleCatalogue articleCatalogue = createArticleCatalogue("Article catalogue " + i, "REF_" + i); ArticleStock articleStock = createArticleStock(stock, articleCatalogue, i + 1); listeArticleStock.add(articleStock); } return listeArticleStock; } }