You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by fo...@locus.apache.org on 2000/03/06 22:30:04 UTC

cvs commit: xml-fop/lib/bin antRun

fotis       00/03/06 13:30:04

  Added:       lib      Xslt.class Xslt.java ant.jar xml.jar
               lib/bin  antRun
  Log:
  Switching from make to Ant
  
  Revision  Changes    Path
  1.1                  xml-fop/lib/Xslt.class
  
  	<<Binary file>>
  
  
  1.1                  xml-fop/lib/Xslt.java
  
  Index: Xslt.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
          
  //package org.apache.tools.ant.taskdefs;
  
  import org.apache.tools.ant.Task;
  import java.net.*;
  import java.io.*;
  import org.apache.xalan.xslt.*;
  
  /**
   * Task to call the XSLT processor Xalan (part of xml.apache.org), which converts xml files  
   * from a source to an output using a stylesheet file
   * 
   * <p>
   * This task can take the following arguments:
   * <ul>
   * <li>infile
   * <li>xsltfile
   * <li>outfile
   * <li>smart
   * </ul>
   * <p>  
   * Of these arguments, <b>infile, outfile</b> and <b>xsltfile</b> are required.
   * smart defaults to 'no'. The other allowed value is 'yes'. If smart is set to 'yes'
   * xalan is only called if either the outfile is older than the infile or the stylesheet
   * or the outfile doesn't exist.
   * <p>
   * @author Fotis Jannidis <a href="mailto:fotis@jannidis.de">fotis@jannidis.de</a>
   */
  
  
  public class Xslt extends Task {
          private String infile, outfile, xsltfile;
          private String smart = "no";  //defaults to do conversion everytime task is called
  
  
      /**
       * Calls Xalan and does the transformation
       *
       */
  
          private void transform(String xmlSourceURL, String xslURL, String outputURL)
                                                  throws java.io.IOException, 
                                                             java.net.MalformedURLException, 
                                                             org.xml.sax.SAXException {
                                            
                  // Use XSLTProcessor to instantiate an XSLTProcessor.
                  org.apache.xalan.xslt.XSLTProcessor processor =
                                             org.apache.xalan.xslt.XSLTProcessorFactory.getProcessor();
                                             
                  // Create the 3 objects the XSLTProcessor needs to perform the transformation.
                  org.apache.xalan.xslt.XSLTInputSource xmlSource = 
                                                            new org.apache.xalan.xslt.XSLTInputSource (infile);
                  org.apache.xalan.xslt.XSLTInputSource xslSheet = 
                                                           new org.apache.xalan.xslt.XSLTInputSource (xsltfile);
                  org.apache.xalan.xslt.XSLTResultTarget xmlResult = 
                                                           new org.apache.xalan.xslt.XSLTResultTarget (outfile);
  
                  // Perform the transformation.
                  System.out.println("============================");
                  System.out.println("xslt \nin: " + infile + "\nstyle: " + xsltfile + "\nout: " + outfile);
                  System.out.println("============================");
                  processor.process(xmlSource, xslSheet, xmlResult);
  
          }
          
      /**
       * Sets the input file
       *
       */
          public void setInfile (String infile) {
                  this.infile = infile;
          }
  
      /**
       * Sets the stylesheet file
       *
       */
          public void setXsltfile (String xsltfile) {
                  this.xsltfile = xsltfile;
          }
          
      /**
       * Sets the output file
       *
       */
          public void setOutfile (String outfile) {
                  this.outfile = outfile;
          }
          
      /**
       * Sets the value for smart 
       *
       * @param option valid values:
       * <ul>
       * <li>yes: check whether output file is older than input or stylesheet
       * <li>no: (default) do conversion everytime task is called
       * </ul>
       */
          public void setSmart (String smart) {
                  this.smart = smart;
          }
          
  
      /**
       *  Catches the errors transform() can throw and 
       *  returns meaningfull error messages
       */
          private void startTransform () {
                  try {
                          transform (infile,xsltfile,outfile);    
                  } catch (org.xml.sax.SAXException saxerror) {
                          System.out.println("SAX Error: " + saxerror);
                  } catch (MalformedURLException urlerror) {
                          System.out.println("URL Error: " + urlerror);                           
                  } catch (IOException ioerror) {
                          System.out.println("IO Error: " + ioerror);             
                  }
          }
          
      /**
       *  Main method, which is called by ant. 
       *  Checks for the value of smart and calls startTransform accordingly
       */
          public void execute () throws org.apache.tools.ant.BuildException {
                  if (smart.equals("no")) {
                          startTransform();
                  } else if (smart.equals("yes")) {
                          File outfileF = new File (outfile);
                          //checks for existence of output file
                          if (outfileF.exists()) {
                                  //checks whether output file is older than input file or xslt stylesheet file
                                  if ((outfileF.lastModified() < new File(infile).lastModified()) | (outfileF.lastModified() < new
  File(xsltfile).lastModified())) {
                                          startTransform();       
                                  } 
                          } else {
                                  startTransform();
                          }
                  //returns error message, if smart has another value as 'yes' or 'no'
                  } else {
                          System.err.println("Error: Allowed values for the attribute smart are 'yes' or 'no'");
                  }
                  
          }
          //quick access for debugging    
          //usage XSLT infile xsltfile outfile (smart is 'yes') 
          /*
          public static void main (String args[]) {
                  Xslt xslt = new Xslt();
                  xslt.setInfile(args[0]);
                  xslt.setXsltfile(args[1]);
                  xslt.setOutfile(args[2]);
                  xslt.setSmart("yes");
                  xslt.execute();
          } 
          */
          
  }
  
  
  
  1.1                  xml-fop/lib/ant.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-fop/lib/xml.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-fop/lib/bin/antRun
  
  Index: antRun
  ===================================================================
  #! /bin/sh
  
  # Args: DIR command
  cd $1
  CMD=$2
  shift
  shift
  
  if test -f $CMD.sh; then
    CMD="sh $CMD.sh"
  fi
  
  echo $CMD $@ | sh