org.deegree_impl.io.rtree
Class PersistentPageFile

java.lang.Object
  extended byorg.deegree_impl.io.rtree.PageFile
      extended byorg.deegree_impl.io.rtree.PersistentPageFile

public class PersistentPageFile
extends PageFile

Persistente Implementierung einer PageFile. Implementiert als RandomAccesFile. Aufbau der Datei -- Header -- int pageFileVersion int dimension int capacity = maximum + 1 for overflow int minimum -- Body -- aufeinanderfolgende Pages mit int typ - 1 LeafNode 2 NoneLeafNode int place - Platz, wo Knoten im Vaterknoten steht int counter - Derzeit benutzer Platz im Knoten int parentNode - Nummer der PageFile des Vaterknotens int pageNumber - eigene PageFile-Nummer - for(i = 0; i < capacity; i++) int data Eintrag i - pageNumber Kindknoten oder Objekt-ID der Dateneinträge - jeweils Abhängigkeit von dimension = x double pMin x.Dimension - pMin der gemeinsamen HyperBoundingBox double pMax x.Dimension - pMax der gemeinsamen HyperBoundingBox - for(i = 0; i < capacity; i++) double pMin x.Dimension - pMin HyperBB für Eintrag i double pMax x.Dimension - pMax HyperBB für Eintrag i int entspr. 4 Bytes - double entspr. 8 Bytes PageSize = (4 * (5 + capacity)) + (capacity + 1) * (dimension * 16)

Version:
1.0
Author:
Wolfgang Bär

Field Summary
private  byte[] buffer
           
private  boolean closed
           
private static int EMPTY_PAGE
           
private  java.util.Stack emptyPages
           
private  java.io.RandomAccessFile file
           
private  java.lang.String fileName
           
private static int PAGEFILE_VERSION
           
private  int pageSize
           
 
Fields inherited from class org.deegree_impl.io.rtree.PageFile
capacity, dimension, minimum
 
Constructor Summary
PersistentPageFile(java.lang.String fileName)
          Konstruktor für PersistentPageFile.
 
Method Summary
 void close()
          Closes the pagefile and frees the underlying recourses.
 Node deleteNode(int pageNumber)
          Markiert einen Knoten in der PageFile als gelöscht.
 void finalize()
           
 void initialize(int dimension, int capacity)
          Initialisiert die PageFile.
 HyperBoundingBox readNextHyperBoundingBox(java.io.DataInputStream ds)
           
 Node readNode(int pageNumber)
          Liest einen Knoten aus der PageFile.
 int writeNode(Node node)
          Schreibt einen Knoten in PageFile.
 
Methods inherited from class org.deegree_impl.io.rtree.PageFile
getCapacity, getDimension, getMinimum
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PAGEFILE_VERSION

private static final int PAGEFILE_VERSION
See Also:
Constant Field Values

EMPTY_PAGE

private static final int EMPTY_PAGE
See Also:
Constant Field Values

file

private java.io.RandomAccessFile file

emptyPages

private java.util.Stack emptyPages

fileName

private java.lang.String fileName

buffer

private byte[] buffer

closed

private boolean closed

pageSize

private int pageSize
Constructor Detail

PersistentPageFile

public PersistentPageFile(java.lang.String fileName)
Konstruktor für PersistentPageFile.

Parameters:
fileName -
Method Detail

initialize

public void initialize(int dimension,
                       int capacity)
                throws PageFileException
Initialisiert die PageFile. Überschreibt initialize() in PageFile.

Overrides:
initialize in class PageFile
Parameters:
dimension - der Daten
capacity - Kapazität der Knoten
Throws:
PageFileException

readNode

public Node readNode(int pageNumber)
              throws PageFileException
Description copied from class: PageFile
Liest einen Knoten aus der PageFile.

Specified by:
readNode in class PageFile
Parameters:
pageNumber - PageFileNummer, wo Knoten gespeichert ist
Returns:
AbstractNode Knoten
Throws:
PageFileException
See Also:
PageFile.readNode(int)

readNextHyperBoundingBox

public HyperBoundingBox readNextHyperBoundingBox(java.io.DataInputStream ds)
                                          throws java.io.IOException
Parameters:
ds -
Returns:
Throws:
java.io.IOException

writeNode

public int writeNode(Node node)
              throws PageFileException
Description copied from class: PageFile
Schreibt einen Knoten in PageFile. Methode muß prüfen, ob Knoten eine PageNumber besitzt, ansonsten wird eine neu zugewiesen und zurückgegeben.

Specified by:
writeNode in class PageFile
Parameters:
node - zu schreibender Knoten
Returns:
int PageFileNummer, wo Knoten gepeichert.
Throws:
PageFileException
See Also:
PageFile.writeNode(Node)

deleteNode

public Node deleteNode(int pageNumber)
                throws PageFileException
Description copied from class: PageFile
Markiert einen Knoten in der PageFile als gelöscht.

Specified by:
deleteNode in class PageFile
Parameters:
pageNumber - PageFilenummer
Returns:
AbstractNode gelöschter Knoten
Throws:
PageFileException
See Also:
PageFile.deleteNode(int)

close

public void close()
           throws PageFileException
Description copied from class: PageFile
Closes the pagefile and frees the underlying recourses.

Specified by:
close in class PageFile
Throws:
PageFileException
See Also:
PageFile.close()

finalize

public void finalize()
              throws java.lang.Throwable
Throws:
java.lang.Throwable