Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' of
[jalview.git] / srcjar / javajs / util / DataReader.java
1 package javajs.util;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.Reader;
6 import java.io.StringReader;
7
8 /**
9  * Just a simple abstract class to join a String reader and a String[]
10  * reader under the same BufferedReader umbrella.
11  * 
12  * Subclassed as StringDataReader, ArrayDataReader, and ListDataReader
13  * 
14  */
15
16 public abstract class DataReader extends BufferedReader {
17
18   public abstract DataReader setData(Object data);
19   
20   protected int ptMark;
21
22   public DataReader() {
23     super(new StringReader(""));
24   }
25
26   protected DataReader(Reader in) {
27     super(in);
28   }
29
30   public BufferedReader getBufferedReader() {
31     return this;
32   }
33
34   protected int readBuf(char[] buf, int off, int len) throws IOException {
35     // not used by StringDataReader
36     int nRead = 0;
37     String line = readLine();
38     if (line == null)
39       return 0;
40     int linept = 0;
41     int linelen = line.length();
42     for (int i = off; i < len && linelen >= 0; i++) {
43       if (linept >= linelen) {
44         linept = 0;
45         buf[i] = '\n';
46         line = readLine();
47         linelen = (line == null ? -1 : line.length());
48       } else {
49         buf[i] = line.charAt(linept++);
50       }
51       nRead++;
52     }
53     return nRead;
54   }
55
56 }