From: Egon W. <eg...@us...> - 2002-02-06 12:41:50
|
Update of /cvsroot/cdk/cdk/org/openscience/cdk/io/cml In directory usw-pr-cvs1:/tmp/cvs-serv6120/org/openscience/cdk/io/cml Modified Files: CMLResolver.java Added Files: CMLErrorHandler.java Log Message: Fixed problem with reading CML files with DTD declaration with Aelfred2 XML parser. Added ErrorHandler for easier debugging. --- NEW FILE: CMLErrorHandler.java --- /* * $RCSfile: CMLErrorHandler.java,v $ * $Author: egonw $ * $Date: 2002/02/06 12:41:47 $ * $Revision: 1.1 $ * * Copyright (C) 2001 The CDK Project * * Contact: eg...@sc... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * All we ask is that proper credit is given for our work, which includes * - but is not limited to - adding the above copyright notice to the beginning * of your source code files, and to any copyright notice that you may distribute * with programs based on this work. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.openscience.cdk.io.cml; import org.xml.sax.helpers.*; import org.xml.sax.*; public class CMLErrorHandler implements ErrorHandler { private org.openscience.cdk.tools.LoggingTool logger; public boolean reportErrors = true; public boolean abortOnErrors = false; public CMLErrorHandler() { logger = new org.openscience.cdk.tools.LoggingTool(this.getClass().getName()); logger.info("instantiated"); } private void print (String label, SAXParseException e) { logger.error("** " + label + ": " + e.getMessage ()); logger.error(" URI = " + e.getSystemId ()); logger.error(" line = " + e.getLineNumber ()); } // for recoverable errors, like validity problems public void error (SAXParseException e) throws SAXException { if (reportErrors) print("error", e); if (abortOnErrors) throw e; } public void fatalError (SAXParseException e) throws SAXException { if (reportErrors) print("fatal", e); if (abortOnErrors) throw e; } public void warning (SAXParseException e) throws SAXException { if (reportErrors) print("warning", e); } } Index: CMLResolver.java =================================================================== RCS file: /cvsroot/cdk/cdk/org/openscience/cdk/io/cml/CMLResolver.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** CMLResolver.java 2001/12/13 11:50:06 1.3 --- CMLResolver.java 2002/02/06 12:41:47 1.4 *************** *** 34,48 **** private org.openscience.cdk.tools.LoggingTool logger; ! public CMLResolver() { logger = new org.openscience.cdk.tools.LoggingTool(this.getClass().getName()); ! } public InputSource resolveEntity (String publicId, String systemId) { ! logger.warn("CMLResolver: resolving " + publicId + ", " + systemId); systemId = systemId.toLowerCase(); ! if ((systemId.indexOf("cml-1999-05-15.dtd") != -1) || (systemId.indexOf("cml.dtd") != -1)) { return getCMLType( "org/openscience/cdk/io/cml/data/cml.dtd" ); } else { ! logger.warn("Could not resolve " + systemId); return null; } --- 34,49 ---- private org.openscience.cdk.tools.LoggingTool logger; ! public CMLResolver() { logger = new org.openscience.cdk.tools.LoggingTool(this.getClass().getName()); ! } public InputSource resolveEntity (String publicId, String systemId) { ! logger.debug("CMLResolver: resolving " + publicId + ", " + systemId); systemId = systemId.toLowerCase(); ! if ((systemId.indexOf("cml-1999-05-15.dtd") != -1) || ! (systemId.indexOf("cml.dtd") != -1)) { return getCMLType( "org/openscience/cdk/io/cml/data/cml.dtd" ); } else { ! logger.warn("Could not resolve " + systemId); return null; } *************** *** 50,60 **** private InputSource getCMLType( String type ) { ! try { ! URL url = ClassLoader.getSystemResource(type); ! return new InputSource(new BufferedReader(new InputStreamReader(url.openStream()))); ! } catch (Exception e) { ! System.err.println("Error while trying to read CML DTD (" + type + "): " + e.toString()); ! return null; ! } } } --- 51,61 ---- private InputSource getCMLType( String type ) { ! try { ! URL url = ClassLoader.getSystemResource(type); ! return new InputSource(new BufferedReader(new InputStreamReader(url.openStream()))); ! } catch (Exception e) { ! logger.error("Error while trying to read CML DTD (" + type + "): " + e.toString()); ! return null; ! } } } |