org.mapfish.print.PdfTestCase.java Source code

Java tutorial

Introduction

Here is the source code for org.mapfish.print.PdfTestCase.java

Source

/*
 * 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);
    }
}