package fachlogik;
import java.awt.Image;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.StringTokenizer;
import javax.imageio.ImageIO;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopyFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
public class Pdf {
static HashMap parameter = new HashMap
();
static JasperReport jasperReport;
static JasperPrint jPrint;
static Image wappen;
static byte[] pdfKompl_byte = null;
public static void creat_pdf(String aufnahmeausschuss, String aufnahmestr,
String plzort, String aufnahmeort, String ortsteil, String gmd,
String gmk, String flst, String str, String nr, String bwNr,
String stag, String bwert, String entw, String nuta, String beit,
String bauw, String gez, String gfz, String grz, String bmz,
String flae, String gtie, String gbrei, String verg, String verf,
String bod, String acza, String grza, String aufw, String weer,
String erstellungsausschuss, String erstellungsort,
String plzOrtStrNr, String verordnung, String fundstelle,
String stichtag, String farbe) {
String name;
if (aufnahmeausschuss.indexOf("Kreis")>=0)
name = " der Kreisfreien Stadt " + aufnahmeort + " ";
else
name = " im Landkreis " + aufnahmeausschuss + " ";
parameter.put("aAufnahmeAusschuss", name);
parameter.put("aStrAufnahmeAusschuss", aufnahmestr);
parameter.put("aOrtAufnahmeAusschuss", plzort);
if (erstellungsausschuss.indexOf("Kreis")>=0)
name = "Gutachterausschuss der Kreisfreien Stadt " + erstellungsort;
else {
if (erstellungsausschuss.indexOf("Oberer")>=0){
name = "Oberer Gutachterausschuss Staatsbetrieb Geobasisinformation und Vermessung Sachsen";
} else
name = "Gutachterausschuss des Landkreis "
+ erstellungsausschuss;
}
parameter.put("aErstellungsAusschuss", name);
parameter.put("aPLZOrtStrNrErstellungsAusschuss", plzOrtStrNr);
parameter.put("aOrtsteil", ortsteil);
parameter.put("aStr", str);
parameter.put("aHnr", nr);
parameter.put("aGmd", gmd);
parameter.put("aGmk", gmk);
parameter.put("aFlst", flst);
parameter.put("aBwNr", bwNr);
parameter.put("aSTag", stag);
parameter.put("aBwert", bwert + " ");
parameter.put("aEntw", entw);
parameter.put("aNuta", nuta);
parameter.put("aBeit", beit);
parameter.put("aBauw", bauw);
parameter.put("aGez", gez);
parameter.put("aGfz", gfz);
parameter.put("aGrz", grz);
parameter.put("aBmz", bmz);
parameter.put("aFlae", flae);
parameter.put("aGtie", gtie + " m");
parameter.put("aGbrei", gbrei + " m ");
parameter.put("aVerg", verg);
parameter.put("aVerf", verf);
parameter.put("aBod", bod);
parameter.put("aAcza", acza);
parameter.put("aGrza", grz);
parameter.put("aAufw", aufw);
parameter.put("aWeer", weer);
Image wappen = null;
try {
if (farbe.indexOf("w")>=0){
wappen = ImageIO.read(Datenbank.template("wappen_sw"));
} else {
wappen = ImageIO.read(Datenbank.template("wappen_bunt"));
}
} catch (IOException e) {
e.printStackTrace();
}
parameter.put("aWappen", wappen);
String fund = verordnung + " " + fundstelle + " ermittelt.";
parameter.put("aVerordnungFundstelleErmitteln.", fund);
try {
Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document, baos);
String file = (Datenbank.template("Sachdaten")).toString();
jasperReport = JasperCompileManager.compileReport(file);
jPrint = JasperFillManager.fillReport(jasperReport, parameter,
new JREmptyDataSource());
pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);
HttpServletResponse response = Datenbank.getResponse();
document.close();
response.setContentType("application/pdf");
response.setContentLength(baos.size());
ServletOutputStream servletOutputStream = response
.getOutputStream();
baos.writeTo(servletOutputStream);
servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
servletOutputStream.flush();
System.out.println(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss")
.format(new Date()));
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void creat_pdf(String aufnahmeausschuss, String aufnahmestr,
String plzort, String aufnahmeort, String bbox,
String kartengrundlage, String massstab, String gmd, String gmk,
String flst, String bwNr, String erstellungsausschuss,
String erstellungsort, String plzOrtStrNr, String verordnung,
String fundstelle, String stichtag, String format, String farbe) {
String name = null;
if (aufnahmeausschuss.indexOf("Kreis")>=0)
name = " der Kreisfreien Stadt " + aufnahmeort + " ";
else
name = " im Landkreis " + aufnahmeausschuss + " ";
parameter.put("aAufnahmeAusschuss", name);
parameter.put("aStrAufnahmeAusschuss", aufnahmestr);
parameter.put("aOrtAufnahmeAusschuss", plzort);
if (erstellungsausschuss.indexOf("Kreis")>=0)
name = "Gutachterausschuss der Kreisfreien Stadt " + erstellungsort
+ " ";
else {
if (erstellungsausschuss.indexOf("Oberer")>=0){
name = " "
+ "Oberer Gutachterausschuss Staatsbetrieb Geobasisinformation und Vermessung Sachsen";
} else
name = "Gutachterausschuss des Landkreis "
+ erstellungsausschuss + " ";
}
parameter.put("aErstellungsAusschuss", name);
parameter.put("aPLZOrtStrNrErstellungsAusschuss", plzOrtStrNr);
parameter.put("aGmd", gmd);
parameter.put("aGmk", gmk);
parameter.put("aFlst", flst);
parameter.put("aBwNr", bwNr);
parameter.put("aMaßstab", massstab);
parameter.put("aKartengrundlage", kartengrundlage);
StringTokenizer tokenizer;
tokenizer = new StringTokenizer(bbox, ",");
String rw1 = tokenizer.nextToken();
String hw1 = tokenizer.nextToken();
String rw2 = tokenizer.nextToken();
String hw2 = tokenizer.nextToken();
parameter.put("aRw1", rw1);
parameter.put("aHw1", hw1);
parameter.put("aRw2", rw2);
parameter.put("aHw2", hw2);
String fund = verordnung + " " + fundstelle + " mit Stichtag zum "
+ stichtag + " ermittelt.";
parameter.put(
"aVerordnungFundstelleErmittelnMitStichtagzum..ermittelt.",
fund);
try {
if (farbe.indexOf("w")>=0){
wappen = ImageIO.read(Datenbank.template("wappen_sw"));
} else {
wappen = ImageIO.read(Datenbank.template("wappen_bunt"));
}
parameter.put("aWappen", wappen);
tokenizer = new StringTokenizer(massstab, ":");
String massstabszahl_string = tokenizer.nextToken();
massstabszahl_string = tokenizer.nextToken();
Image massstabsleiste = ImageIO.read(Datenbank
.template(massstabszahl_string));
parameter.put("aMassstabsBild", massstabsleiste);
format = format.replaceAll("a", "");
format = format.replaceAll("A", "");
int formatzahl = Integer.parseInt(format);
String template = "";
switch (formatzahl) {
case 0: {
template = (Datenbank.template("A0")).toString();
}
break;
case 1: {
template = (Datenbank.template("A1")).toString();
}
break;
case 2: {
template = (Datenbank.template("A2")).toString();
}
break;
case 3: {
template = (Datenbank.template("A3")).toString();
}
break;
case 4: {
template = (Datenbank.template("A4")).toString();
}
break;
}
jasperReport = JasperCompileManager.compileReport(template);
jPrint = JasperFillManager.fillReport(jasperReport, parameter,
new JREmptyDataSource());
pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);
PdfReader reader1 = new PdfReader(pdfKompl_byte);
HttpServletResponse response = Datenbank.getResponse();
ServletOutputStream servletOutputStream = response
.getOutputStream();
PdfCopyFields copy = new PdfCopyFields(servletOutputStream);
copy.addDocument(reader1);
copy.close();
servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
servletOutputStream.flush();
} catch (JRException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}