001 package jp.osdl.jbento2.analyzer;
002
003 import java.io.IOException;
004 import java.io.Reader;
005 import java.util.Iterator;
006 import java.util.List;
007 import java.util.StringTokenizer;
008
009 import org.apache.commons.io.IOUtils;
010
011 public class TextTableParser {
012
013 private List lines;
014 private String delimiter;
015
016 public TextTableParser(Reader r, String delimiter)
017 throws IOException {
018 this.lines = IOUtils.readLines(r);
019 this.delimiter = delimiter;
020 }
021
022 public int getRowCount() {
023 return lines.size();
024 }
025
026 public int getColumnCount() {
027 for (Iterator it = lines.iterator(); it.hasNext(); ) {
028 StringTokenizer st =
029 new StringTokenizer((String)it.next(), delimiter);
030 if (st.countTokens() > 0) {
031 return st.countTokens();
032 }
033 }
034 return 0;
035 }
036
037 public int searchRowIndex(String s) {
038 int index = 0;
039 for (Iterator it = lines.iterator(); it.hasNext(); ) {
040 StringTokenizer st =
041 new StringTokenizer((String)it.next(), delimiter);
042 while (st.hasMoreTokens()) {
043 if (st.nextToken().trim().equals(s)) {
044 return index;
045 }
046 }
047 index++;
048 }
049 return -1;
050 }
051
052 public int searchColumnIndex(String s) {
053 for (Iterator it = lines.iterator(); it.hasNext(); ) {
054 StringTokenizer st =
055 new StringTokenizer((String)it.next(), delimiter);
056 int index = 0;
057 while (st.hasMoreTokens()) {
058 if (st.nextToken().trim().equals(s)) {
059 return index;
060 }
061 index++;
062 }
063 }
064 return -1;
065 }
066
067 public String get(int row, int column) {
068 String s = (String)lines.get(row);
069 StringTokenizer st = new StringTokenizer(s, delimiter);
070 for (int i = 0; i < column; i++) {
071 st.nextToken();
072 }
073 return st.nextToken().trim();
074 }
075
076 }