2.17.2: 2011-06-17

net.sf.basedb.util.importer.spotdata
Class BaseFileInfo

java.lang.Object
  extended by net.sf.basedb.util.importer.spotdata.BaseFileInfo

public class BaseFileInfo
extends Object

Collects information about a BASEfile as it gets parsed by a BaseFileImporter. Information in one section is often needed when parsing other sections or after the parsing has been completed.

Version:
2.14
Author:
Nicklas
Last modified
$Date: 2010-08-03 11:21:30 +0200 (Tue, 03 Aug 2010) $

Nested Class Summary
static class BaseFileInfo.ChildBioAssay
          Keeps information about a new child bioassay from the 'assays' section or 'spot' sections.
static class BaseFileInfo.SpotSectionInfo
          Keeps information about headers and more in a 'spot' section.
 
Field Summary
private  boolean assaysHaveParentAssaysMapping
           
private  Map<Integer,BaseFileInfo.ChildBioAssay> childAssays
           
private  boolean childHasDifferentReporterPositionMapping
           
private  Map<Integer,Integer> childReporterPositions
           
private  Map<String,ExtraValueType> extraFloats
           
private  FileWrapper file
           
private  Map<Short,List<Short>> parentChildColumnMapping
           
private  boolean parentHasNullReporter
           
private  boolean parentHasZeroReporter
           
private  Map<Integer,Integer> parentReporterPositions
           
private  Map<Integer,BaseFileInfo.SpotSectionInfo> spotSectionInfo
           
 
Constructor Summary
BaseFileInfo(File file)
          Deprecated. In 2.16, use BaseFileInfo(FileWrapper) instead
BaseFileInfo(FileWrapper file)
          The source file which should be a BASEfile.
 
Method Summary
 boolean addChildAssay(BaseFileInfo.ChildBioAssay child)
          Add information about a child assay.
 Integer addChildReporter(Integer position, Integer reporterId)
          Add a child position/reporter mapping from the parsed BASEfile.
 ExtraValueType addExtraFloat(DbControl dc, String extraFloatId)
          Add information about an extra float value that appears in the BASEfile.
 void addSpotSectionInfo(int spotSection, BaseFileInfo.SpotSectionInfo info)
          Adds information about a 'spot' section.
 void checkBioAssay(DbControl dc, int id, int line)
          Checks that the bioassay with the given id exists in the database.
 boolean getAssaysHaveParentAssaysMapping()
          A flag that indicates if the BASEfile includes a mapping from child to parent assays.
 String getCharacterSet()
          Get the character set used by the file, or null if not known.
 BaseFileInfo.ChildBioAssay getChildAssay(int id)
          Get the child bioassay with the given id (from the BASEfile).
 Collection<BaseFileInfo.ChildBioAssay> getChildAssays()
          Get information about all child bioassays referenced in the file.
 List<Short> getChildColumns(short parentColumn)
          Get all child columns that have been mapped to the specified parent column.
 boolean getChildHasDifferentReporterPositionMapping()
          A flag that indicates if the child data has a different position/reporter mapping than the parent bioassay set.
 Map<Integer,Integer> getChildReporterPositions()
          Get a map with all added child position/reporter mappings.
 ExtraValueType getExtraFloat(String extraFloatId)
          Get the extra value type that has the given external id.
 String getName()
          Get the name of the file.
 boolean getParentHasNullReporter()
          A flag that indicates if at least one position in the parent bioassay set has a null reporter or not.
 boolean getParentHasZeroReporter()
          A flag that indicates if at least one position in the parent bioassay set has a reporter with ID=0.
 long getSize()
          Get the file size.
 BaseFileInfo.SpotSectionInfo getSpotSectionInfo(int spotSection)
          Get information about a spot section.
 void loadParentReporterPositions(DbControl dc, BioAssaySet parent)
          Load position/reporter mapping from the parent bioassay set.
 void mapParentChildColumns(short parentColumn, short childColumn)
          Maps a parent data cube column to a child cube column.
 void setAssaysHaveParentAssaysMapping(boolean haveMapping)
          Set a flag that indicates if the BASEfile includes a mapping from child to parent assays.
 void setChildHasDifferentReporterPositionMapping(boolean flag)
          Set a flag that indicates if the child data has a different position/reporter mapping than the parent bioassay set.
 void setParentHasNullReporter(boolean parentHasNullReporter)
          Set a flag indicating that at least one position in the parent bioassay set has a null reporter.
 void setParentHasZeroReporter(boolean parentHasZeroReporter)
          Set a flag indicating that at least one position in the parent bioassay set has a reporter with ID=0.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

