001    // This file is part of AceWiki.
002    // Copyright 2008-2012, 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.core;
016    
017    /**
018     * This class represents a detail of a lexical entry as shown to the user. For example, the plural
019     * form of a noun would be such a detail.
020     * 
021     * @author Tobias Kuhn
022     */
023    public class LexiconDetail {
024            
025            private String name;
026            private String description;
027            private Object value;
028            private boolean required;
029            
030            /**
031             * Creates a lexical detail object.
032             * 
033             * @param name The name of the detail as shown to the user.
034             * @param description The description shown to the user.
035             * @param value The value, either a String or a Boolean.
036             * @param required Whether the detail is required or not.
037             */
038            public LexiconDetail(String name, String description, Object value, boolean required) {
039                    if (value == null) value = "";
040                    this.name = name;
041                    this.description = description;
042                    this.value = value;
043                    this.required = required;
044            }
045    
046            /**
047             * Creates a required lexical detail object.
048             * 
049             * @param name The name of the detail as shown to the user.
050             * @param description The description shown to the user.
051             * @param value The value, either a String or a Boolean.
052             */
053            public LexiconDetail(String name, String description, Object value) {
054                    this(name, description, value, true);
055            }
056    
057            /**
058             * Creates a required lexical detail object without description.
059             * 
060             * @param name The name of the detail as shown to the user.
061             * @param value The value, either a String or a Boolean.
062             */
063            public LexiconDetail(String name, Object value) {
064                    this(name, "", value, true);
065            }
066            
067            /**
068             * Returns the name of this lexical detail.
069             * 
070             * @return The name.
071             */
072            public String getName() {
073                    return name;
074            }
075            
076            /**
077             * Returns the description of this lexical detail.
078             * 
079             * @return The description.
080             */
081            public String getDescription() {
082                    return description;
083            }
084            
085            /**
086             * Returns the value of this lexical detail, either a String or a Boolean.
087             * 
088             * @return The value.
089             */
090            public Object getValue() {
091                    return value;
092            }
093            
094            /**
095             * Returns whether this lexical detail is required or not.
096             * 
097             * @return true if this lexical detail is required.
098             */
099            public boolean isRequired() {
100                    return required;
101            }
102    
103    }