1 package jimm.datavision.source.charsep; 2 import jimm.datavision.*; 3 import jimm.datavision.source.*; 4 import jimm.util.XMLWriter; 5 import java.io.*; 6 import java.util.*; 7 8 14 public class CharSepSource extends DataSource { 15 16 protected static final char DEFAULT_SEP_CHAR = ','; 17 18 protected ArrayList columns; 19 protected char sepChar; 20 protected BufferedReader reader; 21 protected String sourceFilePath; 22 23 public CharSepSource(Report report) { 24 super(report, new CharSepQuery(report)); 25 columns = new ArrayList(); 26 sepChar = DEFAULT_SEP_CHAR; 27 } 28 29 public boolean canJoinTables() { return true; } 30 public boolean isSQLGenerated() { return false; } 31 public boolean isConnectionEditable() { return false; } 32 public boolean areRecordsSelectable() { return true; } 33 public boolean areRecordsSortable() { return false; } 34 public boolean canGroupRecords() { return false; } 35 36 public boolean needsSourceFile() { return true; } 37 38 public void setSourceFile(String filePath) throws FileNotFoundException { 39 sourceFilePath = filePath; 40 reuseSourceFile(); 41 } 42 43 public void reuseSourceFile() throws FileNotFoundException { 44 setInput(new FileReader(sourceFilePath)); 45 } 46 47 public void setInput(Reader reader) { 48 if (reader instanceof BufferedReader) 49 this.reader = (BufferedReader)reader; 50 else 51 this.reader = new BufferedReader(reader); 52 } 53 54 public void setInput(InputStreamReader inputStreamReader) { 55 reader = new BufferedReader(inputStreamReader); 56 } 57 58 public void setInput(String fileName) throws FileNotFoundException { 59 reader = new BufferedReader(new FileReader(fileName)); 60 } 61 62 public char getSepChar() { return sepChar; } 63 public void setSepChar(char c) { sepChar = c; } 64 65 71 public void addColumn(Column col) { 72 columns.add(col); 73 ((CharSepQuery)query).addColumn(col); 74 } 75 76 86 public Column findColumn(Object id) { 87 for (Iterator iter = columns.iterator(); iter.hasNext(); ) { 88 Column col = (Column)iter.next(); 89 if (col.getId().equals(id)) 90 return col; 91 } 92 return null; 93 } 94 95 public int indexOfSelectable(Selectable sel) { return columns.indexOf(sel); } 96 97 public Iterator tables() { return null; } 98 99 public Iterator tablesUsedInReport() { return null; } 100 101 public Iterator columns() { return columns.iterator(); } 102 103 public DataCursor execute() { 104 return new CharSepRow(this, query); 105 } 106 107 BufferedReader getReader() { 108 return reader; 109 } 110 111 void closeReader() { 112 try { 113 if (reader != null) 114 reader.close(); 115 } 116 catch (IOException ioe) { 117 ErrorHandler.error(ioe); 118 } 119 finally { 120 reader = null; 121 } 122 } 123 124 129 protected void doWriteXML(XMLWriter out) { 130 out.startElement("charsep"); 131 out.attr("sepchar", sepChar); 132 if (metadataURL != null) 133 out.textElement("metadata-url", metadataURL); 134 else 135 for (Iterator iter = columns.iterator(); iter.hasNext(); ) 136 ((Column)iter.next()).writeXML(out); 137 out.endElement(); 138 } 139 140 } 141 | Popular Tags |