file

private final FileWrapper file

assaysHaveParentAssaysMapping

private boolean assaysHaveParentAssaysMapping

childAssays

private Map<Integer,BaseFileInfo.ChildBioAssay> childAssays

parentHasNullReporter

private boolean parentHasNullReporter

parentHasZeroReporter

private boolean parentHasZeroReporter

parentReporterPositions

private Map<Integer,Integer> parentReporterPositions

parentChildColumnMapping

private Map<Short,List<Short>> parentChildColumnMapping

spotSectionInfo

private Map<Integer,BaseFileInfo.SpotSectionInfo> spotSectionInfo

extraFloats

private Map<String,ExtraValueType> extraFloats

childHasDifferentReporterPositionMapping

private boolean childHasDifferentReporterPositionMapping

childReporterPositions

private Map<Integer,Integer> childReporterPositions
Constructor Detail

BaseFileInfo

@Deprecated
public BaseFileInfo(File file)
Deprecated. In 2.16, use BaseFileInfo(FileWrapper) instead

The source file which should be a BASEfile.


BaseFileInfo

public BaseFileInfo(FileWrapper file)
The source file which should be a BASEfile.

Since:
2.16
Method Detail

getName

public String getName()
Get the name of the file.


getCharacterSet

public String getCharacterSet()
Get the character set used by the file, or null if not known.


getSize

public long getSize()
Get the file size.


setAssaysHaveParentAssaysMapping

public void setAssaysHaveParentAssaysMapping(boolean haveMapping)
Set a flag that indicates if the BASEfile includes a mapping from child to parent assays.


getAssaysHaveParentAssaysMapping

public boolean getAssaysHaveParentAssaysMapping()
A flag that indicates if the BASEfile includes a mapping from child to parent assays.


addChildAssay

public boolean addChildAssay(BaseFileInfo.ChildBioAssay child)
Add information about a child assay.

Parameters:
child - Information about the child assay
Returns:
TRUE if the child was added, FALSE if a child with the same ID already exists

getChildAssays

public Collection<BaseFileInfo.ChildBioAssay> getChildAssays()
Get information about all child bioassays referenced in the file.


getChildAssay

public BaseFileInfo.ChildBioAssay getChildAssay(int id)
Get the child bioassay with the given id (from the BASEfile).

Parameters:
id - The ID in the BASEfile
Returns:
A ChildBioAssay or null

checkBioAssay

public void checkBioAssay(DbControl dc,
                          int id,
                          int line)
Checks that the bioassay with the given id exists in the database. If not, an exception is thrown.

Parameters:
dc - The DbControl to use
id - The id of the bioassay
line - The current line
Throws:
ItemNotFoundException - If the bioassay doesn't exists in the database

setParentHasNullReporter

public void setParentHasNullReporter(boolean parentHasNullReporter)
Set a flag indicating that at least one position in the parent bioassay set has a null reporter.

Parameters:
parentHasNullReporter - TRUE if there is a position with a null reporter, FALSE otherwise
See Also:
loadParentReporterPositions(DbControl, BioAssaySet)

getParentHasNullReporter

public boolean getParentHasNullReporter()
A flag that indicates if at least one position in the parent bioassay set has a null reporter or not. We need to know this because some BASE 1 plug-ins convert a null reporter to 0 and in most cases it is safe to convert it back, but only if the parent had a null reporter but not a '0' reporter to begin with.

