Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.util;

import org.litesoft.commonfoundation.exceptions.*;
import org.litesoft.commonfoundation.iterators.*;

import java.io.*;

/**
 * An Iterator representing the results of repeatedly calling readLine
 * on a BufferedReader.  The underlying data source is any Reader.<p>
 *
 * @author George Smith
 * @version 1.0 7/28/01
 */

public class LineReaderIterator extends Iterators.AbstractReadOnly<String> {
    /**
     * Construct an Iterator representing the results of repeatedly
     * calling readLine on a BufferedReader.<p>
     *
     * @param pReader the underlying data source (null OK).
     */
    public LineReaderIterator( Reader pReader ) {
        zReader = Utils.getBufferedReader( pReader );
    }

    private BufferedReader zReader;
    private String zNextLine = null;

    private boolean loadNextLine() {
        if ( zReader == null ) {
            return false;
        }
        try {
            if ( null != (zNextLine = zReader.readLine()) ) {
                return true;
            }
        }
        catch ( IOException e ) {
            throw new FileSystemException( e );
        }
        closeReader();
        return false;
    }

    private void closeReader() {
        try {
            zReader.close();
        }
        catch ( IOException ignore ) {
            // ignoring...
        }
        zReader = null;
    }

    /**
     * If and when the GC runs, and this object is about to be reclaimed, then
     * this method is called, and if the Reader is still open, it is closed.
     */
    @Override
    public void finalize()
            throws Throwable {
        if ( zReader != null ) {
            closeReader();
        }
        super.finalize();
    }

    /**
     * Returns <tt>true</tt>/<tt>false</tt>, if there is another line to be
     * had from next().<p>
     * <p/>
     * Note: The management of the underlying Reader is handled by this method.
     * The first time hasNext() returns false the Reader is closed, and if
     * the Reader is closed, hasNext() returns false.<p>
     *
     * @return <tt>true</tt>/<tt>false</tt>, if there is another line to be
     * had from next().<p>
     *
     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Util/Iterator.html#hasNext()">java.util.Iterator#hasNext()</a>
     * @see #next()
     */
    @Override
    public boolean hasNext() {
        return ((zNextLine != null) || loadNextLine());
    }

    /**
     * Returns the next element in the interation.
     *
     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Util/Iterator.html#next()">java.util.Iterator#next()</a>
     */
    @Override
    public String next() {
        if ( !hasNext() ) {
            return super.next(); // throws Exception
        }
        String rv = zNextLine;
        zNextLine = null;
        return rv;
    }

    /**
     * Returns a debug/human friendly String that represents this.<p>
     *
     * @return A String representation of this.
     */
    @Override
    public String toString() {
        return "LineReaderIterator: " + (hasNext() ? "has More" : "at End");
    }
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/util/LineReaderIterator.java

Diff revisions: vs.
Revision Author Commited Message
948 Diff Diff GeorgeS picture GeorgeS Sat 07 Jun, 2014 23:42:39 +0000

Jusefuls Formatter Updated to New Code Format

947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

151 Diff Diff GeorgeS picture GeorgeS Thu 17 Mar, 2011 04:16:22 +0000
50 Diff Diff GeorgeS picture GeorgeS Tue 13 Apr, 2010 11:51:38 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

24 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 01:51:38 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000