001package org.maltparser.core.options.option;
002
003import org.maltparser.core.exception.MaltChainedException;
004import org.maltparser.core.options.OptionException;
005import org.maltparser.core.options.OptionGroup;
006
007/**
008 * An integer option is an option that can only contain an integer value.  
009 *
010 * @author Johan Hall
011 * @since 1.0
012**/
013public class IntegerOption extends Option{
014        private int defaultValue = 0;
015        
016        /**
017         * Creates an integer option description
018         * 
019         * @param group a reference to the option group.
020         * @param name  the name of the option.
021         * @param shortDescription      a short description of the option.
022         * @param flag  a short string that can be used in the command line.
023         * @param usage a string that explains the usage of the option.
024         * @param defaultValue  a default value string (must be an integer value).
025         * @throws OptionException
026         */
027        public IntegerOption(OptionGroup group, 
028                        String name, 
029                        String shortDescription, 
030                        String flag, 
031                        String usage, 
032                        String defaultValue) throws MaltChainedException {
033                super(group, name, shortDescription, flag, usage);
034                setDefaultValue(defaultValue);
035        }
036
037        /* (non-Javadoc)
038         * @see org.maltparser.core.options.option.Option#getValueObject(java.lang.String)
039         */
040        public Object getValueObject(String value) throws MaltChainedException {
041                try {
042                        return new Integer(Integer.parseInt(value));
043                } catch (NumberFormatException e) {
044                        throw new OptionException("Illegal integer value '"+value+"' for the '"+getName()+"' option. ", e);
045                }       
046        }
047        
048        /* (non-Javadoc)
049         * @see org.maltparser.core.options.option.Option#getDefaultValueObject()
050         */
051        public Object getDefaultValueObject() throws MaltChainedException {
052                return new Integer(defaultValue);
053        }
054        
055        /* (non-Javadoc)
056         * @see org.maltparser.core.options.option.Option#setDefaultValue(java.lang.String)
057         */
058        public void setDefaultValue(String defaultValue) throws MaltChainedException {
059                try {
060                        this.defaultValue = Integer.parseInt(defaultValue);
061                } catch (NumberFormatException e) {
062                        throw new OptionException("Illegal integer default value '"+defaultValue+"' for the '"+getName()+"' option. ", e);
063                }
064        }
065        
066        /* (non-Javadoc)
067         * @see org.maltparser.core.options.option.Option#getDefaultValueString()
068         */
069        public String getDefaultValueString() {
070                return Integer.toString(defaultValue);
071        }
072        
073        /* (non-Javadoc)
074         * @see org.maltparser.core.options.option.Option#getStringRepresentation(java.lang.Object)
075         */
076        public String getStringRepresentation(Object value) {
077                if (value instanceof Integer) {
078                        return value.toString();
079                }
080                return null;
081        }
082        
083        /* (non-Javadoc)
084         * @see org.maltparser.core.options.option.Option#toString()
085         */
086        public String toString() {
087                final StringBuilder sb = new StringBuilder();
088                sb.append(super.toString());
089                sb.append("-----------------------------------------------------------------------------\n");
090                return sb.toString();
091        }
092}