[ 
https://issues.apache.org/jira/browse/IO-222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12842442#action_12842442
 ] 

Niall Pemberton commented on IO-222:
------------------------------------

Apologies for the lack of response - until last week Commons IO has been a bit 
dormant. There has been a bit of a build up of JIRA tickets, but we should get 
round to reviewing this soon - although it may not be by your March 15th 
deadline.

> New Functionality: FileCopier object to facilitate copying of files and 
> directories with ability to customize treatment of existing destination files 
> and report copy status
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IO-222
>                 URL: https://issues.apache.org/jira/browse/IO-222
>             Project: Commons IO
>          Issue Type: New Feature
>          Components: Utilities
>    Affects Versions: 2.0
>         Environment: any
>            Reporter: David Armstrong
>            Priority: Minor
>             Fix For: 2.0
>
>         Attachments: commons-io-1.5-SNAPSHOT-javadocs.tar.gz, 
> commons-io-1.5-SNAPSHOT.diff, commons-io-1.5-SNAPSHOT.tar.gz
>
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> This is a proposal to add a feature to new releases of Commons IO.
> The new functionality is a class that copies files, called FileCopier and 
> some helper classes. This class goes beyond the functionality of the static 
> methods included in the FileUtils class. It has the following functionality:
> It uses an extension to an abstract class, FileCopyHelper. FileCopyHelper 
> provides callback methods to FileCopier's copy methods. Extensions to 
> FileCopyHelper provide methods to define behavior for handling destination 
> files that exist, handling exceptions, reporting the status of copy 
> operations, and enables clients to cancel copies after they have begun.
> There are several extensions to FileCopyHelper that I have created. 
> FileCopyHelper and all of its extensions are included in a new package, 
> org.apache.commons.io.filecopyhelper to avoid cluttering up 
> org.apache.commons.io. FileCopier uses a default FileCopyHelper extension, 
> SafeFileCopyHelper. This extension skips all destination files that already 
> exist. OverwriteFileCopyHelper overwrites all files that exist. 
> RenameAppendFileCopyHelper appends text to the names of all files that exist. 
> RenameAppendTimestampFileCopyHelper appends the existing file's last modified 
> date to its name. There are a few other FileCopyHelper extensions included, 
> also. All of the FileCopyHelper extensions that I created print the status of 
> copy operations and report exceptions to standard out. Any behavior of the 
> included FileCopyHelper extensions that are not wanted can be avoided by 
> extending FileCopyHelper with custom implementations.
> FileCopyHelper also allows clients to send a cancel request to FileCopier to 
> cancel subsequent copy operations. FIleCopier will throw a runtime exception, 
> FileCopyCancelException, when it receives a request to cancel copy operations.
> When copying directories, FileCopier gives clients the ability to "flatten" 
> directories if they so choose. They can flatten by directory level or by 
> name, using an IOFileFilter. Flattening means the directory itself is not 
> copied; only its contents are copied. It likewise gives clients the ability 
> to "merge" directories that exist. They can merge directories by level or by 
> name, using an IOFileFilter. Merge is applicable when FileCopier is using a 
> FileCopyHelper object that renames destination files that already exist. If a 
> directory is to be merged, it means that the directory is not renamed. The 
> contents of the source directory are merged with the contents of the already 
> existing destination directory. Destination directories that are not to be 
> merged are renamed. FileCopier's default behavior is to not merge or flatten 
> any directories.
> FileCopier is immutable and uses an inner Builder class to create instances 
> of it.
> I made a small change to FileUtils.java. I changed the access for 
> doCopyFile() from private to protected so that FileCopier could make use of 
> its functionality. 
> Included is a FileCopierTestCase class and all of its tests pass.
> I've attached a gzipped tar file of Commons IO with the changes I made. If 
> you generate javadocs, it should create them for the classes I introduced. 
> Hopefully, they will answer any questions about the functionality that I did 
> not address here.
> Also attached is a diff file of the project's source code after I svn added 
> my source code.
> The estimate I put for this effort is 8 hours, just for the time that would 
> be spent deciding whether or not to implement the new feature and possibly 
> any changes that should be made to it.
> Please let me know what you think of the new functionality and any 
> suggestions for improvement that you have. If there is anything that I added 
> that you would like me to implement differently, please let me know. I hope 
> that you will agree that FileCopier will provide added value to the Commons 
> IO suite of services.
> Best Regards,
> David Armstrong 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to