edu.umd.cs.findbugs.ba
Class SourceFile

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.SourceFile

public class SourceFile
extends java.lang.Object

Cached data for a source file. Contains a map of line numbers to byte offsets, for quick searching of source lines.

Author:
David Hovemeyer
See Also:
SourceFinder

Nested Class Summary
private static class SourceFile.LineNumberMapBuilder
          Helper object to build map of line number to byte offset for a source file.
 
Field Summary
private  byte[] data
           
private  SourceFileDataSource dataSource
           
private static int DEFAULT_SIZE
           
private  int[] lineNumberMap
           
private  int numLines
           
 
Constructor Summary
SourceFile(SourceFileDataSource dataSource)
          Constructor.
 
Method Summary
 void addLineOffset(int offset)
          Add a source line byte offset.
 java.lang.String getFullFileName()
          Get the full path name of the source file (with directory).
 java.io.InputStream getInputStream()
          Get an InputStream on data.
 java.io.InputStream getInputStreamFromOffset(int offset)
          Get an InputStream on data starting at given offset.
 int getLineOffset(int line)
          Get the byte offset in the data for a source line.
private static int intValueOf(byte b)
           
private  void loadFileData()
           
private  void setData(byte[] data)
          Set the source file data.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIZE

private static final int DEFAULT_SIZE
See Also:
Constant Field Values

dataSource

private SourceFileDataSource dataSource

data

private byte[] data

lineNumberMap

private int[] lineNumberMap

numLines

private int numLines
Constructor Detail

SourceFile

public SourceFile(SourceFileDataSource dataSource)
Constructor.

Parameters:
dataSource - the SourceFileDataSource object which will provide the data of the source file
Method Detail

intValueOf

private static int intValueOf(byte b)

getFullFileName

public java.lang.String getFullFileName()
Get the full path name of the source file (with directory).


getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException
Get an InputStream on data.

Returns:
an InputStream on the data in the source file, starting from given offset
Throws:
java.io.IOException

getInputStreamFromOffset

public java.io.InputStream getInputStreamFromOffset(int offset)
                                             throws java.io.IOException
Get an InputStream on data starting at given offset.

Parameters:
offset - the start offset
Returns:
an InputStream on the data in the source file, starting at the given offset
Throws:
java.io.IOException

addLineOffset

public void addLineOffset(int offset)
Add a source line byte offset. This method should be called for each line in the source file, in order.

Parameters:
offset - the byte offset of the next source line

getLineOffset

public int getLineOffset(int line)
Get the byte offset in the data for a source line. Note that lines are considered to be zero-index, so the first line in the file is numbered zero.

Parameters:
line - the line number
Returns:
the byte offset in the file's data for the line, or -1 if the line is not valid

loadFileData

private void loadFileData()
                   throws java.io.IOException
Throws:
java.io.IOException

setData

private void setData(byte[] data)
Set the source file data.

Parameters:
data - the data