/*
* Copyright (C) 2009 Camptocamp
*
* This file is part of MapFish Server
*
* MapFish Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MapFish Server 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with MapFish Server. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mapfish.print;
import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import org.mapfish.print.config.Config;
import org.mapfish.print.config.layout.Block;
import org.mapfish.print.config.layout.Layout;
import org.mapfish.print.config.layout.MainPage;
import org.mapfish.print.config.layout.MapBlock;
import org.mapfish.print.utils.PJsonObject;
import org.pvalsecc.misc.FileUtilities;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.TreeSet;
public abstract class PdfTestCase extends PrintTestCase {
private static final int MARGIN = 40;
protected Document doc;
protected RenderingContext context;
private PdfWriter writer;
private OutputStream outFile;
public PdfTestCase(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
super.setUp();
PJsonObject spec = MapPrinter.parseSpec(FileUtilities.readWholeTextFile(new File("samples/spec.json")));
spec.getInternalObj().put("units", "meters");
doc = new Document(PageSize.A4);
String baseDir = PdfTestCase.class.getClassLoader().getResource(".").getFile();
outFile = new FileOutputStream(baseDir + getClass().getSimpleName() + "_" + getName() + ".pdf");
writer = PdfWriter.getInstance(doc, outFile);
writer.setFullCompression();
createContext(spec);
doc.setMargins(MARGIN, MARGIN, MARGIN, MARGIN * 3);
doc.open();
doc.newPage();
final Paragraph title = new Paragraph("Test class=" + getClass().getName() + " method=" + getName());
title.setSpacingAfter(20);
doc.add(title);
}
@Override
protected void tearDown() throws Exception {
doc.close();
writer.close();
outFile.close();
super.tearDown();
}
private void createContext(PJsonObject spec) {
Layout layout = new Layout();
MainPage mainPage = new MainPage();
final MapBlock mapBlock = new MapBlock();
mainPage.setItems(new ArrayList<Block>(Arrays.asList(mapBlock)));
layout.setMainPage(mainPage);
Config config = new Config();
config.setDpis(new TreeSet<Integer>(Arrays.asList(96, 190, 254)));
config.setScales(new TreeSet<Integer>(Arrays.asList(20000, 25000, 100000, 500000, 4000000)));
context = new RenderingContext(doc, writer, config, spec, null, layout, null);
}
}