Save This Page
Home » iText-2.1.7 » com.lowagie » text » xml » [javadoc | source]
    1   /*
    2    * Copyright 2002 by Matt Benson.
    3    *
    4    * The contents of this file are subject to the Mozilla Public License Version 1.1
    5    * (the "License"); you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at http://www.mozilla.org/MPL/
    7    *
    8    * Software distributed under the License is distributed on an "AS IS" basis,
    9    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   10    * for the specific language governing rights and limitations under the License.
   11    *
   12    * The Original Code is 'iText, a free JAVA-PDF library'.
   13    *
   14    * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
   15    * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
   16    * All Rights Reserved.
   17    * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
   18    * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
   19    *
   20    * Contributor(s): all the names of the contributors are added in the source code
   21    * where applicable.
   22    *
   23    * Alternatively, the contents of this file may be used under the terms of the
   24    * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
   25    * provisions of LGPL are applicable instead of those above.  If you wish to
   26    * allow use of your version of this file only under the terms of the LGPL
   27    * License and not to allow others to use your version of this file under
   28    * the MPL, indicate your decision by deleting the provisions above and
   29    * replace them with the notice and other provisions required by the LGPL.
   30    * If you do not delete the provisions above, a recipient may use your version
   31    * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
   32    *
   33    * This library is free software; you can redistribute it and/or modify it
   34    * under the terms of the MPL as stated above or under the terms of the GNU
   35    * Library General Public License as published by the Free Software Foundation;
   36    * either version 2 of the License, or any later version.
   37    *
   38    * This library is distributed in the hope that it will be useful, but WITHOUT
   39    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   40    * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
   41    * details.
   42    *
   43    * If you didn't download this code from the following link, you should check if
   44    * you aren't using an obsolete version:
   45    * http://www.lowagie.com/iText/
   46    */
   47   
   48   package com.lowagie.text.xml;
   49   
   50   
   51   import java.lang.reflect.Field;
   52   import java.lang.reflect.Modifier;
   53   import java.io.InputStream;
   54   import java.io.OutputStream;
   55   
   56   import com.lowagie.text.Document;
   57   import com.lowagie.text.PageSize;
   58   import com.lowagie.text.Rectangle;
   59   import com.lowagie.text.DocumentException;
   60   
   61   
   62   /**
   63    * Generates an specific file from an iText XML file.
   64    *
   65    * @version 1.0
   66    * @author <a href="mailto:orangeherbert@users.sourceforge.net">Matt Benson</a>
   67    */
   68   public abstract class XmlToXXX
   69   {
   70   	
   71   	protected Rectangle pageSize;
   72   	
   73   	
   74   /**
   75    * Construct an <CODE>XmlToXXX</CODE> with the default page size.
   76    */
   77   	public XmlToXXX()
   78   	{
   79   		this(PageSize.LETTER);
   80   	}//end default constructor
   81   	
   82   	
   83   /**
   84    * Construct an <CODE>XmlToXXX</CODE> with the specified page size.
   85    * @param pageSize   <CODE>String</CODE> page size name from
   86    * <CODE>com.lowagie.text.PageSize</CODE>.
   87    */
   88   	public XmlToXXX(String pageSize)
   89   	{
   90   		this(getPageSize(pageSize));
   91   	}//end constructor(String)
   92   	
   93   	
   94   	private XmlToXXX(Rectangle pageSize)
   95   	{
   96   		this.pageSize = pageSize;
   97   	}//end constructor(Rectangle)
   98   	
   99   	
  100   /**
  101    * Parse the XML from the specified <CODE>InputStream</CODE>, writing to the
  102    * specified <CODE>OutputStream</CODE>.
  103    * @param in    the <CODE>InputStream</CODE> from which the XML is read.
  104    * @param out   the <CODE>OutputStream</CODE> to which the result is written.
  105    * @throws DocumentException if document errors occur.
  106    */
  107   	public final void parse(InputStream in, OutputStream out)
  108   	 throws DocumentException
  109   	{
  110   		Document doc = new Document(pageSize);
  111   
  112   		addWriter(doc, out);
  113   		XmlParser.parse(doc, in);
  114   	}//end parse
  115   	
  116   	
  117   	private static Rectangle getPageSize(String pageSize)
  118   	{
  119   		Rectangle result = PageSize.LETTER;
  120   		Field fld = null;
  121   		try
  122   		{
  123   			fld = PageSize.class.getDeclaredField(pageSize.toUpperCase());
  124   			result = (fld != null
  125   			 && Modifier.isStatic(fld.getModifiers())
  126   			 && fld.getType().equals(Rectangle.class)) ? (Rectangle)(fld.get(null))
  127   			 : result;
  128   		}//end try to get field
  129   		catch (Exception ex)
  130   		{
  131   			System.err.println(ex.getMessage());
  132   		}//end catch Exception
  133   		return result;
  134   	}//end getPageSize
  135   	
  136   
  137   /**
  138    * Add a <CODE>DocWriter</CODE> for the specified <CODE>Document</CODE> and
  139    * <CODE>OutputStream</CODE>.
  140    * @param doc The document to which content will be added
  141    * @param out The outputstream to which the document will be sent
  142    * @throws DocumentException if document errors occur.
  143    */	
  144   	protected abstract void addWriter(Document doc, OutputStream out)
  145   	 throws DocumentException;
  146   	
  147   }//end class XmlToXXX

Save This Page
Home » iText-2.1.7 » com.lowagie » text » xml » [javadoc | source]