content: /*
   *  Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
   *
   *  This file is part of Akvo FLOW.
   *
   *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
   *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
   *  either version 3 of the License or any later version.
   *
   *  Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   *  See the GNU Affero General Public License included below for more details.
   *
   *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
   */
  
  package com.gallatinsystems.common.util;
  
  /**
   * utility class for dealing with CSV files (handles things like escaping/unescaping quotes, commas
   * and newlines)
   */
  public class CSVUtil {
  
      private static final String QUOTE = "\"";
      private static final String ESCAPED_QUOTE = "\"\"";
      private static char[] CHARACTERS_THAT_MUST_BE_QUOTED = {
              ',', '"', '\n'
      };
  
      public static String Escape(String s) {
          if (s.contains(QUOTE))
              s = s.replace(QUOTE, ESCAPED_QUOTE);
  
          for (char item : CHARACTERS_THAT_MUST_BE_QUOTED) {
              if (s.indexOf(item) > -1) {
                  s = QUOTE + s + QUOTE;
                  break;
              }
          }
          return s;
      }
  
      public static String Unescape(String s) {
          if (s.startsWith(QUOTE) && s.endsWith(QUOTE)) {
              s = s.substring(1, s.length() - 2);
              if (s.contains(ESCAPED_QUOTE))
                  s = s.replace(ESCAPED_QUOTE, QUOTE);
          }
          return s;
      }
  }
  