3.1.2: 2012-07-31

net.sf.basedb.core
Class FileSet

java.lang.Object
  extended by net.sf.basedb.core.BasicItem<FileSetData>
      extended by net.sf.basedb.core.FileSet
All Implemented Interfaces:
AccessControlled, Identifiable

public class FileSet
extends BasicItem<FileSetData>

A file set is the container for files that have been attach to an item to hold data instead of importing it to the database.

Version:
2.5
Author:
Nicklas
Last modified
$Date: 2011-09-26 15:01:18 +0200 (Mon, 26 Sep 2011) $

Nested Class Summary
private static class FileSet.QueryRuntimeFilterImpl
           
 
Field Summary
private  FileStoreEnabled item
          The item this file set belongs to.
private static QueryRuntimeFilter RUNTIME_FILTER
          This filter gives everybody read permission to file sets.
static Item TYPE
          The type of item represented by this class.
 
Constructor Summary
FileSet(FileSetData data)
          Regular constructor if the item is not known beforehand.
FileSet(FileSetData data, FileStoreEnabled item)
          Special constructor to avoid getItem() to hit the database when the item is known beforehand.
 
Method Summary
 FileSetMember addMember(File file, DataFileType type)
          Add a file as a member to the file set.
static FileSet getById(DbControl dc, int id)
          Get a FileSet item when you know the id.
private  ExtensionsInvoker<ValidationAction> getInvoker(DbControl dc)
           
 FileStoreEnabled getItem()
          Get the item this file set belongs to.
 Item getItemType()
          Get the Item type of the item this file set belongs to.
 FileSetMember getMember(DataFileType type)
          Get the member of the given type assuming that there is only a single member of that type.
 ItemQuery<FileSetMember> getMembers()
          Get the members of this file set.
 ItemQuery<FileSetMember> getMembers(DataFileType type)
          Get a query that returns all members in a file set with a specific DataFileType.
 ItemQuery<FileSetMember> getMembers(String genericType)
          Get a query that returns all members in a file set with a specific generic ItemSubtype.
 ItemQuery<DataFileType> getMemberTypes()
          Get a query that return the DataFileType for all members of this file set.
 ItemQuery<PlatformFileType> getMissingDataFileTypes()
          Get a query that is returning all file types that have been marked as required by the associated platform but has no member in this file set.
(package private) static FileSet getNew(DbControl dc, FileStoreEnabled item)
          Create a new file set for the specified item.
 int getNumMembers(DataFileType type)
          Get the number of members in the file set of the specified type.
(package private)  PluginPermission getPluginPermissions()
           
(package private) static ItemQuery<FileSet> getQuery()
          Get a ItemQuery object configured to retrieve FileSet items.
 Item getType()
          Get the type of item represented by the object.
 Set<ItemProxy> getUsingItems()
          Get the item this file set belongs to.
 boolean hasAllRequiredFiles()
          Checks if this file set contains a file for each DataFileType that is required according to what has been specified by the Platform and PlatformVariant.
 boolean hasMember(DataFileType type)
          Check if the file set contains at least one file of the specified type.
(package private)  void initPermissions(int granted, int denied)
          READ permission is granted to all users.
 boolean isUsed()
          Always return TRUE.
 void removeAllMembers()
          Remove all members in a file set.
 int removeAllOfType(DataFileType type)
          Remove all member files of the given type.
private  FileSetMember removeAllOfTypeExcept(DataFileType type, File file)
          Remove all member files of the given type.
 boolean removeMember(File file, DataFileType type)
          Remove a file as a member from the file set.
 void removeMember(FileSetMember member)
          Remove the given member from this file set.
(package private)  void setItem(FileStoreEnabled item)
          Set the item this file set belongs to.
 FileSetMember setMember(File file, DataFileType type)
          Set a file of a given type as a member of this file set.
 List<Throwable> validate(DbControl dc)
          Validate the files in this file set.
 
Methods inherited from class net.sf.basedb.core.BasicItem
addUsingItems, addUsingItems, checkPermission, equals, getData, getDbControl, getId, getPermissions, getSessionControl, getVersion, hashCode, hasPermission, isDetached, isInDatabase, onAfterCommit, onAfterInsert, onBeforeCommit, onRollback, setDbControl, setProjectDefaults, toString, toTransferable, validate
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TYPE

public static final Item TYPE
The type of item represented by this class.

See Also:
Item.FILESET, getType()

RUNTIME_FILTER

