SuperX-Kernmodul
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

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;
}
}