EntityFS

Software Screenshot:
EntityFS
Software Details:
Version: 1.2
Upload Date: 11 May 15
Developer: Karl Gustafsson
Distribution Type: Freeware
Downloads: 35

Rating: nan/5 (Total Votes: 0)

EntityFS is the object-oriented file system API for Java!

EntityFS provides a set of abstractions and tools for working with file systems and their entities (files and directories) from Java.

Features:

  • File system entities are true entities in the object-oriented meaning of the word. A file system entity has a unique identity that separates it from other entities
  • File system API:s are backend-independent. File systems can be created in RAM memory, on Zip files, on file system directories, etcetera
  • Each file system have a configurable entity locking policy for protecting entities from conflicting concurrent updates from several program threads
  • File systems and entities are Observable for updates
  • Access controllers can be used for restricting access to entities
  • File system functionality can be extended with Capabilities, such as the GZip compression capability - compress file data transparently using the GZip algorithm, or the Metadata capability - attach metadata to files and directories
  • EntityFS provides a rich set of tools for working with files and directories. Tool methods range from those that make simple things simple, such as Files.readTextFile or Entities.copy, to those that make slightly more complicated thing simple, such as the IteratorCopier and the ZipCreator

What is new in this release:

  • This version comes with a new Zip file system implementation using the Zip classes from the At4J project.
  • A bug has been fixed that required that the root node had to occur first in the backing Zip file in the old Zip file system implementation.

What is new in version 1.1.5:

  • This is a small bugfix release. Backslashes are now allowed in entity names, but this will only work on non-Windows platforms.

What is new in version 1.1.3:

  • Upgraded HeliDB to version 1.0.2.
  • Moved the MetadataUnixAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.unix.metadata package. Created a stub proxy class in the old location.
  • Moved the MetadataNtfsAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.ntfs.metadata package. Created a stub proxy class in the old location.
  • Moved the MetadataCustomAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.custom.metadata package. Created a proxy class in the old location.
  • Reduced the number of projects in the Eclipse workspace.
  • Added the FileWritableFile class.
  • Made the toString methods of file systems and entities return more relevant texts. ! Removed the FileSystemImplementation.getToStringDescription and FileSystemDelegate.getToStringDescription methods.
  • Added more trace logging to the EntityClassLoader.
  • Reimplemented the build script in Groovy.
  • Added the DirectoryContainsFilter.
  • Added return types to a lot of methods in Files and Entities.
  • Added the GrepFilter and FGrepFilter.
  • Wrote the Using EntityFS in a Groovy program article.
  • Added bitwiseNegate and isCase methods to AbstractConvenientFilter. It makes inheriting classes easier to use in Groovy programs.
  • Added the Files.lineIterator methods.
  • Added the CloseableIterator interface.

What is new in version 1.1.2:

  • Deleted the AbstractRandomAccessProxy class.
  • Added the Entities.deleteRecursively method with an boolean argument that controls whether the passed entity itself will be deleted or not.
  • The run_unit_tests.js script now supports Emma coverage analysis.
  • Read/write locking can now be debugged by setting the entityfs.locking.debug system property.
  • Added EntityLocations.convertWindowsSlashes
  • Enabled validation of relative paths.

What is new in version 1.1.1:

  • Reintroduced the EntityFilter interface for documentation purposes.
  • Added the Entities.copy methods that can copy collections of source entities.

