content: // This file is part of AceWiki.
  // Copyright 2008-2013, 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.core;
  
  /**
   * This class represents a detail of a lexical entry as shown to the user. For example, the plural
   * form of a noun would be such a detail.
   * 
   * @author Tobias Kuhn
   */
  public class LexiconDetail {
  	
  	private String name;
  	private String description;
  	private Object value;
  	private boolean required;
  	
  	/**
  	 * Creates a lexical detail object.
  	 * 
  	 * @param name The name of the detail as shown to the user.
  	 * @param description The description shown to the user.
  	 * @param value The value, either a String or a Boolean.
  	 * @param required Whether the detail is required or not.
  	 */
  	public LexiconDetail(String name, String description, Object value, boolean required) {
  		if (value == null) value = "";
  		this.name = name;
  		this.description = description;
  		this.value = value;
  		this.required = required;
  	}
  
  	/**
  	 * Creates a required lexical detail object.
  	 * 
  	 * @param name The name of the detail as shown to the user.
  	 * @param description The description shown to the user.
  	 * @param value The value, either a String or a Boolean.
  	 */
  	public LexiconDetail(String name, String description, Object value) {
  		this(name, description, value, true);
  	}
  
  	/**
  	 * Creates a required lexical detail object without description.
  	 * 
  	 * @param name The name of the detail as shown to the user.
  	 * @param value The value, either a String or a Boolean.
  	 */
  	public LexiconDetail(String name, Object value) {
  		this(name, "", value, true);
  	}
  	
  	/**
  	 * Returns the name of this lexical detail.
  	 * 
  	 * @return The name.
  	 */
  	public String getName() {
  		return name;
  	}
  	
  	/**
  	 * Returns the description of this lexical detail.
  	 * 
  	 * @return The description.
  	 */
  	public String getDescription() {
  		return description;
  	}
  	
  	/**
  	 * Returns the value of this lexical detail, either a String or a Boolean.
  	 * 
  	 * @return The value.
  	 */
  	public Object getValue() {
  		return value;
  	}
  	
  	/**
  	 * Returns whether this lexical detail is required or not.
  	 * 
  	 * @return true if this lexical detail is required.
  	 */
  	public boolean isRequired() {
  		return required;
  	}
  
  }
  