1 package net.logAnalyzer.utils.gui;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.FileReader;
7 import java.io.IOException;
8 import java.io.Reader;
9 import java.io.StringReader;
10 import java.util.ArrayList;
11 import java.util.Vector;
12 import java.util.regex.Pattern;
13
14 import javax.swing.table.AbstractTableModel;
15
16 import net.logAnalyzer.reports.TXTReportRenderer;
17
18 public class TXTReportTableModel extends AbstractTableModel {
19
20
21 static protected String[] cNames;
22
23 private int columnCount = 0;
24
25 private int rowCount = 0;
26
27 private ArrayList rows = new ArrayList();
28
29 private Reader reader;
30
31 public TXTReportTableModel(String report) {
32 super();
33 this.reader = new StringReader(report);
34 parseReport();
35 }
36
37 public TXTReportTableModel(File report) throws FileNotFoundException {
38 super();
39 this.reader = new FileReader(report);
40 parseReport();
41 }
42
43 public int getColumnCount() {
44 return columnCount;
45 }
46
47 public int getRowCount() {
48
49 return rowCount;
50 }
51
52 public Object getValueAt(int row, int column) {
53 String[] columns = (String[])rows.get(row);
54 return columns[column];
55 }
56
57 public String getColumnName(int column) {
58 return cNames[column];
59 }
60
61 public Class getColumnClass(int column) {
62 return String.class;
63 }
64
65 private void parseReport() {
66 BufferedReader in = new BufferedReader(reader);
67
68 try {
69 String header = in.readLine();
70
71 Pattern pattern = Pattern.compile(Character.toString(TXTReportRenderer.DEFAULT_DELIMITER));
72 cNames = pattern.split(header);
73 columnCount = cNames.length;
74 String line ="";
75 while((line = in.readLine()) != null){
76 if(line.length()>0){
77 rows.add(pattern.split(line,columnCount));
78 }
79 }
80 rowCount = rows.size();
81 } catch (IOException e) {
82
83 e.printStackTrace();
84 }
85
86 }
87
88 }