What is new in version 1.1:

  • Upgraded HeliDB to version 1.0.1.
  • Made FilteringIterator more generic.
  • Added the EntityFilterToEntityAndRelativeLocationFilterAdapter class.
  • Added the Files.measureDataSize method.
  • Added the Files.copyContents method.
  • Added the Directories.size method.
  • Added the OverwriteStrategy interface and implementations Made all overwriting classes use the strategy interface.
  • Added the CountingDataSource class.
  • Added the generic Filter and ConvenientFilter classes with implementations and refactored the existing filters to inherit them. Deleted EntityFilter, ConvenientEntityFilter and EntityFilter implementation of logic functions. Use Filter instead of EntityFilter.
  • Added the available() method to the DataSource interface.
  • Added the DataSink and DataSource interfaces and the InputStreamToDataSourceAdapter, OutputStreamToDataSinkAdapter, DataSourceToInputStreamAdapter and DataSinkToOutputStreamAdapter classes.
  • Added the Charsets support class.
  • Moved the getSize and getDataSize methods from ReadWritableFile to ReadableFile. Made Files.getSize and getDataSize take ReadableFile arguments.
  • Added the StreamUtil.readChannelFully method.
  • Renamed LockAwareRandomAccessProxy to LockAwareRandomAccess.
  • Added section on input and output stream implementations to the utility classes chapter in the Programmer's guide.
  • Added section on adapters to the utility classes chapter in the Programmer's guide.
  • Wrote the What is a file? chapter in the Programmer's guide.
  • Deleted the LockAwareGatheringByteChannel and LockAwareScatteringByteChannel classes and added the LockAwareWritableByteChannel and LockAwareReadableByteChannel classes to replace them.
  • WritableFile now returns WritableByteChannel instead of GatheringByteChannel.
  • ReadableFile now returns ReadableByteChannel instead of ScatteringByteChannel.
  • Deletable now extends WriteLockable.
  • Added the ClasspathNamedReadableFile class.
  • Added the GZipReadableFile and GZipWritableFile classes.
  • Copied DataInputOutputRandomAccessAdapter to the new RandomAccessToDataInputOutputAdapter class and made DataInputOutputRandomAccessAdapter deprecated.
  • Copied RandomAccessInputStreamAdapter to the new RandomAccessToInputStreamAdapter class and made RandomAccessInputStreamAdapter deprecated.
  • Copied RandomAccessOutputStreamAdapter to the new RandomAccessToOutputStreamAdapter class and made RandomAccessOutputStreamAdapter deprecated.
  • Added the Entities.deleteRecursively method.
  • Added the Entities.rename method that uses an EntityRenameSpecification.
  • Added the Entities.copy method that uses an EntityCopySpecification.
  • Upgraded Docbook spec version to 4.5 for documentation.
  • Fixed ByteArrayRandomAccess.read(byte[]...) methods to return -1 instead of 0 at EOF
  • Added the RangeRandomAccess class.
  • Files.readTextFile no longer throws UnsupportedEncodingException.
  • Trailing slashes are no longer allowed in AbsoluteLocations or RelativeLocations.
  • ReadWritableFileAdapter now implements NamedReadableFile.
  • Added an option to the RandomAccessInputStreamAdapter and the RandomAccessOutputStreamAdapter that cause them to not close the underlying RandomAccess when the adapters are closed.
  • Added getWrapped methods to WrappedIOException, WrappedClassNotFoundException and WrappedMalformedURLException.
  • Added the ChecksumInputStream.
  • Added the CountingInputStream and the CountingOutputStream.
  • Fixed a bug in the RangeInputStream that made the byte array read methods return 0 instead of -1 at EOF.
  • Added the PropertyValue object. Add the Properties.get-/putPropertyValue, propertyValues and propertyEntrySet methods.
  • Added the EntityLocations.parseLocation method.
  • The DefaultUnixAttributesFactory and DefaultNtfsAttributesFactory constructors now take a UnixEntityMode argument instead of a numeric code.
  • Refactored UnixEntityMode to be immutable.
  • Added the Glob class. It is the glob pattern version of Java's Pattern class.
  • Added the getPropertiesMatching methods to Properties.
  • Fixed a bug in the ByteArrayRandomAccess: It did not increment the file position when reading data into an array.
  • Added the RangeInputStream class.
  • EntityLocation.getPathSegmentStack now returns a LinkedList. It is the most Deque-like class in Java 5.
  • Added the Directories.getLocationAware*Iterator methods.
  • Added the LocationAwareDepthLastIteratorImpl and LocationAwareDepthFirstIteratorImpl classes.
  • Added the EntityAndRelativeLocation class.
  • Added the Directories.newDirectory method with a RelativeLocation argument.
  • Added the CompoundEntityHolder.
  • Added the Entities.getValidEntity and getValidEntityOrNull methods.
  • Added the WrongEntityTypeException. Let NotAFileException and NotADirectoryException inherit it.
  • Fixed a bug in the ReadableByteChannel and WritableByteChannel. They assumed that limit == capacity of the target buffer.
  • Added the Directories.find and findEntities methods.
  • Added the LockCommandUtil.lock varargs method.
  • Added the ZipFiles.zip methods.
  • Reimplemented the ZipFiles.unzip method to use a ReadableFile instead of an EFile argument. Added an overwrite option to overwrite entities in the target directory.
  • Added the varargs LockCommand method to the LockCommandExecutor interface.
  • Deleted the org.entityfs.EntityObserver interface. Use org.entityfs.event.EntityObserver instead.
  • Deleted LockEntitysParentForWritingCommand (use LockParentForWritingCommand instead).
  • Deleted LockEntitysParentForReadingCommand (use LockParentForReadingCommand instead).
  • Deleted LockEntityForWritingCommand (use LockForWritingCommand instead).
  • Deleted LockEntityForReadingCommand (use LockForReadingCommand instead).

