public class FileOwnerQuery extends Object
There is a default implementation of FileOwnerQueryImplementation
which considers a file owned by the project corresponding to the nearest enclosing
project directory or marked external owner, if such a directory exists. But
other implementations can be registered to lookup as well.
Warning: This class and it's methods may not be used within DataObject recognition in DataLoaders. eg. in MultiFileLoader
Modifier and Type | Field and Description |
---|---|
static int |
EXTERNAL_ALGORITHM_TRANSIENT
Simplest algorithm for marking external file owners, which just keeps
a cache of this information.
|
static Project |
UNOWNED
Pseudoproject indicating just that a directory is definitely unowned.
|
Modifier and Type | Method and Description |
---|---|
static Project |
getOwner(FileObject file)
Find the project, if any, which "owns" the given file.
|
static Project |
getOwner(URI uri)
Find the project, if any, which "owns" the given URI.
|
static void |
markExternalOwner(FileObject root,
Project owner,
int algorithm)
Mark an external folder or file as being owned by a particular project.
|
static void |
markExternalOwner(URI root,
Project owner,
int algorithm)
Mark an external URI (folder or file) as being owned by a particular project.
|
public static final Project UNOWNED
getOwner
overload of
FileOwnerQueryImplementation
, in which case null is returned from
either getOwner
overload here. May also be passed to either
markExternalOwner
overload, in which case the standard directory
search will be pruned at this point with no result.public static final int EXTERNAL_ALGORITHM_TRANSIENT
public static Project getOwner(FileObject file)
file
- the file (generally on disk)public static Project getOwner(URI uri)
uri
- the URI to the file (generally on disk); must be absolute and not opaque (though jar
-protocol URIs are unwrapped as a convenience)IllegalArgumentException
- if the URI is relative or opaquepublic static void markExternalOwner(FileObject root, Project owner, int algorithm) throws IllegalArgumentException
Typical usage would be to call this method for each external source root of a project (if any) as soon as the project is loaded, if a transient algorithm is selected, or only when the project is created, if a reliable persistent algorithm is selected.
root
- a folder or a file which should be considered part of a projectowner
- a project which should be considered to own that folder tree
(any prior marked external owner is overridden),
or null to cancel external ownership for this folder root
or FileOwnerQuery.UNOWNED
if the directory is known definitely to be unownedalgorithm
- an algorithm to use for retaining this information;
currently may only be FileOwnerQuery.EXTERNAL_ALGORITHM_TRANSIENT
IllegalArgumentException
- if the root or owner is null, if an unsupported
algorithm is requested,
if the root is already a project directory,
or if the root is already equal to or inside the owner's
project directory (it may however be an ancestor)SourcesHelper
public static void markExternalOwner(URI root, Project owner, int algorithm) throws IllegalArgumentException
Typical usage would be to call this method for each external source root of a project (if any) as soon as the project is loaded, if a transient algorithm is selected, or only when the project is created, if a reliable persistent algorithm is selected.
root
- an URI of a folder or a file which should be considered part of a projectowner
- a project which should be considered to own that folder tree
(any prior marked external owner is overridden),
or null to cancel external ownership for this folder rootalgorithm
- an algorithm to use for retaining this information;
currently may only be FileOwnerQuery.EXTERNAL_ALGORITHM_TRANSIENT
IllegalArgumentException
- if the root or owner is null, if an unsupported
algorithm is requested,
if the root is already a project directory,
or if the root is already equal to or inside the owner's
project directory (it may however be an ancestor)SourcesHelper