private static final QueryRuntimeFilter RUNTIME_FILTER
This filter gives everybody read permission to file sets.


item

private FileStoreEnabled item
The item this file set belongs to.

Constructor Detail

FileSet

FileSet(FileSetData data)
Regular constructor if the item is not known beforehand.


FileSet

FileSet(FileSetData data,
        FileStoreEnabled item)
Special constructor to avoid getItem() to hit the database when the item is known beforehand.

Method Detail

getNew

static FileSet getNew(DbControl dc,
                      FileStoreEnabled item)
               throws BaseException
Create a new file set for the specified item.

Throws:
BaseException

getById

public static FileSet getById(DbControl dc,
                              int id)
                       throws ItemNotFoundException,
                              PermissionDeniedException,
                              BaseException
Get a FileSet item when you know the id.

Parameters:
dc - The DbControl which will be used for permission checking and database access.
id - The id of the item to load
Returns:
The FileSet item
Throws:
ItemNotFoundException - If an item with the specified id is not found
PermissionDeniedException - If the logged in user doesn't have read permission to the item
BaseException - If there is another error

getQuery

static ItemQuery<FileSet> getQuery()
Get a ItemQuery object configured to retrieve FileSet items. This query may return items which the logged in user doesn't have read permission to. At the moment there is no way to solve this problem.

Returns:
An ItemQuery object

getType

public Item getType()
Description copied from interface: Identifiable
Get the type of item represented by the object. The returned value is one of the values defined in the Item enumeration.

Returns:
A value indicating the type of item

isUsed

public boolean isUsed()
               throws BaseException
Always return TRUE. A file set always has a one-to-one relation to some item. The file set is automatically deleted if that item is deleted.

Overrides:
isUsed in class BasicItem<FileSetData>
Returns:
TRUE if this item is used, FALSE otherwise
Throws:
BaseException - If not able to tell if item is used or not.
See Also:
BasicItem.getUsingItems()

getUsingItems

public Set<ItemProxy> getUsingItems()
                             throws BaseException
Get the item this file set belongs to.

Overrides:
getUsingItems in class BasicItem<FileSetData>
Returns:
A set containing proxies for the items, or an empty set if no items are using this item
Throws:
BaseException - If there is an error loading the items
See Also:
BasicItem.addUsingItems(Set, Item, org.hibernate.Query)

initPermissions

void initPermissions(int granted,
                     int denied)
               throws BaseException
READ permission is granted to all users. CREATE, WRITE and DELETE permissions are granted if the logged in user has WRITE permission on the associated item.

Overrides:
initPermissions in class BasicItem<FileSetData>
Parameters:
granted - Permissions that have been granted by the subclass
denied - Permissions that have been denied by the subclass
Throws:
BaseException - If the permissions couldn't be initialised

getPluginPermissions

PluginPermission getPluginPermissions()
Overrides:
getPluginPermissions in class BasicItem<FileSetData>

getItem

public FileStoreEnabled getItem()
                         throws PermissionDeniedException,
                                BaseException
Get the item this file set belongs to.

Returns:
The FileStoreEnabled item
Throws:
PermissionDeniedException - If the logged in user doesn't have read permission to the item
BaseException - If there is another error

setItem

void setItem(FileStoreEnabled item)
Set the item this file set belongs to.


getItemType

public Item getItemType()
Get the Item type of the item this file set belongs to.


getMembers

public ItemQuery<FileSetMember> getMembers()
Get the members of this file set.

Returns:
A query returning FileSetMember items

getMembers

public ItemQuery<FileSetMember> getMembers(String genericType)
Get a query that returns all members in a file set with a specific generic ItemSubtype. Note! The query checks the generic type from the DataFileType.getGenericType(), not the File.getItemSubtype().

Parameters:
genericType - The system ID of a generic type as defined by ItemSubtype.getSystemId()
Returns:
A query returning FileSetMember items

getMembers

public ItemQuery<FileSetMember> getMembers(DataFileType type)
Get a query that returns all members in a file set with a specific DataFileType.

Parameters:
type - The type of the file
Returns:
A query returning FileSetMember items
Since:
3.0

setMember

public FileSetMember setMember(File file,
                               DataFileType type)
Set a file of a given type as a member of this file set. If one ore more files of the given type already exists, they are replaced with this file. If no member exists, a new entry is created and automatically saved to the database when DbControl.commit() is called. Calling this method is equivalent to first call removeAllOfType(DataFileType) and then addMember(File, DataFileType) except that if the given file already is a member that member entry is kept.

