001    /**
002     * Copyright (C) 2007-2011, 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     */
019    
020    package org.dllearner.core.options;
021    
022    /**
023     * A config entry is a configuration option and a value for the option.
024     * 
025     * @author Jens Lehmann
026     * 
027     */
028    public class ConfigEntry<T> {
029    
030            private ConfigOption<T> option;
031            private T value;
032    
033            public ConfigEntry(ConfigOption<T> option, T value) throws InvalidConfigOptionValueException {
034                    if (!option.isValidValue(value)) {
035                            throw new InvalidConfigOptionValueException(option, value);
036                    } else {
037                            this.option = option;
038                            this.value = value;
039                    }
040            }
041    
042            public ConfigOption<T> getOption() {
043                    return option;
044            }
045    
046            public String getOptionName() {
047                    return option.getName();
048            }
049    
050            public T getValue() {
051                    return value;
052            }
053    
054            /**
055             * Get a string to save into a configuration file.
056             * 
057             * @return a formatted string
058             */
059            public String toConfString(String componentName) {
060                    if (option.getName().equalsIgnoreCase("positiveExamples")) {
061                            return option.getValueFormatting(value);
062                    } else if (option.getName().equalsIgnoreCase("negativeExamples")) {
063                            return option.getValueFormatting(value);
064                    } 
065                    return componentName.toString() + "." + option.getName() + " = "
066                                            + option.getValueFormatting(value);
067            }
068            
069            @Override
070            public String toString() {
071                    return option.name + " = " + value;
072            }
073    }