package de.superx.servlet; import static org.junit.Assert.assertEquals; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.graphics.PDXObject; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.test.context.ContextConfiguration; import de.superx.BaseDbTest; import de.superx.TestApplicationConfigPg; import de.superx.bin.ExecuteMask; import de.superx.sec.InputCheckRegistry; //@ContextConfiguration(classes = { TestApplicationConfigPg.class }) public class ExecuteMaskExcelTest extends BaseDbTest { private static String outputFilename; private static File outputFile; @BeforeClass public static void setup() throws IOException { outputFilename=String.join(File.separator, "test", "output_16000.xlsx"); InputCheckRegistry.registerDefaultChecks(); if (outputFilename != null) { outputFile = new File(outputFilename); if (outputFile.exists()) { outputFile.delete(); } } } @Test public void testXLS() throws Exception { String[] params = { "-tid:16000", "-out:" + outputFilename, "-user:admin", "-params:Köpfe oder Fälle ?=KoF_2&Stichtag=1&stylesheet=tabelle_xls.xsl&contenttype=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "-logger:" + logConfigPath, }; ExecuteMask.setMandantenID(MANDANTEN_ID); ExecuteMask.setMyWEBINFFilePath(SuperXManager.getWEB_INFPfad()); ExecuteMask.execute(params); validateXLSFile(); } private static void validateXLSFile() throws IOException, EncryptedDocumentException, InvalidFormatException { Assert.assertTrue("'" + outputFilename + " does not exist", outputFile.exists()); Assert.assertTrue("'" + outputFilename + " 0 Bytes", outputFile.length()>0); Workbook workbook = WorkbookFactory.create(outputFile); Sheet sheet = workbook.getSheetAt(0); DataFormatter dataFormatter = new DataFormatter(); Row firstRow = sheet.getRow(0); String cellValue = dataFormatter.formatCellValue(firstRow.getCell(0)); assertEquals("Cell content", "Studierende nach erstem Fach-/Hochschulsemester (Zeitreihe)", cellValue); } private static List getImagesFromResources(PDResources resources) throws IOException { List images = new ArrayList<>(); for (COSName xObjectName : resources.getXObjectNames()) { PDXObject xObject = resources.getXObject(xObjectName); if (xObject instanceof PDFormXObject) { images.addAll(getImagesFromResources(((PDFormXObject) xObject).getResources())); } else if (xObject instanceof PDImageXObject) { images.add(((PDImageXObject) xObject).getImage()); } } return images; } }