001/**
002 * Copyright (C) 2007 - 2016, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package org.dllearner.core;
020
021import org.dllearner.utilities.owl.DLSyntaxObjectRendererExt;
022import org.dllearner.utilities.owl.ManchesterOWLSyntaxOWLObjectRendererImplExt;
023import org.dllearner.utilities.owl.OWLXMLRenderer;
024import org.semanticweb.owlapi.io.OWLObjectRenderer;
025import org.semanticweb.owlapi.io.ToStringRenderer;
026import org.semanticweb.owlapi.util.ShortFormProvider;
027import org.semanticweb.owlapi.util.SimpleRenderer;
028
029/**
030 * A renderer for OWL objects. Different syntaxes are supported, e.g., DL syntax or Manchester OWL syntax.
031 *
032 * @author Simon Bin
033 */
034public final class StringRenderer {
035
036        public enum Rendering {
037                OWLAPI_SYNTAX("owlapi", new SimpleRenderer()),
038        DL_SYNTAX("dlsyntax", new DLSyntaxObjectRendererExt()),
039        MANCHESTER_SYNTAX("manchester", new ManchesterOWLSyntaxOWLObjectRendererImplExt(true, false)),
040        MANCHESTER_SYNTAX_NL("manchester_nl", new ManchesterOWLSyntaxOWLObjectRendererImplExt(true, true)),
041                OWL_XML_SYNTAX("owl/xml", new OWLXMLRenderer());
042        
043        String name;
044        OWLObjectRenderer renderer;
045        
046        Rendering(String name, OWLObjectRenderer render) {
047                this.name = name;
048                this.renderer = render;
049        }
050        
051                public String getName() {
052                        return name;
053                }
054        
055        public OWLObjectRenderer getRenderer() {
056                return renderer;
057        }
058    }
059
060        static OWLObjectRenderer renderer;
061        static {
062                setRenderer(Rendering.MANCHESTER_SYNTAX.getRenderer());
063        }
064
065        public static void setRenderer(Rendering r) {
066                setRenderer(r.getRenderer());
067        }
068        
069        @SuppressWarnings("deprecation")
070        public static void setRenderer(OWLObjectRenderer r) {
071                ToStringRenderer.getInstance().setRenderer(r);
072                renderer = r;
073        }
074
075        public static void setRenderer(String syntax) {
076                for (Rendering r : Rendering.values()) {
077                        if(syntax.equals(r.getName())) {
078                                setRenderer(r);
079                                return;
080                        }
081                }
082                throw new IllegalArgumentException("No such Renderer: "+syntax);
083        }
084        
085        public static OWLObjectRenderer getRenderer() {
086                return renderer;
087        }
088
089        public static void setShortFormProvider(
090                        ShortFormProvider shortFormProvider) {
091                ToStringRenderer.getInstance().setShortFormProvider(shortFormProvider);
092        }
093}