src/core/net/sf/basedb/util/encode/ToSpaceEncoderDecoder.java

Code
Comments
Other
Rev Date Author Line
5188 09 Nov 09 nicklas 1 /**
5188 09 Nov 09 nicklas 2   $Id $
5188 09 Nov 09 nicklas 3
5188 09 Nov 09 nicklas 4   Copyright (C) 2009 Nicklas Nordborg
5188 09 Nov 09 nicklas 5
5188 09 Nov 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
5188 09 Nov 09 nicklas 7   Available at http://base.thep.lu.se/
5188 09 Nov 09 nicklas 8
5188 09 Nov 09 nicklas 9   BASE is free software; you can redistribute it and/or
5188 09 Nov 09 nicklas 10   modify it under the terms of the GNU General Public License
5188 09 Nov 09 nicklas 11   as published by the Free Software Foundation; either version 3
5188 09 Nov 09 nicklas 12   of the License, or (at your option) any later version.
5188 09 Nov 09 nicklas 13
5188 09 Nov 09 nicklas 14   BASE is distributed in the hope that it will be useful,
5188 09 Nov 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
5188 09 Nov 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5188 09 Nov 09 nicklas 17   GNU General Public License for more details.
5188 09 Nov 09 nicklas 18
5188 09 Nov 09 nicklas 19   You should have received a copy of the GNU General Public License
5188 09 Nov 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5188 09 Nov 09 nicklas 21 */
5188 09 Nov 09 nicklas 22 package net.sf.basedb.util.encode;
5188 09 Nov 09 nicklas 23
5188 09 Nov 09 nicklas 24 /**
5188 09 Nov 09 nicklas 25   Encoder implementation that replaces newline, carriage return, 
5188 09 Nov 09 nicklas 26   tab and backslash with a space. This encoder is suitable for use with
5188 09 Nov 09 nicklas 27   tab-separated text files. This encoder is non-symmetrical and the 
5188 09 Nov 09 nicklas 28   {@link #decode(String)} method simply returns the argument unmodified.
5188 09 Nov 09 nicklas 29   
5188 09 Nov 09 nicklas 30   @author Nicklas
5188 09 Nov 09 nicklas 31   @since 2.15
5188 09 Nov 09 nicklas 32 */
5188 09 Nov 09 nicklas 33 public class ToSpaceEncoderDecoder 
5188 09 Nov 09 nicklas 34   implements EncoderDecoder 
5188 09 Nov 09 nicklas 35 {
5188 09 Nov 09 nicklas 36
5188 09 Nov 09 nicklas 37   public ToSpaceEncoderDecoder()
5188 09 Nov 09 nicklas 38   {}
5188 09 Nov 09 nicklas 39   
5188 09 Nov 09 nicklas 40   /*
5188 09 Nov 09 nicklas 41     From the EncoderDecoder interface
5188 09 Nov 09 nicklas 42     ---------------------------------
5188 09 Nov 09 nicklas 43   */
5188 09 Nov 09 nicklas 44   @Override
5188 09 Nov 09 nicklas 45   public boolean isSymmetrical() 
5188 09 Nov 09 nicklas 46   {
5188 09 Nov 09 nicklas 47     return false;
5188 09 Nov 09 nicklas 48   }
5188 09 Nov 09 nicklas 49
5188 09 Nov 09 nicklas 50   @Override
5188 09 Nov 09 nicklas 51   public String decode(String s) 
5188 09 Nov 09 nicklas 52   {
5188 09 Nov 09 nicklas 53     return s;
5188 09 Nov 09 nicklas 54   }
5188 09 Nov 09 nicklas 55
5188 09 Nov 09 nicklas 56   @Override
5188 09 Nov 09 nicklas 57   public String encode(String s) 
5188 09 Nov 09 nicklas 58   {
5188 09 Nov 09 nicklas 59     if (s == null) return null;
5188 09 Nov 09 nicklas 60     boolean neededEncode = false;
5188 09 Nov 09 nicklas 61     StringBuilder sb = new StringBuilder(s.length());
5188 09 Nov 09 nicklas 62     for (int i = 0; i < s.length(); ++i)
5188 09 Nov 09 nicklas 63     {
5188 09 Nov 09 nicklas 64       char c = s.charAt(i);
5188 09 Nov 09 nicklas 65       if (c == '\t' || c == '\n' || c == '\r')
5188 09 Nov 09 nicklas 66       {
5188 09 Nov 09 nicklas 67         sb.append(" ");
5188 09 Nov 09 nicklas 68         neededEncode = true;
5188 09 Nov 09 nicklas 69       }
5188 09 Nov 09 nicklas 70       else
5188 09 Nov 09 nicklas 71       {
5188 09 Nov 09 nicklas 72         sb.append(c);
5188 09 Nov 09 nicklas 73       }
5188 09 Nov 09 nicklas 74     }
5188 09 Nov 09 nicklas 75     return neededEncode ? sb.toString() : s;
5188 09 Nov 09 nicklas 76   }
5188 09 Nov 09 nicklas 77   // -------------------------------------------
5188 09 Nov 09 nicklas 78
5188 09 Nov 09 nicklas 79 }