001    /*
002     * FirstWordFormatter.java 
003     * 
004     * Copyright (C) 2005 Anupam Sengupta (anupamsg@users.sourceforge.net) 
005     * 
006     * This program is free software; you can redistribute it and/or 
007     * modify it under the terms of the GNU General Public License 
008     * as published by the Free Software Foundation; either version 2 
009     * of the License, or (at your option) any later version. 
010     * 
011     * This program 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, write to the Free Software 
018     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 
019     *
020     * Version: $Revision: 1.3 $
021     */
022    package net.sf.anupam.csv.formatters;
023    
024    import org.apache.commons.lang.StringUtils;
025    
026    /**
027     * A {@link CSVFieldFormatter formatter} that returns the last word
028     * of the specified CSV value. This is useful in situations such as
029     * extracting the last name.
030     *
031     * @author Anupam Sengupta
032     * @version $Revision: 1.3 $
033     * @csv.formatter-mapping name="lastWord"
034     * @see FirstWordFormatter
035     * @since 1.5
036     */
037    final class LastWordFormatter
038            implements CSVFieldFormatter {
039    
040        /**
041         * Constructor for FirstWordFormatter.
042         */
043        public LastWordFormatter() {
044            super();
045        }
046    
047        /**
048         * Formats the value and returns the last word.
049         *
050         * @param value the value to be transformed
051         * @return the last word from the input value
052         * @see CSVFieldFormatter#format(String)
053         */
054        public String format(final String value) {
055    
056            if (value == null) {
057                return null;
058            }
059            final String [] splitValues = value.split(" ");
060    
061            return StringUtils.trim(splitValues[splitValues.length - 1]);
062        }
063    
064    }