CsvLineParser.java |
package server.servlets; /** * The CsvLineParser class is a utility class which * enables extraction of values from a comma separated value, * or CSV, file. * * @author Robert Lysik * @version 1.00 */ public class CsvLineParser { /** * This is the default constructor for the CsvLineParser class. */ public CsvLineParser() { return; } /** * This method takes the unparsed comma separated value string * and an array of integers representing the indices of the * strings to extract from the CSV string as arguments. The * return value of this function is an array of the requested * strings. * */ public String[] getValues(String s, int plays[]) { // Set the size of our array to the number of values // requested. String values[] = new String[plays.length]; String tokens[] = getTokens(s); for (int index = 0; index < plays.length; index++) { values[index] = tokens[plays[index]]; } return values; } /** * This function takes the unparsed comma separated value string * as an argument. Each character in the string is examined to * determine whether or not it is a comma. If so, a substring * is extracted from the CSV string up to the comma and the * starting index of the string is incremented one position beyond * the location of the comma. */ public String[] getTokens(String csvString) { StringBuffer sb = new StringBuffer(csvString); String s [] = new String[getTokenCount(sb)]; int tc = 0; int start = 0; for (int i = 0; i < sb.length(); i++) { if (sb.charAt(i) == ',') { s[tc] = sb.substring(start, i); start = i + 1; tc++; } } s[tc] = sb.substring(start, sb.length()); return s; } /** * This function calculates the number of values in the comma * separated value string which is passed in as a parameter * in the form of a StringBuffer object. Each character in the * StringBuffer object is examined to determine whether or not * it is a comma. If a comma is found, the count of tokens is * incremented by one. */ public int getTokenCount(StringBuffer sb) { int tc = 0; for (int i = 0; i < sb.length(); i++) { if (sb.charAt(i) == ',') tc++; } return tc + 1; } }