Filesystem -_property_table : PropertyTable -_header_block : HeaderBlock -_documents : List +createDocument(in stream:InputStream, in name:String) +writeFilesystem(in stream:OutputStream) +Filesystem() Document -_property : DocumentProperty -_blocks[] : DocumentBlock #getDocumentProperty() : DocumentProperty #Document(in name:String, in stream:InputStream) DocumentBlock -_data[ 512 ] : byte -_bytes_read : int +DocumentBlock(in stream:InputStream) +size() : int +partiallyRead() : boolean HeaderBlock -_bat_count : IntegerField -_property_start : IntegerField -_sbat_start : IntegerField = -2 -_xbat_start : IntegerField = -2 -_xbat_count : IntegerField = 0 -_data[ 512 ] : byte +setBATBlocks(in blockCount:int, in startBlock:int) : BATBlock +setPropertyStart(in startBlock:int) +setXBATStart(in startBlock:int) +Header() +calculateXBATStorageRequirements(in blockCount:int) : int PropertyTable -_properties : List -_blocks[ ] : BlockWritable -_start_block : int +getRoot() : Directory +addProperty(in property:Property) +preWrite() +PropertyTable() +getStartBlock() : int DocumentProperty +DocumentProperty(in name:String, in size:int) <<Interface>> BATManaged +countBlocks() : int +setStartBlock(in index:int) <<Interface>> BlockWritable +writeBlocks(in stream:OutputStream) BlockAllocationTable -_entries : IntList -_blocks[] : BATBlock #createBlocks() #allocateSpace(in blockCount:int) : int #BlockAllocationTable() #countBlocks() : int BATBlock -_fields[ 128 ] : IntegerField -_data[ 512 ] : byte +createBATBlocks(in entries[]:int) : BATBlock +calculateStorageRequirements(in entryCount:int) : int sourcePortFig="Fig0.0" destPortFig="Fig1.0" sourceFigNode="Fig0" destFigNode="Fig1" 0..* sourcePortFig="Fig1.0" destPortFig="Fig2.0" sourceFigNode="Fig1" destFigNode="Fig2" 1..* sourcePortFig="Fig0.0" destPortFig="Fig3.0" sourceFigNode="Fig0" destFigNode="Fig3" sourcePortFig="Fig0.0" destPortFig="Fig4.0" sourceFigNode="Fig0" destFigNode="Fig4" sourcePortFig="Fig1.0" destPortFig="Fig5.0" sourceFigNode="Fig1" destFigNode="Fig5" sourcePortFig="Fig4.0" destPortFig="Fig6.0" sourceFigNode="Fig4" destFigNode="Fig6" sourcePortFig="Fig1.0" destPortFig="Fig6.0" sourceFigNode="Fig1" destFigNode="Fig6" sourcePortFig="Fig1.0" destPortFig="Fig7.0" sourceFigNode="Fig1" destFigNode="Fig7" sourcePortFig="Fig4.0" destPortFig="Fig7.0" sourceFigNode="Fig4" destFigNode="Fig7" sourcePortFig="Fig8.0" destPortFig="Fig7.0" sourceFigNode="Fig8" destFigNode="Fig7" sourcePortFig="Fig8.0" destPortFig="Fig9.0" sourceFigNode="Fig8" destFigNode="Fig9" 1..*