Java tutorial
/* * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.verifier.doc; import java.io.OutputStream; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.drools.verifier.misc.DrlPackageParser; import org.drools.verifier.misc.DrlRuleParser; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.HeaderFooter; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.PdfWriter; public class DroolsDocsBuilder { protected final String currentDate = getFormatter().format(new Date()); protected static Format getFormatter() { return new SimpleDateFormat(getDateFormatMask()); } private final DrlPackageParser packageData; public DroolsDocsBuilder(String packageDrl) throws ParseException { this.packageData = DrlPackageParser.findPackageDataFromDrl(packageDrl); } protected DroolsDocsBuilder(DrlPackageParser packageData) { this.packageData = packageData; } public static DroolsDocsBuilder getInstance(String packageDrl) throws ParseException { return new DroolsDocsBuilder(packageDrl); } public static DroolsDocsBuilder getInstance(DrlPackageParser packageData) { return new DroolsDocsBuilder(packageData); } public void writePDF(OutputStream out) { // TODO: Use i18n! Document document = new Document(); try { PdfWriter.getInstance(document, out); HeaderFooter footer = DroolsDocsComponentFactory.createFooter(packageData.getName()); document.setFooter(footer); document.addTitle(packageData.getName().toUpperCase()); document.open(); // First page, documentation info. DroolsDocsComponentFactory.createFirstPage(document, currentDate, packageData); document.newPage(); // List index of the rules document.add(new Phrase("Table of Contents")); document.add(DroolsDocsComponentFactory.createContents(packageData.getRules())); document.newPage(); for (DrlRuleParser ruleData : packageData.getRules()) { DroolsDocsComponentFactory.newRulePage(document, packageData.getName(), ruleData); } } catch (DocumentException de) { System.err.println(de.getMessage()); } document.close(); } public static String getDateFormatMask() { String fmt = System.getProperty("drools.dateformat"); if (fmt == null) { fmt = "dd-MMM-yyyy"; } return fmt; } }