alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 *
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 *
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.lib.cvsclient.command.annotate;

import java.io.*;
import java.util.*;

import org.netbeans.lib.cvsclient.command.*;

/**
 * Describes annotate information for  a file. This is the result of doing a
 * cvs annotate command. The fields in instances of this object are populated
 * by response handlers.
 * @author  Milos Kleint
 */
public class AnnotateInformation extends FileInfoContainer {
    /**
     * The file, associated with thiz.
     */
    private File file;

    /**
     * List of lines stored here.
     */
    private List linesList;

    private Iterator iterator;

    private File tempFile;
    
    private File tempDir;

    private BufferedOutputStream tempOutStream;

    public AnnotateInformation() {
        this.tempDir = null;
    }

    public AnnotateInformation(File tempDir) {
        this.tempDir = tempDir;
    }

    /**
     * Getter for property file.
     * @return Value of property file.
     */
    public File getFile() {
        return file;
    }

    /**
     * Setter for property file.
     * @param file New value of property file.
     */
    public void setFile(File file) {
        this.file = file;
    }

    /**
     * Return a string representation of this object. Useful for debugging.
     */
    public String toString() {
        StringBuffer buf = new StringBuffer(30);
        buf.append("\nFile: " + ((file != null)?file.getAbsolutePath():"null")); //NOI18N
        return buf.toString();
    }

    public AnnotateLine createAnnotateLine() {
        return new AnnotateLine();
    }

    public void addLine(AnnotateLine line) {
        linesList.add(line);
    }

    public AnnotateLine getFirstLine() {
        if (linesList == null) {
            linesList = createLinesList();
        }
        iterator = linesList.iterator();
        return getNextLine();
    }

    public AnnotateLine getNextLine() {
        if (iterator == null) {
            return null;
        }
        if (!iterator.hasNext()) {
            return null;
        }
        return (AnnotateLine)iterator.next();
    }

    /**
     * Adds the specified line to the temporary file.
     */
    protected void addToTempFile(String line) throws IOException {
        if (tempOutStream == null) {
            try {
                tempFile = File.createTempFile("ann", ".cvs", tempDir); //NOI18N
                tempFile.deleteOnExit();
                tempOutStream = new BufferedOutputStream(
                        new FileOutputStream(tempFile));
            }
            catch (IOException ex) {
                // TODO
            }
        }
        tempOutStream.write(line.getBytes());
        tempOutStream.write('\n');
    }

    protected void closeTempFile() throws IOException {
        if (tempOutStream == null) {
            return;
        }
        try {
            tempOutStream.flush();
        } finally {
            tempOutStream.close();
        }
    }

    public File getTempFile() {
        return tempFile;
    }

    private List createLinesList() {
        List toReturn = new LinkedList();
        BufferedReader reader = null;
        if (tempFile == null) {
            return toReturn;
        }
        try {
            reader = new BufferedReader(new FileReader(tempFile));
            String line = reader.readLine();
            int lineNum = 1;
            while (line != null) {
                AnnotateLine annLine = AnnotateBuilder.processLine(line);
                if (annLine != null) {
                    annLine.setLineNum(lineNum);
                    toReturn.add(annLine);
                    lineNum++;
                }
                line = reader.readLine();
            }
        }
        catch (IOException exc) {
        }
        finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            }
            catch (IOException ex2) {
            }
        }
        return toReturn;
    }

}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.