content: // This file is part of AceWiki.
  // Copyright 2011, AceWiki developers.
  //
  // AceWiki 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 3 of
  // the License, or (at your option) any later version.
  //
  // AceWiki 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 AceWiki. If
  // not, see http://www.gnu.org/licenses/.
  
  package ch.uzh.ifi.attempto.acewiki;
  
  import java.util.Map;
  
  import ch.uzh.ifi.attempto.acewiki.core.AceWikiStorage;
  import ch.uzh.ifi.attempto.acewiki.core.FileBasedStorage;
  import ch.uzh.ifi.attempto.acewiki.core.Ontology;
  import ch.uzh.ifi.attempto.echocomp.LocaleResources;
  
  /**
   * This class is used as the backend of an AceWiki.
   * It contains the ontology for the AceWiki and the parameters.
   *
   * @author Yu Changyuan
   */
  public class Backend {
  
  	private final Ontology ontology;
  	private static AceWikiStorage storage;
  	private final Map<String, String> parameters;
  
  	static {
  		LocaleResources.loadBundle("ch/uzh/ifi/attempto/echocomp/text");
  		LocaleResources.loadBundle("ch/uzh/ifi/attempto/acewiki/text");
  	}
  
  	/**
  	 * Creates a new Backend instance for the given parameters.
  	 *
  	 * @param parameters The parameters for the AceWiki Backend.
  	 */
  	public Backend(Map<String, String> parameters) {
  		this.parameters = parameters;
  		if (storage == null) {
  			storage = new FileBasedStorage(parameters.get("context:datadir"));
  		}
  		ontology = getStorage().getOntology(parameters.get("ontology"), parameters);
  	}
  
  	/**
  	 * Get the storage associated with this backend.
  	 *
  	 * @return The AceWikiStorage instance.
  	 */
  	public AceWikiStorage getStorage() {
  		return storage;
  	}
  
  	/**
  	 * Get the Ontology instance for this Backend.
  	 *
  	 * @return The Ontology object.
  	 */
  	public Ontology getOntology() {
  		return ontology;
  	}
  
  	/**
  	 * Get the parameters of this Backend.
  	 *
  	 * @return The parameters.
  	 */
  	public Map<String, String> getParameters() {
  		return parameters;
  	}
  
  	/**
  	 * Get a specific parameter for this Backend.
  	 *
  	 * @param param The parameter name.
  	 * @return The value of the parameter, or null if the parameter does not exist.
  	 */
  	public String getParameter(String param) {
  		return parameters.get(param);
  	}
  
  }
  