// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) fieldsfirst lnc
// Source File Name: StyleSheet.java
package com.icl.saxon;
import com.icl.saxon.expr.StringValue;
import com.icl.saxon.om.NamePool;
import com.icl.saxon.style.TerminationException;
import com.icl.saxon.trace.SimpleTraceListener;
import com.icl.saxon.trace.TraceListener;
import java.io.File;
import java.io.PrintStream;
import java.util.Date;
import java.util.Properties;
import javax.xml.transform.*;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
// Referenced classes of package com.icl.saxon:
// TransformerFactoryImpl, ParameterSet, StandardURIResolver, ExtendedInputSource,
// Controller, Version, Loader
public class StyleSheet
{
protected TransformerFactoryImpl factory;
protected NamePool namePool;
boolean showTime;
int repeat;
public StyleSheet()
{
/* 28*/ factory = new TransformerFactoryImpl();
/* 30*/ namePool = NamePool.getDefaultNamePool();
/* 31*/ showTime = false;
/* 32*/ repeat = 1;
}
public static void main(String args[])
throws Exception
{
/* 47*/ (new StyleSheet()).doMain(args, new StyleSheet(), " java com.icl.saxon.StyleSheet");
}
protected void doMain(String as[], StyleSheet stylesheet, String s)
{
/* 61*/ Object obj = null;
/* 62*/ String s2 = null;
/* 63*/ File file = null;
/* 64*/ Object obj1 = null;
/* 65*/ File file1 = null;
/* 66*/ boolean flag = false;
/* 67*/ ParameterSet parameterset = new ParameterSet();
/* 68*/ Properties properties = new Properties();
/* 69*/ String s3 = null;
/* 70*/ boolean flag1 = false;
/* 71*/ boolean flag2 = false;
/* 76*/ try
{
/* 76*/ int i = 0;
/* 78*/ do
{
/* 78*/ if(i >= as.length)
/* 78*/ badUsage(s, "No source file name");
/* 80*/ if(as[i].charAt(0) != '-')
/* 82*/ break;
/* 82*/ if(as[i].equals("-a"))
{
/* 83*/ flag1 = true;
/* 84*/ i++;
} else
/* 87*/ if(as[i].equals("-ds"))
{
/* 88*/ factory.setAttribute("http://icl.com/saxon/feature/treeModel", new Integer(0));
/* 91*/ i++;
} else
/* 94*/ if(as[i].equals("-dt"))
{
/* 95*/ factory.setAttribute("http://icl.com/saxon/feature/treeModel", new Integer(1));
/* 98*/ i++;
} else
/* 102*/ if(as[i].equals("-l"))
{
/* 103*/ factory.setAttribute("http://icl.com/saxon/feature/linenumbering", new Boolean(true));
/* 106*/ i++;
} else
/* 109*/ if(as[i].equals("-u"))
{
/* 110*/ flag = true;
/* 111*/ i++;
} else
/* 114*/ if(as[i].equals("-t"))
{
/* 115*/ System.err.println(Version.getProductName());
/* 116*/ System.err.println("Java version " + System.getProperty("java.version"));
/* 117*/ factory.setAttribute("http://icl.com/saxon/feature/timing", new Boolean(true));
/* 121*/ Loader.setTracing(true);
/* 122*/ showTime = true;
/* 123*/ i++;
} else
/* 126*/ if(as[i].equals("-3"))
{
/* 127*/ i++;
/* 128*/ repeat = 3;
} else
/* 131*/ if(as[i].equals("-9"))
{
/* 132*/ i++;
/* 133*/ repeat = 9;
} else
/* 136*/ if(as[i].equals("-o"))
{
/* 137*/ i++;
/* 138*/ if(as.length < i + 2)
/* 138*/ badUsage(s, "No output file name");
/* 139*/ s3 = as[i++];
} else
/* 142*/ if(as[i].equals("-x"))
{
/* 143*/ i++;
/* 144*/ if(as.length < i + 2)
/* 144*/ badUsage(s, "No source parser class");
/* 145*/ String s4 = as[i++];
/* 146*/ factory.setAttribute("http://icl.com/saxon/feature/sourceParserClass", s4);
} else
/* 151*/ if(as[i].equals("-y"))
{
/* 152*/ i++;
/* 153*/ if(as.length < i + 2)
/* 153*/ badUsage(s, "No style parser class");
/* 154*/ String s5 = as[i++];
/* 155*/ factory.setAttribute("http://icl.com/saxon/feature/styleParserClass", s5);
} else
/* 160*/ if(as[i].equals("-r"))
{
/* 161*/ i++;
/* 162*/ if(as.length < i + 2)
/* 162*/ badUsage(s, "No URIResolver class");
/* 163*/ String s6 = as[i++];
/* 164*/ factory.setURIResolver(makeURIResolver(s6));
} else
/* 167*/ if(as[i].equals("-T"))
{
/* 168*/ i++;
/* 169*/ SimpleTraceListener simpletracelistener = new SimpleTraceListener();
/* 170*/ factory.setAttribute("http://icl.com/saxon/feature/traceListener", simpletracelistener);
/* 173*/ factory.setAttribute("http://icl.com/saxon/feature/linenumbering", Boolean.TRUE);
} else
/* 178*/ if(as[i].equals("-TL"))
{
/* 179*/ i++;
/* 180*/ if(as.length < i + 2)
/* 180*/ badUsage(s, "No TraceListener class");
/* 181*/ TraceListener tracelistener = makeTraceListener(as[i++]);
/* 182*/ factory.setAttribute("http://icl.com/saxon/feature/traceListener", tracelistener);
/* 185*/ factory.setAttribute("http://icl.com/saxon/feature/linenumbering", Boolean.TRUE);
} else
/* 190*/ if(as[i].equals("-w0"))
{
/* 191*/ i++;
/* 192*/ factory.setAttribute("http://icl.com/saxon/feature/recoveryPolicy", new Integer(0));
} else
/* 196*/ if(as[i].equals("-w1"))
{
/* 197*/ i++;
/* 198*/ factory.setAttribute("http://icl.com/saxon/feature/recoveryPolicy", new Integer(1));
} else
/* 202*/ if(as[i].equals("-w2"))
{
/* 203*/ i++;
/* 204*/ factory.setAttribute("http://icl.com/saxon/feature/recoveryPolicy", new Integer(2));
} else
/* 209*/ if(as[i].equals("-m"))
{
/* 210*/ i++;
/* 211*/ if(as.length < i + 2)
/* 211*/ badUsage(s, "No message Emitter class");
/* 212*/ factory.setAttribute("http://icl.com/saxon/feature/messageEmitterClass", as[i++]);
} else
/* 217*/ if(as[i].equals("-noext"))
{
/* 218*/ i++;
/* 219*/ factory.setAttribute("http://icl.com/saxon/feature/allow-external-functions", new Boolean(false));
} else
{
/* 224*/ badUsage(s, "Unknown option " + as[i]);
}
} while(true);
/* 230*/ if(as.length < i + 1)
/* 230*/ badUsage(s, "No source file name");
/* 231*/ String s1 = as[i++];
/* 233*/ if(!flag1)
{
/* 234*/ if(as.length < i + 1)
/* 234*/ badUsage(s, "No stylesheet file name");
/* 235*/ s2 = as[i++];
}
/* 238*/ for(int j = i; j < as.length; j++)
{
/* 239*/ String s7 = as[j];
/* 240*/ int k = s7.indexOf("=");
/* 241*/ if(k < 1 || k >= s7.length() - 1)
/* 241*/ badUsage(s, "Bad param=value pair on command line");
/* 242*/ String s8 = s7.substring(0, k);
/* 243*/ int i1 = namePool.allocate("", "", s8);
/* 244*/ parameterset.put(i1, new StringValue(s7.substring(k + 1)));
}
/* 247*/ Object obj2 = null;
/* 249*/ if(flag || s1.startsWith("http:") || s1.startsWith("file:"))
{
/* 250*/ obj2 = factory.getURIResolver().resolve(s1, null);
/* 251*/ if(obj2 == null)
/* 253*/ obj2 = (new StandardURIResolver(factory)).resolve(s1, null);
} else
{
/* 257*/ file = new File(s1);
/* 258*/ if(!file.exists())
/* 259*/ quit("Source file " + file + " does not exist", 2);
/* 261*/ if(file.isDirectory())
{
/* 262*/ flag2 = true;
/* 263*/ if(s3 == null)
/* 264*/ quit("To process a directory, -o must be specified", 2);
/* 265*/ else
/* 265*/ if(s3.equals(s1))
{
/* 266*/ quit("Output directory must be different from input", 2);
} else
{
/* 268*/ file1 = new File(s3);
/* 269*/ if(!file1.isDirectory())
/* 270*/ quit("Input is a directory, but output is not", 2);
}
} else
{
/* 274*/ ExtendedInputSource extendedinputsource = new ExtendedInputSource(file);
/* 275*/ obj2 = new SAXSource(factory.getSourceParser(), extendedinputsource);
/* 276*/ extendedinputsource.setEstimatedLength((int)file.length());
}
}
/* 280*/ if(s3 != null && !flag2)
{
/* 281*/ file1 = new File(s3);
/* 282*/ if(file1.isDirectory())
/* 283*/ quit("Output is a directory, but input is not", 2);
}
/* 287*/ if(flag1)
{
/* 288*/ if(flag2)
/* 289*/ processDirectoryAssoc(file, file1, parameterset);
/* 291*/ else
/* 291*/ processFileAssoc(((Source) (obj2)), null, file1, parameterset);
} else
{
/* 295*/ long l = (new Date()).getTime();
Object obj3;
/* 298*/ if(flag || s2.startsWith("http:") || s2.startsWith("file:"))
{
/* 300*/ obj3 = factory.getURIResolver().resolve(s2, null);
/* 301*/ if(obj3 == null)
/* 303*/ obj2 = (new StandardURIResolver(factory)).resolve(s2, null);
} else
{
/* 307*/ File file2 = new File(s2);
/* 308*/ if(!file2.exists())
/* 309*/ quit("Stylesheet file " + file2 + " does not exist", 2);
/* 311*/ ExtendedInputSource extendedinputsource1 = new ExtendedInputSource(file2);
/* 312*/ obj3 = new SAXSource(factory.getStyleParser(), extendedinputsource1);
}
/* 315*/ if(obj3 == null)
/* 316*/ quit("URIResolver for stylesheet file must return a Source", 2);
/* 319*/ Templates templates = factory.newTemplates(((Source) (obj3)));
/* 321*/ if(showTime)
{
/* 322*/ long l1 = (new Date()).getTime();
/* 323*/ System.err.println("Preparation time: " + (l1 - l) + " milliseconds");
/* 324*/ l = l1;
}
/* 327*/ if(flag2)
/* 328*/ processDirectory(file, templates, file1, parameterset);
/* 330*/ else
/* 330*/ processFile(((Source) (obj2)), templates, file1, parameterset);
}
}
/* 334*/ catch(TerminationException terminationexception)
{
/* 334*/ quit(terminationexception.getMessage(), 1);
}
/* 336*/ catch(TransformerException transformerexception)
{
/* 336*/ quit("Transformation failed: " + transformerexception.getMessage(), 2);
}
/* 338*/ catch(Exception exception)
{
/* 338*/ exception.printStackTrace();
}
}
protected static void quit(String s, int i)
{
/* 350*/ System.err.println(s);
/* 351*/ System.exit(i);
}
public void processDirectoryAssoc(File file, File file1, ParameterSet parameterset)
throws Exception
{
/* 362*/ String as[] = file.list();
/* 363*/ int i = 0;
/* 364*/ for(int j = 0; j < as.length; j++)
{
/* 365*/ File file2 = new File(file, as[j]);
/* 366*/ if(!file2.isDirectory())
{
/* 367*/ String s = file2.getName();
/* 369*/ try
{
/* 369*/ ExtendedInputSource extendedinputsource = new ExtendedInputSource(file2);
/* 370*/ SAXSource saxsource = new SAXSource(factory.getSourceParser(), extendedinputsource);
/* 371*/ processFileAssoc(saxsource, s, file1, parameterset);
}
/* 373*/ catch(TransformerException transformerexception)
{
/* 373*/ i++;
/* 374*/ System.err.println("While processing " + s + ": " + transformerexception.getMessage() + "\n");
}
}
}
/* 379*/ if(i > 0)
/* 380*/ throw new TransformerException(i + " transformation" + (i != 1 ? "s" : "") + " failed");
/* 383*/ else
/* 383*/ return;
}
private File makeOutputFile(File file, String s, Templates templates)
{
/* 392*/ String s1 = templates.getOutputProperties().getProperty("media-type");
/* 394*/ String s2 = ".xml";
/* 395*/ if("text/html".equals(s1))
/* 396*/ s2 = ".html";
/* 397*/ else
/* 397*/ if("text/plain".equals(s1))
/* 398*/ s2 = ".txt";
/* 400*/ String s3 = s;
/* 401*/ if(s.endsWith(".xml") || s.endsWith(".XML"))
/* 402*/ s3 = s.substring(0, s.length() - 4);
/* 404*/ return new File(file, s3 + s2);
}
public void processFileAssoc(Source source, String s, File file, ParameterSet parameterset)
throws TransformerException
{
/* 416*/ if(showTime)
/* 417*/ System.err.println("Processing " + source.getSystemId() + " using associated stylesheet");
/* 419*/ long l = (new Date()).getTime();
/* 421*/ Source source1 = factory.getAssociatedStylesheet(source, null, null, null);
/* 422*/ Templates templates = factory.newTemplates(source1);
/* 423*/ if(showTime)
/* 424*/ System.err.println("Prepared associated stylesheet " + source1.getSystemId());
/* 426*/ Transformer transformer = templates.newTransformer();
/* 427*/ ((Controller)transformer).setParams(parameterset);
/* 429*/ File file1 = file;
/* 431*/ if(file1 != null && file1.isDirectory())
/* 432*/ file1 = makeOutputFile(file1, s, templates);
/* 435*/ StreamResult streamresult = file1 != null ? new StreamResult(file1) : new StreamResult(System.out);
/* 439*/ try
{
/* 439*/ transformer.transform(source, streamresult);
}
/* 441*/ catch(TerminationException terminationexception)
{
/* 441*/ throw terminationexception;
}
/* 444*/ catch(TransformerException transformerexception)
{
/* 444*/ throw new TransformerException("Run-time errors were reported");
}
/* 447*/ if(showTime)
{
/* 448*/ long l1 = (new Date()).getTime();
/* 449*/ System.err.println("Execution time: " + (l1 - l) + " milliseconds");
/* 450*/ l = l1;
}
}
public void processDirectory(File file, Templates templates, File file1, ParameterSet parameterset)
throws TransformerException
{
/* 463*/ String as[] = file.list();
/* 464*/ int i = 0;
/* 465*/ for(int j = 0; j < as.length; j++)
{
/* 466*/ File file2 = new File(file, as[j]);
/* 467*/ String s = file2.getName();
/* 469*/ try
{
/* 469*/ if(!file2.isDirectory())
{
/* 470*/ File file3 = makeOutputFile(file1, s, templates);
/* 471*/ ExtendedInputSource extendedinputsource = new ExtendedInputSource(file2);
/* 472*/ SAXSource saxsource = new SAXSource(factory.getSourceParser(), extendedinputsource);
/* 473*/ processFile(saxsource, templates, file3, parameterset);
}
}
/* 476*/ catch(TransformerException transformerexception)
{
/* 476*/ i++;
/* 477*/ System.err.println("While processing " + s + ": " + transformerexception.getMessage() + "\n");
}
}
/* 480*/ if(i > 0)
/* 481*/ throw new TransformerException(i + " transformation" + (i != 1 ? "s" : "") + " failed");
/* 484*/ else
/* 484*/ return;
}
public void processFile(Source source, Templates templates, File file, ParameterSet parameterset)
throws TransformerException
{
/* 494*/ for(int i = 0; i < repeat; i++)
{
/* 495*/ if(showTime)
/* 496*/ System.err.println("Processing " + source.getSystemId());
/* 498*/ long l = (new Date()).getTime();
/* 499*/ Transformer transformer = templates.newTransformer();
/* 500*/ ((Controller)transformer).setParams(parameterset);
/* 502*/ StreamResult streamresult = file != null ? new StreamResult(file) : new StreamResult(System.out);
/* 508*/ try
{
/* 508*/ transformer.transform(source, streamresult);
}
/* 510*/ catch(TerminationException terminationexception)
{
/* 510*/ throw terminationexception;
}
/* 513*/ catch(TransformerException transformerexception)
{
/* 513*/ throw new TransformerException("Run-time errors were reported");
}
/* 516*/ if(showTime)
{
/* 517*/ long l1 = (new Date()).getTime();
/* 518*/ System.err.println("Execution time: " + (l1 - l) + " milliseconds");
/* 519*/ l = l1;
}
}
}
protected void badUsage(String s, String s1)
{
/* 525*/ System.err.println(s1);
/* 526*/ System.err.println(Version.getProductName());
/* 527*/ System.err.println("Usage: " + s + " [options] source-doc style-doc {param=value}...");
/* 528*/ System.err.println("Options: ");
/* 529*/ System.err.println(" -a Use xml-stylesheet PI, not style-doc argument ");
/* 530*/ System.err.println(" -ds Use standard tree data structure ");
/* 531*/ System.err.println(" -dt Use tinytree data structure (default)");
/* 532*/ System.err.println(" -o filename Send output to named file or directory ");
/* 533*/ System.err.println(" -m classname Use specified Emitter class for xsl:message output ");
/* 534*/ System.err.println(" -r classname Use specified URIResolver class ");
/* 535*/ System.err.println(" -t Display version and timing information ");
/* 536*/ System.err.println(" -T Set standard TraceListener");
/* 537*/ System.err.println(" -TL classname Set a specific TraceListener");
/* 538*/ System.err.println(" -u Names are URLs not filenames ");
/* 539*/ System.err.println(" -w0 Recover silently from recoverable errors ");
/* 540*/ System.err.println(" -w1 Report recoverable errors and continue (default)");
/* 541*/ System.err.println(" -w2 Treat recoverable errors as fatal");
/* 542*/ System.err.println(" -x classname Use specified SAX parser for source file ");
/* 543*/ System.err.println(" -y classname Use specified SAX parser for stylesheet ");
/* 544*/ System.err.println(" -? Display this message ");
/* 545*/ System.exit(2);
}
public static URIResolver makeURIResolver(String s)
throws TransformerException
{
/* 551*/ Object obj = Loader.getInstance(s);
/* 552*/ if(obj instanceof URIResolver)
/* 553*/ return (URIResolver)obj;
/* 555*/ else
/* 555*/ throw new TransformerException("Class " + s + " is not a URIResolver");
}
public static TraceListener makeTraceListener(String s)
throws TransformerException
{
/* 561*/ Object obj = Loader.getInstance(s);
/* 562*/ if(obj instanceof TraceListener)
/* 563*/ return (TraceListener)obj;
/* 565*/ else
/* 565*/ throw new TransformerException("Class " + s + " is not a TraceListener");
}
}