File-system representation interfaces
The interfaces defined here are used for file-system and file-system-like representations of objects, such as file-system synchronization, FTP, PUT, and WebDAV.
There are three issues we need to deal with:
File system representation
Every object is either a directory or a file.
Properties
There are two kinds of proprties:
Data properties
Data properties are handled directly by the object implementation.
Meta-data properties
Meta data properties are handled via annotations.
Completeness
We must have a complete lossless data representation for file-system
synchronization. This is achieved through serialization of:
- All annotations (not just properties, and
- Extra data.
Strategies for common access mechanisms:
FTP
- For getting directory info (statish) information:
- Use Zope DublinCore to get modification times
- Show as readable if we can access a read method.
- Show as writable if we can access a write method.
FTP and WebDAV
Treat as a directory if there is an adapter to IReadDirectory.
Treat as a file otherwise.
For creating objects:
Directories:
Look for an IDirectoryFactory adapter.
Files
First lookj for a IFileFactory adapter with a name that is
the same as the extention (e.g. ".pt").
Then look for an unnamed IFileFactory adapter.
File-system synchronization
Because this must be lossless, we will use class-based adapters
for this, but we want to make it as easy as possible to use other
adapters as well.
For reading, there must be a class adapter to IReadSync. We will
then apply rules similar to those above.