/*
* 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;
}
}