2.17.2: 2011-06-17

net.sf.basedb.util.bfs
Class MetadataModel

java.lang.Object
  extended by net.sf.basedb.util.bfs.MetadataModel
All Implemented Interfaces:
EventHandler

public class MetadataModel
extends Object
implements EventHandler

A model container of the contents of a BFS metadata file. This class is primarily intended to be used when parsing a BFS metadata file (see MetadataParser.parse(EventHandler)), but it can be used to programmatically create a BFS metadata file and then write it out to a file (see print(Writer)).

The model can contain multiple sections, each one with multiple entries. A section has a name, but it doesn't have to be unique. An entry is either a key/value pair or a key/array of values. There may be multiple entries with the same key in a section.

Version:
2.15
Author:
Nicklas
Last modified
$Date: 2010-01-27 14:03:33 +0100 (Wed, 27 Jan 2010) $

Nested Class Summary
static class MetadataModel.Section
          Holds information about a section.
static class MetadataModel.SectionEntry
          Holds information about a section entry.
 
Field Summary
private  MetadataModel.Section currentSection
           
private  MetadataModel.Section files
           
private  List<MetadataModel.Section> sections
           
private  String subtype
           
 
Constructor Summary
MetadataModel()
          Create a new metadata model.
 
Method Summary
 void addFile(String key, String name)
          Add an entry to the 'files' section.
 MetadataModel.Section addSection(String name)
          Adds a new section to the model.
 String getFile(int index)
          Get the file entry with a given index.
 String getFile(String key)
          Get the file entry for a given key.
 int getFileCount()
          Get the number of entries in the 'files' section.
 MetadataModel.Section getSection(int index)
          Get the section at a given index.
 MetadataModel.Section getSection(String name)
          Get the first section with a given name.
 int getSectionCount()
          Get the number of sections.
 String getSubtype()
          Get the BFS subtype.
 String getValue(String section, String key)
          Utility method for getting the value of the first entry in the first section that matches the given section and key name.
 String[] getValues(String section, String key)
          Utility method for getting the values of the first entry in the first section that matches the given section and key name.
 void handleEvent(EventType eventType, Object eventData, BfsParser parser)
          The method is called by the parser when it has found something interesting in a BFS file.
 void print(Writer out)
          Utility method for printing the contents of this model object to a stream.
 void setSubtype(String subtype)
          Set the subtype of the BFS.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

subtype

private String subtype

sections

private List<MetadataModel.Section> sections

files

private MetadataModel.Section files

currentSection

private MetadataModel.Section currentSection
Constructor Detail

MetadataModel

public MetadataModel()
Create a new metadata model.

Method Detail

handleEvent

public void handleEvent(EventType eventType,
                        Object eventData,
                        BfsParser parser)
Description copied from interface: EventHandler
The method is called by the parser when it has found something interesting in a BFS file. See the respective parser documentation for documentation about the events that it generates. There is usually some kind of information associated with the event. This information is sent to the event handler as an object. The parser should document what kind of information it sends so that event handler implementation can react and use the information.

It is recommended that event handlers ignore event types they don't know about.

Specified by:
handleEvent in interface EventHandler
Parameters:
eventType - The type of event. See the parser documentation for more information about the event types it generates
eventData - The data that is associated with the event
parser - The parser that is resposible for parsing the file

print

public void print(Writer out)
Utility method for printing the contents of this model object to a stream.

Parameters:
out - The output stream to write to

setSubtype

public void setSubtype(String subtype)
Set the subtype of the BFS.


getSubtype

public String getSubtype()
Get the BFS subtype.


getSectionCount

public int getSectionCount()
Get the number of sections.


addSection

public MetadataModel.Section addSection(String name)
Adds a new section to the model.

Parameters:
name - The name of the section
Returns:
The new section

getSection

public MetadataModel.Section getSection(int index)
Get the section at a given index.

Parameters:
index - The index, a value between 0 and getSectionCount()-1
Returns:
Information about the section
Throws:
ArrayIndexOutOfBoundsException - If the index is outside the allowed range

getSection

public MetadataModel.Section getSection(String name)
Get the first section with a given name. If there are multiple sections with the same name, only the first is returned.

Parameters:
name - The name of the section to find
Returns:
A section or null if no section exists

addFile

public void addFile(String key,
                    String name)
Add an entry to the 'files' section.

Parameters:
key - The entry key
name - The filename (not verified)

getFileCount

public int getFileCount()
Get the number of entries in the 'files' section.


getFile

public String getFile(int index)
Get the file entry with a given index.

Parameters:
index - The index, a value between 0 and getFileCount() - 1
Returns:
The file name

getFile

public String getFile(String key)
Get the file entry for a given key. If multiple entries with the same key exists, only the first is returned.

Parameters:
key - The key to look for
Returns:
The file name of null if no entry exists for the given key

getValue

public String getValue(String section,
                       String key)
Utility method for getting the value of the first entry in the first section that matches the given section and key name.

Parameters:
section - The name of the section
key - The key of the entry
Returns:
The value, or null if no section or entry is found

getValues

public String[] getValues(String section,
                          String key)
Utility method for getting the values of the first entry in the first section that matches the given section and key name.

Parameters:
section - The name of the section
key - The key of the entry
Returns:
The values, or null if no section or entry is found

2.17.2: 2011-06-17