/*
* This software is Copyright 2005,2006,2007,2008 Langdale Consultants.
* Langdale Consultants can be contacted at: http://www.langdale.com.au
*/
package au.com.langdale.util;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import com.hp.hpl.jena.rdf.model.RDFErrorHandler;
import com.hp.hpl.jena.reasoner.ValidityReport;
/**
* A central point for issuing messages. This class does not assume any eclipse
* conventions but provides enough hooks that a monitor instance could be adapted.
*
* For now, the messages are simply written to a stream.
*/
public class Logger {
protected PrintWriter out;
protected int count;
public Logger(OutputStream stream) {
out = new PrintWriter(stream);
}
public void log(ValidityReport report) {
if (! report.isValid()) {
for (Iterator it = report.getReports(); it.hasNext(); ) {
log(it.next().toString());
}
}
}
public void log(Exception e) {
log(e.getMessage());
}
public void log(String message) {
out.println(message);
count += 1;
}
public void estimate(int amount) {
// override to declare the total amount of work
}
public void worked(int amount) {
// override to indicate progress
}
public int getErrorCount() {
return count;
}
public RDFErrorHandler getRDFErrorHandler() {
return new RDFErrorHandler() {
public void error(Exception e) {
log(e);
}
public void fatalError(Exception e) {
log(e);
}
public void warning(Exception e) {
log(e);
}
};
}
public ErrorHandler getSAXErrorHandler() {
return new ErrorHandler() {
public void error(SAXParseException error) throws SAXException {
log(error);
}
public void fatalError(SAXParseException error) throws SAXException {
log(error);
}
public void warning(SAXParseException error) throws SAXException {
log(error);
}
};
}
public void flush() {
out.flush();
}
public void close() throws IOException {
out.close();
if( out.checkError())
throw new IOException("error writing log file");
}
}