You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.4 KiB
93 lines
3.4 KiB
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<RenderedImage> getImagesFromResources(PDResources resources) throws IOException { |
|
List<RenderedImage> 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; |
|
} |
|
}
|
|
|