org.modeshape.connector.filesystem
Class FileSystemSource.StandardPropertiesFactory

java.lang.Object
  extended by org.modeshape.connector.filesystem.FileSystemSource.StandardPropertiesFactory
All Implemented Interfaces:
Serializable, CustomPropertiesFactory
Enclosing class:
FileSystemSource

protected static class FileSystemSource.StandardPropertiesFactory
extends Object
implements CustomPropertiesFactory

See Also:
Serialized Form

Constructor Summary
protected FileSystemSource.StandardPropertiesFactory()
           
 
Method Summary
protected  void ensureValidProperties(ExecutionContext context, String sourceName, Collection<Property> properties, Set<Name> validPropertyNames)
          Checks that the collection of properties only contains properties with allowable names.
 Collection<Property> getDirectoryProperties(ExecutionContext context, Location location, File directory)
          Construct the custom properties that should be created for the supplied directory that is to be treated as an "nt:folder".
 Collection<Property> getFileProperties(ExecutionContext context, Location location, File file)
          Construct the custom properties that should be created for the supplied file that is to be treated as an "nt:file".
 Collection<Property> getResourceProperties(ExecutionContext context, Location location, File file, String mimeType)
          Construct the custom properties that should be created for the supplied file that is to be treated as an "nt:resource", which is the node that contains the content-oriented properties and that is a child of a "nt:file" node.
 Set<Name> recordDirectoryProperties(ExecutionContext context, String sourceName, Location location, File file, Map<Name,Property> properties)
          Record the supplied properties as being set on the designated "nt:folder" node.
 Set<Name> recordFileProperties(ExecutionContext context, String sourceName, Location location, File file, Map<Name,Property> properties)
          Record the supplied properties as being set on the designated "nt:file" node.
 Set<Name> recordResourceProperties(ExecutionContext context, String sourceName, Location location, File file, Map<Name,Property> properties)
          Record the supplied properties as being set on the designated "nt:resource" node.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileSystemSource.StandardPropertiesFactory

protected FileSystemSource.StandardPropertiesFactory()
Method Detail

getDirectoryProperties

public Collection<Property> getDirectoryProperties(ExecutionContext context,
                                                   Location location,
                                                   File directory)
Description copied from interface: CustomPropertiesFactory
Construct the custom properties that should be created for the supplied directory that is to be treated as an "nt:folder". The resulting properties should not include the standard JcrLexicon.PRIMARY_TYPE or JcrLexicon.CREATED properties, which are set automatically and will override any returned Property with the same name.

Specified by:
getDirectoryProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
location - the Location of the node, which always contains a path; never null
directory - the file system object; never null and File.isDirectory() will always return true
Returns:
the custom properties; never null but possibly empty

getFileProperties

public Collection<Property> getFileProperties(ExecutionContext context,
                                              Location location,
                                              File file)
Description copied from interface: CustomPropertiesFactory
Construct the custom properties that should be created for the supplied file that is to be treated as an "nt:file". The resulting properties should not include the standard JcrLexicon.PRIMARY_TYPE or JcrLexicon.CREATED properties, which are set automatically and will override any returned Property with the same name.

Although the connector does not automatically determine the MIME type for the "nt:file" nodes, an implementation can determine the MIME type by using the context's MIME type detector. Note, however, that this may be an expensive operation, so it should be used only when needed.

Specified by:
getFileProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
location - the Location of the node, which always contains a path; never null
file - the file system object; never null and File.isFile() will always return true
Returns:
the custom properties; never null but possibly empty

getResourceProperties

public Collection<Property> getResourceProperties(ExecutionContext context,
                                                  Location location,
                                                  File file,
                                                  String mimeType)
Description copied from interface: CustomPropertiesFactory
Construct the custom properties that should be created for the supplied file that is to be treated as an "nt:resource", which is the node that contains the content-oriented properties and that is a child of a "nt:file" node. The resulting properties should not include the standard JcrLexicon.PRIMARY_TYPE, JcrLexicon.LAST_MODIFIED, or JcrLexicon.DATA properties, which are set automatically and will override any returned Property with the same name.

Specified by:
getResourceProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
location - the Location of the node, which always contains a path; never null
file - the file system object; never null and File.isFile() will always return true
mimeType - the mime type for the file, as determined by the MIME type detector, or null if the MIME type could not be determined
Returns:
the custom properties; never null but possibly empty

recordDirectoryProperties

public Set<Name> recordDirectoryProperties(ExecutionContext context,
                                           String sourceName,
                                           Location location,
                                           File file,
                                           Map<Name,Property> properties)
                                    throws RepositorySourceException
Record the supplied properties as being set on the designated "nt:folder" node.

Specified by:
recordDirectoryProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
sourceName - the name of the repository source; never null
location - the Location of the node, which always contains a path; never null
file - the file system object; never null, and both File.exists() and File.isDirectory() will always return true
properties - the properties that are to be set
Returns:
the names of the properties that were created, or an empty or null set if no properties were created on the file
Throws:
RepositorySourceException - if any properties are invalid or cannot be set on these nodes
See Also:
CustomPropertiesFactory.recordDirectoryProperties(org.modeshape.graph.ExecutionContext, java.lang.String, org.modeshape.graph.Location, java.io.File, java.util.Map)

recordFileProperties

public Set<Name> recordFileProperties(ExecutionContext context,
                                      String sourceName,
                                      Location location,
                                      File file,
                                      Map<Name,Property> properties)
                               throws RepositorySourceException
Record the supplied properties as being set on the designated "nt:file" node.

Specified by:
recordFileProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
sourceName - the name of the repository source; never null
location - the Location of the node, which always contains a path; never null
file - the file system object; never null, and both File.exists() and File.isFile() will always return true
properties - the properties that are to be set
Returns:
the names of the properties that were created, or an empty or null set if no properties were created on the file
Throws:
RepositorySourceException - if any properties are invalid or cannot be set on these nodes
See Also:
CustomPropertiesFactory.recordFileProperties(org.modeshape.graph.ExecutionContext, java.lang.String, org.modeshape.graph.Location, java.io.File, java.util.Map)

recordResourceProperties

public Set<Name> recordResourceProperties(ExecutionContext context,
                                          String sourceName,
                                          Location location,
                                          File file,
                                          Map<Name,Property> properties)
                                   throws RepositorySourceException
Record the supplied properties as being set on the designated "nt:resource" node.

Specified by:
recordResourceProperties in interface CustomPropertiesFactory
Parameters:
context - the execution context; never null
sourceName - the name of the repository source; never null
location - the Location of the node, which always contains a path; never null
file - the file system object; never null, and both File.exists() and File.isFile() will always return true
properties - the properties that are to be set
Returns:
the names of the properties that were created, or an empty or null set if no properties were created on the file
Throws:
RepositorySourceException - if any properties are invalid or cannot be set on these nodes
See Also:
CustomPropertiesFactory.recordResourceProperties(org.modeshape.graph.ExecutionContext, java.lang.String, org.modeshape.graph.Location, java.io.File, java.util.Map)

ensureValidProperties

protected void ensureValidProperties(ExecutionContext context,
                                     String sourceName,
                                     Collection<Property> properties,
                                     Set<Name> validPropertyNames)
Checks that the collection of properties only contains properties with allowable names.

Parameters:
context -
sourceName -
properties -
validPropertyNames -
Throws:
RepositorySourceException - if properties contains a
See Also:
ALLOWABLE_PROPERTIES_FOR_CONTENT, ALLOWABLE_PROPERTIES_FOR_FILE_OR_FOLDER


Copyright © 2008-2010 JBoss, a division of Red Hat. All Rights Reserved.