/* $Revision$ $Author$ $Date$ * * Copyright (C) 2003-2008 Egon Willighagen <egonw@users.sf.net> * * Contact: cdk-devel@lists.sf.net * * This library 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. * * This library 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 library; if not, write to the Free Software * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ package org.openscience.cdk.config.atomtypes; import org.openscience.cdk.annotations.TestClass; import org.openscience.cdk.annotations.TestMethod; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; import java.util.Hashtable; import java.util.Map; /** * SAX Handler for the {@link OWLAtomTypeMappingReader}. * * @cdk.module atomtype * @cdk.githash */ @TestClass("org.openscience.cdk.config.atomtypes.OWLAtomTypeMappingHandlerTest") public class OWLAtomTypeMappingHandler extends DefaultHandler { private final String NS_ATOMTYPE_MAPPING = "http://cdk.sf.net/ontologies/atomtypemappings#"; private final String NS_OWL = "http://www.w3.org/2002/07/owl#"; private Map<String,String> atomTypeMappings; private String fromType; private String toType; /** * Constructs a new OWLAtomTypeMappingHandler. */ public OWLAtomTypeMappingHandler() {} /** * Returns a {@link Map} with atom type mappings. */ @TestMethod("testGetAtomTypeMappings") public Map<String,String> getAtomTypeMappings() { return atomTypeMappings; } // SAX Parser methods @TestMethod("testStartDocument") public void startDocument() { atomTypeMappings = new Hashtable<String,String>(); } @TestMethod("testEndElement_String_String_String") public void endElement(String uri, String local, String raw) { if (NS_OWL.equals(uri)) { endAtomTypeElement(local); } // ignore other namespaces } private void endAtomTypeElement(String local) { if ("Thing".equals(local) && toType != null && fromType != null) { atomTypeMappings.put(fromType, toType); } } @TestMethod("testStartElement_String_String_String_Attributes") public void startElement(String uri, String local, String raw, Attributes atts) { if (NS_OWL.equals(uri)) { startOWLElement(local, atts); } else if (NS_ATOMTYPE_MAPPING.equals(uri)) { startAtomTypeMappingElement(local, atts); } // ignore other namespaces } private void startOWLElement(String local, Attributes atts) { if ("Thing".equals(local)) { toType = null; fromType = atts.getValue("rdf:about"); fromType = fromType.substring(fromType.indexOf('#')+1); } } private void startAtomTypeMappingElement(String local, Attributes atts) { if ("mapsToType".equals(local) || "equivalentAsType".equals(local)) { toType = atts.getValue("rdf:resource"); toType = toType.substring(toType.indexOf('#')+1); } } @TestMethod("testCharacters_arraychar_int_int") public void characters(char chars[], int start, int length) {} }