See Also:
getParentHasZeroReporter()

setParentHasZeroReporter

public void setParentHasZeroReporter(boolean parentHasZeroReporter)
Set a flag indicating that at least one position in the parent bioassay set has a reporter with ID=0.


getParentHasZeroReporter

public boolean getParentHasZeroReporter()
A flag that indicates if at least one position in the parent bioassay set has a reporter with ID=0.

See Also:
getParentHasNullReporter()

loadParentReporterPositions

public void loadParentReporterPositions(DbControl dc,
                                        BioAssaySet parent)
Load position/reporter mapping from the parent bioassay set. This will also set the getParentHasNullReporter()/getParentHasZeroReporter() flags.

Parameters:
dc - A DbControl to use
parent - The parent bioassay set

setChildHasDifferentReporterPositionMapping

public void setChildHasDifferentReporterPositionMapping(boolean flag)
Set a flag that indicates if the child data has a different position/reporter mapping than the parent bioassay set.

See Also:
addChildReporter(Integer, Integer)

getChildHasDifferentReporterPositionMapping

public boolean getChildHasDifferentReporterPositionMapping()
A flag that indicates if the child data has a different position/reporter mapping than the parent bioassay set.


addChildReporter

public Integer addChildReporter(Integer position,
                                Integer reporterId)
Add a child position/reporter mapping from the parsed BASEfile. The added mapping will be checked against the parent position/reporter mapping and the getChildHasDifferentReporterPositionMapping() flag is set if the mapping has changed.

If a mapping for the given position already exists, a check is made if the mapping is identical or different. If the mapping is different the reporter id of the already existing mapping is returned. It is up to the called to take any appropriate action in this case (usually; throw an exception). If the mapping doesn't exist or if the mapping is identical the 'reporterId' value is returned. Thus, it is easy to check for success by simply comparing:

              
if (reporterId != addChildReporter(position, reporterId))
{
   // ... throw exception
}

Parameters:
position - The position value
reporterId - The ID of the reporter
Returns:
The reporterId (same instance) if the mapping is new or if an identical mapping already exists. The reporer ID of an existing mapping if it is different.

getChildReporterPositions

public Map<Integer,Integer> getChildReporterPositions()
Get a map with all added child position/reporter mappings. The key is the position value and the value is the reporter id.


mapParentChildColumns

public void mapParentChildColumns(short parentColumn,
                                  short childColumn)
Maps a parent data cube column to a child cube column. Note! A parent may map to multiple childs, and a child may have multiple parents.

Parameters:
parentColumn - The parent data cube column
childColumn - The child data cube column

getChildColumns

public List<Short> getChildColumns(short parentColumn)
Get all child columns that have been mapped to the specified parent column.

Returns:
A list or null if no mapping exists

addSpotSectionInfo

public void addSpotSectionInfo(int spotSection,
                               BaseFileInfo.SpotSectionInfo info)
Adds information about a 'spot' section.

Parameters:
spotSection - The ordinal number of the spot section as it appears in the BASEfile, starting with 1
info - The information

getSpotSectionInfo

public BaseFileInfo.SpotSectionInfo getSpotSectionInfo(int spotSection)
Get information about a spot section.

Parameters:
spotSection - The ordinal number of the spot section as it appears in the BASEfile, starting with 1

addExtraFloat

public ExtraValueType addExtraFloat(DbControl dc,
                                    String extraFloatId)
Add information about an extra float value that appears in the BASEfile. This method will check if the an ExtraValueType with the given external id exists. If not, a new float-type extra value type is created.

Parameters:
dc - A DbControl object to use for database access
extraFloatId - The external id of an extra value type

getExtraFloat

public ExtraValueType getExtraFloat(String extraFloatId)
Get the extra value type that has the given external id. The extra float must have been added with addExtraFloat(DbControl, String) before.

Parameters:
extraFloatId - The external id of an extra value type
Returns:
The extra value type, or null

2.17.2: 2011-06-17