// 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: Builder.java
package com.icl.saxon.om;
import com.icl.saxon.*;
import com.icl.saxon.output.Emitter;
import com.icl.saxon.output.ProxyEmitter;
import java.io.*;
import java.util.Date;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.*;
import javax.xml.transform.sax.SAXSource;
import org.xml.sax.*;
// Referenced classes of package com.icl.saxon.om:
// Stripper, DocumentInfo
public abstract class Builder extends Emitter
implements ErrorHandler, Locator, SourceLocator
{
public static final int STANDARD_TREE = 0;
public static final int TINY_TREE = 1;
protected int estimatedLength;
protected Writer errorOutput;
protected Stripper stripper;
protected PreviewManager previewManager;
protected boolean discardComments;
protected DocumentInfo currentDocument;
protected ErrorHandler errorHandler;
protected ErrorListener errorListener;
protected boolean failed;
protected boolean started;
protected boolean timing;
protected boolean inDTD;
protected boolean lineNumbering;
protected int lineNumber;
protected int columnNumber;
private long startTime;
protected Controller controller;
public void setController(Controller controller1)
{
/* 62*/ controller = controller1;
}
public Builder()
{
/* 38*/ errorOutput = new PrintWriter(System.err);
/* 41*/ previewManager = null;
/* 45*/ errorHandler = this;
/* 46*/ errorListener = null;
/* 48*/ failed = false;
/* 49*/ started = false;
/* 50*/ timing = false;
/* 52*/ inDTD = false;
/* 53*/ lineNumbering = false;
/* 54*/ lineNumber = -1;
/* 55*/ columnNumber = -1;
}
public void setRootNode(DocumentInfo documentinfo)
{
/* 83*/ currentDocument = documentinfo;
}
public void setTiming(boolean flag)
{
/* 92*/ timing = flag;
}
public boolean isTiming()
{
/* 100*/ return timing;
}
public void setLineNumbering(boolean flag)
{
/* 108*/ lineNumbering = flag;
}
public void setStripper(Stripper stripper1)
{
/* 116*/ stripper = stripper1;
}
public Stripper getStripper()
{
/* 124*/ return stripper;
}
public void setPreviewManager(PreviewManager previewmanager)
{
/* 132*/ previewManager = previewmanager;
}
public void setDiscardCommentsAndPIs(boolean flag)
{
/* 143*/ discardComments = flag;
}
public void setErrorHandler(ErrorHandler errorhandler)
{
/* 154*/ errorHandler = errorhandler;
}
public void setErrorListener(ErrorListener errorlistener)
{
/* 164*/ errorListener = errorlistener;
}
public void setErrorOutput(Writer writer)
{
/* 179*/ errorOutput = writer;
}
public DocumentInfo build(SAXSource saxsource)
throws TransformerException
{
/* 195*/ InputSource inputsource = saxsource.getInputSource();
/* 196*/ XMLReader xmlreader = saxsource.getXMLReader();
/* 199*/ if(timing)
{
/* 200*/ System.err.println("Building tree for " + inputsource.getSystemId() + " using " + getClass());
/* 201*/ startTime = (new Date()).getTime();
}
/* 204*/ failed = true;
/* 205*/ started = false;
/* 206*/ if(saxsource.getSystemId() != null)
/* 207*/ setSystemId(saxsource.getSystemId());
/* 209*/ else
/* 209*/ setSystemId(inputsource.getSystemId());
/* 212*/ if(inputsource instanceof ExtendedInputSource)
{
/* 213*/ estimatedLength = ((ExtendedInputSource)inputsource).getEstimatedLength();
/* 214*/ if(estimatedLength < 1)
/* 214*/ estimatedLength = 4096;
/* 215*/ if(estimatedLength > 0xf4240)
/* 215*/ estimatedLength = 0xf4240;
} else
{
/* 217*/ estimatedLength = 4096;
}
/* 222*/ if(xmlreader == null)
/* 224*/ try
{
/* 224*/ xmlreader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
}
/* 227*/ catch(Exception exception)
{
/* 227*/ throw new TransformerException(exception);
}
/* 231*/ ContentEmitter contentemitter = new ContentEmitter();
/* 232*/ contentemitter.setNamePool(super.namePool);
/* 233*/ xmlreader.setContentHandler(contentemitter);
/* 234*/ xmlreader.setDTDHandler(contentemitter);
/* 235*/ xmlreader.setErrorHandler(errorHandler);
/* 237*/ if(!discardComments)
/* 239*/ try
{
/* 239*/ xmlreader.setProperty("http://xml.org/sax/properties/lexical-handler", contentemitter);
}
/* 240*/ catch(SAXNotSupportedException saxnotsupportedexception) { }
/* 241*/ catch(SAXNotRecognizedException saxnotrecognizedexception) { }
/* 245*/ if(stripper != null)
{
/* 246*/ contentemitter.setEmitter(stripper);
/* 247*/ stripper.setUnderlyingEmitter(this);
} else
{
/* 249*/ contentemitter.setEmitter(this);
}
/* 253*/ try
{
/* 253*/ xmlreader.setFeature("http://xml.org/sax/features/namespaces", true);
/* 254*/ xmlreader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
}
/* 256*/ catch(SAXNotSupportedException saxnotsupportedexception1)
{
/* 256*/ throw new TransformerException("The SAX2 parser does not recognize a required namespace feature");
}
/* 259*/ catch(SAXNotRecognizedException saxnotrecognizedexception1)
{
/* 259*/ throw new TransformerException("The SAX2 parser does not support a required namespace feature");
}
/* 265*/ try
{
/* 265*/ xmlreader.parse(inputsource);
}
/* 267*/ catch(IOException ioexception)
{
/* 267*/ throw new TransformerException("Failure reading " + inputsource.getSystemId(), ioexception);
}
/* 269*/ catch(SAXException saxexception)
{
/* 269*/ Exception exception1 = saxexception.getException();
/* 270*/ if(exception1 != null && (exception1 instanceof TransformerException))
/* 271*/ throw (TransformerException)exception1;
/* 273*/ else
/* 273*/ throw new TransformerException(saxexception);
}
/* 277*/ if(!started)
/* 279*/ throw new TransformerException("Source document not supplied");
/* 282*/ if(failed)
/* 284*/ throw new TransformerException("XML Parsing failed");
/* 287*/ if(timing)
{
/* 288*/ long l = (new Date()).getTime();
/* 289*/ System.err.println("Tree built in " + (l - startTime) + " milliseconds");
/* 290*/ startTime = l;
}
/* 293*/ return currentDocument;
}
public DocumentInfo getCurrentDocument()
{
/* 302*/ return currentDocument;
}
public void warning(SAXParseException saxparseexception)
{
/* 315*/ if(errorListener != null)
/* 317*/ try
{
/* 317*/ errorListener.warning(new TransformerException(saxparseexception));
}
/* 318*/ catch(Exception exception) { }
}
public void error(SAXParseException saxparseexception)
throws SAXException
{
/* 327*/ reportError(saxparseexception, false);
/* 328*/ failed = true;
}
public void fatalError(SAXParseException saxparseexception)
throws SAXException
{
/* 336*/ reportError(saxparseexception, true);
/* 337*/ failed = true;
/* 338*/ throw saxparseexception;
}
protected void reportError(SAXParseException saxparseexception, boolean flag)
{
/* 347*/ if(errorListener != null)
/* 349*/ try
{
/* 349*/ super.systemId = saxparseexception.getSystemId();
/* 350*/ lineNumber = saxparseexception.getLineNumber();
/* 351*/ columnNumber = saxparseexception.getColumnNumber();
/* 352*/ TransformerException transformerexception = new TransformerException("Error reported by XML parser", this, saxparseexception);
/* 354*/ if(flag)
/* 355*/ errorListener.fatalError(transformerexception);
/* 357*/ else
/* 357*/ errorListener.error(transformerexception);
}
/* 359*/ catch(Exception exception) { }
/* 363*/ else
/* 363*/ try
{
/* 363*/ String s = flag ? "Fatal error" : "Error";
/* 364*/ errorOutput.write(s + " reported by XML parser: " + saxparseexception.getMessage() + "\n");
/* 365*/ errorOutput.write(" URL: " + saxparseexception.getSystemId() + "\n");
/* 366*/ errorOutput.write(" Line: " + saxparseexception.getLineNumber() + "\n");
/* 367*/ errorOutput.write(" Column: " + saxparseexception.getColumnNumber() + "\n");
/* 368*/ errorOutput.flush();
}
/* 370*/ catch(Exception exception1)
{
/* 370*/ System.err.println(saxparseexception);
/* 371*/ System.err.println(exception1);
/* 372*/ exception1.printStackTrace();
}
}
public abstract void setUnparsedEntity(String s, String s1);
public String getPublicId()
{
/* 400*/ return null;
}
public int getLineNumber()
{
/* 404*/ return lineNumber;
}
public int getColumnNumber()
{
/* 408*/ return columnNumber;
}
}