001 // This file is part of AceWiki.
002 // Copyright 2011, AceWiki developers.
003 //
004 // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
005 // Lesser General Public License as published by the Free Software Foundation, either version 3 of
006 // the License, or (at your option) any later version.
007 //
008 // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
009 // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
010 // Lesser General Public License for more details.
011 //
012 // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
013 // not, see http://www.gnu.org/licenses/.
014
015 package ch.uzh.ifi.attempto.acewiki;
016
017 import java.util.Map;
018
019 import ch.uzh.ifi.attempto.acewiki.core.AceWikiStorage;
020 import ch.uzh.ifi.attempto.acewiki.core.FileBasedStorage;
021 import ch.uzh.ifi.attempto.acewiki.core.Ontology;
022
023 /**
024 * This class is used as the backend of an AceWiki.
025 * It contains the ontology for the AceWiki and the parameters.
026 *
027 * @author Yu Changyuan
028 */
029 public class Backend {
030 private final Ontology ontology;
031 private static AceWikiStorage storage;
032 private final Map<String, String> parameters;
033
034 /**
035 * Creates a new Backend instance for the given parameters.
036 *
037 * @param parameters The parameters for the AceWiki Backend.
038 */
039 public Backend(Map<String, String> parameters) {
040 this.parameters = parameters;
041 if (storage == null) {
042 storage = new FileBasedStorage(parameters.get("context:datadir"));
043 }
044 ontology = getStorage().getOntology(parameters.get("ontology"), parameters);
045 }
046
047 /**
048 * Get the storage associated with this backend.
049 *
050 * @return The AceWikiStorage instance.
051 */
052 public AceWikiStorage getStorage() {
053 return storage;
054 }
055
056 /**
057 * Get the Ontology instance for this Backend.
058 *
059 * @return The Ontology object.
060 */
061 public Ontology getOntology() {
062 return ontology;
063 }
064
065 /**
066 * Get the parameters of this Backend.
067 *
068 * @return The parameters.
069 */
070 public Map<String, String> getParameters() {
071 return parameters;
072 }
073
074 /**
075 * Get a specific parameter for this Backend.
076 *
077 * @param param The parameter name.
078 * @return The value of the parameter, or null if the parameter does not exist.
079 */
080 public String getParameter(String param) {
081 return parameters.get(param);
082 }
083 }