What is new in version 1.0:

  • Added DirectoryDifferentiator, DirectorySynchronizer, DirectoryTreeDifferentiator and DirectoryTreeSynchronizer.
  • The logger name of Jdk14LogAdapter is now configurable.
  • The Metadata entity attribute capability now uses a HeliDB B+ Tree database instead of a homebrewed one.
  • LogAdapterHolder now implements LogAdapter.
  • Changed the behavior of file system builders to create file systems with a minimal amount of features by default.
  • Added the Entity, EFile and Directory inheritance charts.
  • Moved the copy methods from EFile to ReadWritableFile, Let them return the number of bytes written.
  • EntityView.copy now returns Set< EntityView > instead of Set< ? extends EntityView >.
  • License changed to LGPL v3.
  • The source distribution now contains a working Eclipse workspace for developing EntityFS.
  • Added ByteArrayRandomAccess.
  • Added the WriteOnlyException.
  • ByteArrayReadableFile now implements RandomlyAccessibleFile.
  • Added the WritableByteBufferChannel class.
  • Added copy methods to StreamUtil that take an argument for the maximum amount of data to copy.
  • The StreamUtil.copy methods now return the total number of bytes copied.
  • Added the RandomAccessOutputStreamAdapter.
  • Changed the file systems' default log adapter from a Jdk14LogAdapter to a StdoutLogAdapter.
  • Added the AbstractReadWriteLockableProxy class.
  • Added the getLockable method to the LockCommand interface. Deleted the FileSystemLockCommand and EntityLockCommand interfaces.
  • Introduced the ReadWriteLockable interface. It is implemented by all classes that implement ReadLockable and WriteLockable.
  • Base64InputStream now works for input with spaces in it.
  • Gave TwoObjects and Pair equals and hashCode methods.
  • Changed the FileChannel-returning methods of FCFileChannel to use RandomAccessFileFactory:s instead of FileInputStreamFactory:s
  • Base64InputStream now works with input with spaces in it.
  • Moved file size methods to ReadWritableFile interface.
  • Added the ReadWritableFile.replaceContents and the Files.replaceContents methods.
  • Added the Deletable interface. Implemented by Entity and ReadWritableFile.
  • Added the FileSystem setReadOnly method.
  • Added the Files.writeData method.
  • Added the DataInputOutputRandomAccessAdapter class.
  • Added the ReadWritableFileAdapter.getFile method.
  • Moved AggregatingIterator to the org.entityfs.support.util package.
  • Fixed a bug in the Zip and Jar file systems that made some of the contents of certain Zip and Jar files invisible.
  • Decreased memory usage for Zip and Jar file systems.
  • Fixed locking and access controls on DirectoryView.iterator implementations.
  • Reimplemented DepthFirstIteratorImpl and DepthLastIteratorImpl to make them more memory efficient. Removed the options to sort results from the iterators.
  • Made the directory iterator use less memory.
  • Changed the return type of DirectoryDelegate.getEntityNames to a String array. Implemented the ArrayUtil utility class.
  • Entity names containing asterisks (*) are now invalid.
  • Renamed the following classes: - LockEntityForReadingCommand -> LockForReadingCommand - LockEntityForWritingCommand -> LockForWritingCommand - LockEntitysParentForReadingCommand -> LockParentForReadingCommand - LockEntitysParentForWritingCommand -> LockParentForWritingCommand
  • Added the EntityView.copyAttributes and Entities.copyAttributes methods. Reimplemented IteratorCopier to use it.
  • Removed a lot of generics that only made things messier from the implementation.
  • Added the EntityView.setLastModified method
  • Added the copy method with a boolean argument for copying entity attributes to EntityView. Made the old copy method deprecated. Introduced the requirement that a read lock on an entity's parent directory is required for copying it. Made the entity attributes capabilities honor the preserve attributes flag. Added new copy methods to Entities and IteratorCopier. New tests.

Similar Software

e2undel
e2undel

3 Jun 15

Btrfs-progs
Btrfs-progs

22 Jun 18

xfsprogs
xfsprogs

17 Aug 18

Comments to EntityFS

Comments not found
Add Comment
Turn on images!