Parameters:
file - The file to set as a member (or null to remove it)
type - The type of the file
Returns:
The new FileSetMember item
Throws:
InvalidUseOfNullException - If file or type is null
PermissionDeniedException - If the logged in user doesn't have write permission for this file set or use permission for the file

addMember

public FileSetMember addMember(File file,
                               DataFileType type)
Add a file as a member to the file set.

Parameters:
file - The file to add
type - The type of the file
Returns:
The new FileSetMember item
Throws:
InvalidUseOfNullException - If file or type is null
PermissionDeniedException - If the logged in user doesn't have write permission for this file set or use permission for the file
Since:
3.0

hasMember

public boolean hasMember(DataFileType type)
Check if the file set contains at least one file of the specified type.

Parameters:
type - A DataFileType object
Returns:
TRUE if the file set contains a file of the specified type, FALSE otherwise

getNumMembers

public int getNumMembers(DataFileType type)
Get the number of members in the file set of the specified type.

Parameters:
type - A DataFileType object
Returns:
The number of files in the file set with the given type

getMember

public FileSetMember getMember(DataFileType type)
Get the member of the given type assuming that there is only a single member of that type. If there is more than one member of the given type, it is undefined which file that is returned.

Parameters:
type - A DataFileType object
Returns:
A FileSetMember object or null if no member of the specified type exists

removeMember

public void removeMember(FileSetMember member)
Remove the given member from this file set.

Parameters:
member - The member to remove
Since:
3.0

removeMember

public boolean removeMember(File file,
                            DataFileType type)
Remove a file as a member from the file set.

Parameters:
file - The file to remove
type - The type of the file
Returns:
TRUE if a member was removed, FALSE if not
Throws:
InvalidUseOfNullException - If file or type is null
PermissionDeniedException - If the logged in user doesn't have write permission for this file set
Since:
3.0

removeAllOfType

public int removeAllOfType(DataFileType type)
Remove all member files of the given type.

Parameters:
type - A DataFileType object
Returns:
The number of removed files
Throws:
InvalidUseOfNullException - If type is null
PermissionDeniedException - If the logged in user doesn't have write permission for this file set
Since:
3.0

removeAllOfTypeExcept

private FileSetMember removeAllOfTypeExcept(DataFileType type,
                                            File file)
Remove all member files of the given type.

Parameters:
type - A DataFileType object
Returns:
The number of removed files
Throws:
InvalidUseOfNullException - If type is null
PermissionDeniedException - If the logged in user doesn't have write permission for this file set
Since:
3.0

removeAllMembers

public void removeAllMembers()
Remove all members in a file set.

Throws:
PermissionDeniedException - If the logged in user doesn't have write permission for this file set

getMemberTypes

public ItemQuery<DataFileType> getMemberTypes()
Get a query that return the DataFileType for all members of this file set.

Returns:
A query object

hasAllRequiredFiles

public boolean hasAllRequiredFiles()
Checks if this file set contains a file for each DataFileType that is required according to what has been specified by the Platform and PlatformVariant.

Returns:
TRUE if all files are present, FALSE otherwise. If the items has no platform TRUE is always returned
See Also:
PlatformFileType.isRequired()

getMissingDataFileTypes

public ItemQuery<PlatformFileType> getMissingDataFileTypes()
Get a query that is returning all file types that have been marked as required by the associated platform but has no member in this file set.

Returns:
A query or null if no platform is associated with this item

validate

public List<Throwable> validate(DbControl dc)
Validate the files in this file set. This method will invoke extensions for the "net.sf.basedb.core.filehandler.validator" extension point and let them handle the actual validation. This method will not throw any errors that have been caused by the validation process. Errors are returned as a list of Throwable:s and is also reported by setting the FileSetMember.isValid() and FileSetMember.getErrorMessage() properties for each file.

Note! PermissionDeniedException:s are not considered validation errors. They are ignored and doesn't change the validation status.

InvalidRelationException is a less severe type of exception and can be used by a validator when the actual file it is validating is valid but a dependent file is not. For example, a valid CEL file has been attached to a raw bioassay, but it doesn't match the CDF file attached to the array design. If a validator throws this exception the member status will be set to invalid, but metadata is not reset.

Parameters:
dc - The DbControl to use in the validation process
Returns:
A list of validation errors, if everything is successful the list is empty

getInvoker

private ExtensionsInvoker<ValidationAction> getInvoker(DbControl dc)

3.1.2: 2012-07-31