From a6d997380d162ef16df244217c35992826886778 Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Wed, 19 Dec 2001 10:40:29 +0000 Subject: [PATCH] Made the attributes private and started to break down the methods in tasks to bite size chunks. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270264 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/taskdefs/file/Copy.java | 329 +++++++++++------- .../apache/tools/ant/taskdefs/file/Move.java | 47 ++- .../apache/tools/ant/taskdefs/file/Copy.java | 329 +++++++++++------- .../apache/tools/ant/taskdefs/file/Move.java | 47 ++- 4 files changed, 450 insertions(+), 302 deletions(-) diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Copy.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Copy.java index de6ab1363..a045fe867 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Copy.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Copy.java @@ -9,6 +9,7 @@ package org.apache.tools.ant.taskdefs.file; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; @@ -42,35 +43,36 @@ import org.apache.tools.ant.util.SourceFileScanner; * @author Michael McCallum * @author Magesh Umasankar */ -public class Copy extends Task +public class Copy + extends Task { - protected File file = null;// the source file - protected File destFile = null;// the destination file - protected File destDir = null;// the destination directory - protected Vector filesets = new Vector(); + private File m_file;// the source file + private File m_destFile;// the destination file + private File m_destDir;// the destination directory + private Vector m_filesets = new Vector(); - protected boolean filtering = false; - protected boolean preserveLastModified = false; - protected boolean forceOverwrite = false; - protected boolean flatten = false; - protected int verbosity = Project.MSG_VERBOSE; - protected boolean includeEmpty = true; + private boolean m_filtering; + private boolean m_preserveLastModified; + private boolean m_forceOverwrite; + private boolean m_flatten; + private int m_verbosity = Project.MSG_VERBOSE; + private boolean m_includeEmpty = true; - protected Hashtable fileCopyMap = new Hashtable(); - protected Hashtable dirCopyMap = new Hashtable(); - protected Hashtable completeDirMap = new Hashtable(); + private Hashtable m_fileCopyMap = new Hashtable(); + private Hashtable m_dirCopyMap = new Hashtable(); + private Hashtable m_completeDirMap = new Hashtable(); - protected Mapper mapperElement = null; - private Vector filterSets = new Vector(); + private Mapper m_mapperElement; + private Vector m_filterSets = new Vector(); /** * Sets a single source file to copy. * * @param file The new File value */ - public void setFile( File file ) + public void setFile( final File file ) { - this.file = file; + m_file = file; } /** @@ -78,9 +80,9 @@ public class Copy extends Task * * @param filtering The new Filtering value */ - public void setFiltering( boolean filtering ) + public void setFiltering( final boolean filtering ) { - this.filtering = filtering; + m_filtering = filtering; } /** @@ -91,9 +93,9 @@ public class Copy extends Task * * @param flatten The new Flatten value */ - public void setFlatten( boolean flatten ) + public void setFlatten( final boolean flatten ) { - this.flatten = flatten; + m_flatten = flatten; } /** @@ -101,9 +103,9 @@ public class Copy extends Task * * @param includeEmpty The new IncludeEmptyDirs value */ - public void setIncludeEmptyDirs( boolean includeEmpty ) + public void setIncludeEmptyDirs( final boolean includeEmpty ) { - this.includeEmpty = includeEmpty; + m_includeEmpty = includeEmpty; } /** @@ -111,9 +113,9 @@ public class Copy extends Task * * @param overwrite The new Overwrite value */ - public void setOverwrite( boolean overwrite ) + public void setOverwrite( final boolean overwrite ) { - this.forceOverwrite = overwrite; + m_forceOverwrite = overwrite; } /** @@ -121,9 +123,9 @@ public class Copy extends Task * * @param preserve The new PreserveLastModified value */ - public void setPreserveLastModified( boolean preserve ) + public void setPreserveLastModified( final boolean preserve ) { - preserveLastModified = preserve; + m_preserveLastModified = preserve; } /** @@ -131,9 +133,9 @@ public class Copy extends Task * * @param destDir The new Todir value */ - public void setTodir( File destDir ) + public void setTodir( final File destDir ) { - this.destDir = destDir; + m_destDir = destDir; } /** @@ -141,9 +143,9 @@ public class Copy extends Task * * @param destFile The new Tofile value */ - public void setTofile( File destFile ) + public void setTofile( final File destFile ) { - this.destFile = destFile; + m_destFile = destFile; } /** @@ -151,15 +153,15 @@ public class Copy extends Task * * @param verbose The new Verbose value */ - public void setVerbose( boolean verbose ) + public void setVerbose( final boolean verbose ) { if( verbose ) { - this.verbosity = Project.MSG_INFO; + m_verbosity = Project.MSG_INFO; } else { - this.verbosity = Project.MSG_VERBOSE; + m_verbosity = Project.MSG_VERBOSE; } } @@ -168,9 +170,9 @@ public class Copy extends Task * * @param set The feature to be added to the Fileset attribute */ - public void addFileset( FileSet set ) + public void addFileset( final FileSet set ) { - filesets.addElement( set ); + m_filesets.addElement( set ); } /** @@ -180,8 +182,8 @@ public class Copy extends Task */ public FilterSet createFilterSet() { - FilterSet filterSet = new FilterSet(); - filterSets.addElement( filterSet ); + final FilterSet filterSet = new FilterSet(); + m_filterSets.addElement( filterSet ); return filterSet; } @@ -194,12 +196,12 @@ public class Copy extends Task public Mapper createMapper() throws TaskException { - if( mapperElement != null ) + if( m_mapperElement != null ) { throw new TaskException( "Cannot define more than one mapper" ); } - mapperElement = new Mapper( project ); - return mapperElement; + m_mapperElement = new Mapper( project ); + return m_mapperElement; } /** @@ -214,51 +216,52 @@ public class Copy extends Task validateAttributes(); // deal with the single file - if( file != null ) + if( m_file != null ) { - if( file.exists() ) + if( m_file.exists() ) { - if( destFile == null ) + if( m_destFile == null ) { - destFile = new File( destDir, file.getName() ); + m_destFile = new File( m_destDir, m_file.getName() ); } - if( forceOverwrite || - ( file.lastModified() > destFile.lastModified() ) ) + if( m_forceOverwrite || + ( m_file.lastModified() > m_destFile.lastModified() ) ) { - fileCopyMap.put( file.getAbsolutePath(), destFile.getAbsolutePath() ); + m_fileCopyMap.put( m_file.getAbsolutePath(), m_destFile.getAbsolutePath() ); } else { - log( file + " omitted as " + destFile + " is up to date.", + log( m_file + " omitted as " + m_destFile + " is up to date.", Project.MSG_VERBOSE ); } } else { String message = "Could not find file " - + file.getAbsolutePath() + " to copy."; + + m_file.getAbsolutePath() + " to copy."; getLogger().info( message ); throw new TaskException( message ); } } // deal with the filesets - for( int i = 0; i < filesets.size(); i++ ) + for( int i = 0; i < m_filesets.size(); i++ ) { - FileSet fs = (FileSet)filesets.elementAt( i ); - DirectoryScanner ds = fs.getDirectoryScanner( project ); - File fromDir = fs.getDir( project ); - - String[] srcFiles = ds.getIncludedFiles(); - String[] srcDirs = ds.getIncludedDirectories(); - boolean isEverythingIncluded = ds.isEverythingIncluded(); - if( isEverythingIncluded - && !flatten && mapperElement == null ) + final FileSet fileSet = (FileSet)m_filesets.elementAt( i ); + final DirectoryScanner scanner = fileSet.getDirectoryScanner( project ); + final File fromDir = fileSet.getDir( project ); + + final String[] srcFiles = scanner.getIncludedFiles(); + final String[] srcDirs = scanner.getIncludedDirectories(); + final boolean isEverythingIncluded = scanner.isEverythingIncluded(); + + if( isEverythingIncluded && !m_flatten && null == m_mapperElement ) { - completeDirMap.put( fromDir, destDir ); + m_completeDirMap.put( fromDir, m_destDir ); } - scan( fromDir, destDir, srcFiles, srcDirs ); + + scan( fromDir, m_destDir, srcFiles, srcDirs ); } // do all the copy operations now... @@ -266,9 +269,9 @@ public class Copy extends Task // clean up destDir again - so this instance can be used a second // time without throwing an exception - if( destFile != null ) + if( null != m_destFile ) { - destDir = null; + m_destDir = null; } } @@ -279,39 +282,51 @@ public class Copy extends Task */ protected Vector getFilterSets() { - return filterSets; + return m_filterSets; } - protected void buildMap( File fromDir, File toDir, String[] names, - FileNameMapper mapper, Hashtable map ) + protected void buildMap( final File fromDir, + final File toDir, + final String[] names, + final FileNameMapper mapper, + final Hashtable map ) throws TaskException { + final String[] toCopy = buildFilenameList( names, mapper, fromDir, toDir ); + for( int i = 0; i < toCopy.length; i++ ) + { + final String destFilename = mapper.mapFileName( toCopy[ i ] )[ 0 ]; + + final File src = new File( fromDir, toCopy[ i ] ); + final File dest = new File( toDir, destFilename ); + map.put( src.getAbsolutePath(), dest.getAbsolutePath() ); + } + } - String[] toCopy = null; - if( forceOverwrite ) + private String[] buildFilenameList( final String[] names, + final FileNameMapper mapper, + final File fromDir, + final File toDir ) + throws TaskException + { + if( m_forceOverwrite ) { - Vector v = new Vector(); + final ArrayList list = new ArrayList( names.length ); for( int i = 0; i < names.length; i++ ) { - if( mapper.mapFileName( names[ i ] ) != null ) + final String name = names[ i ]; + if( null != mapper.mapFileName( name ) ) { - v.addElement( names[ i ] ); + list.add( name ); } } - toCopy = new String[ v.size() ]; - v.copyInto( toCopy ); + + return (String[])list.toArray( new String[ list.size() ] ); } else { - SourceFileScanner ds = new SourceFileScanner( this ); - toCopy = ds.restrict( names, fromDir, toDir, mapper ); - } - - for( int i = 0; i < toCopy.length; i++ ) - { - File src = new File( fromDir, toCopy[ i ] ); - File dest = new File( toDir, mapper.mapFileName( toCopy[ i ] )[ 0 ] ); - map.put( src.getAbsolutePath(), dest.getAbsolutePath() ); + final SourceFileScanner scanner = new SourceFileScanner( this ); + return scanner.restrict( names, fromDir, toDir, mapper ); } } @@ -322,61 +337,56 @@ public class Copy extends Task protected void doFileOperations() throws TaskException { - if( fileCopyMap.size() > 0 ) + if( m_fileCopyMap.size() > 0 ) { - getLogger().info( "Copying " + fileCopyMap.size() + - " file" + ( fileCopyMap.size() == 1 ? "" : "s" ) + - " to " + destDir.getAbsolutePath() ); + getLogger().info( "Copying " + m_fileCopyMap.size() + + " file" + ( m_fileCopyMap.size() == 1 ? "" : "s" ) + + " to " + m_destDir.getAbsolutePath() ); - Enumeration e = fileCopyMap.keys(); + Enumeration e = m_fileCopyMap.keys(); while( e.hasMoreElements() ) { String fromFile = (String)e.nextElement(); - String toFile = (String)fileCopyMap.get( fromFile ); + String toFile = (String)m_fileCopyMap.get( fromFile ); if( fromFile.equals( toFile ) ) { - log( "Skipping self-copy of " + fromFile, verbosity ); + getLogger().info( "Skipping self-copy of " + fromFile ); continue; } try { - log( "Copying " + fromFile + " to " + toFile, verbosity ); + getLogger().info( "Copying " + fromFile + " to " + toFile ); - FilterSetCollection executionFilters = new FilterSetCollection(); - if( filtering ) - { - executionFilters.addFilterSet( project.getGlobalFilterSet() ); - } - for( Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements(); ) - { - executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); - } + final FilterSetCollection executionFilters = buildFilterSet(); final File src = new File( fromFile ); final File dest = new File( toFile ); - if( forceOverwrite ) + + if( m_forceOverwrite ) { FileUtil.forceDelete( dest ); } + FileUtils.newFileUtils().copyFile( src, dest, executionFilters ); - if( preserveLastModified ) + + if( m_preserveLastModified ) { dest.setLastModified( src.lastModified() ); } } - catch( IOException ioe ) + catch( final IOException ioe ) { - String msg = "Failed to copy " + fromFile + " to " + toFile - + " due to " + ioe.getMessage(); + final String msg = "Failed to copy " + fromFile + " to " + + toFile + " due to " + ioe.getMessage(); throw new TaskException( msg, ioe ); } } } - if( includeEmpty ) + if( m_includeEmpty ) { - Enumeration e = dirCopyMap.elements(); + Enumeration e = m_dirCopyMap.elements(); int count = 0; while( e.hasMoreElements() ) { @@ -399,11 +409,26 @@ public class Copy extends Task getLogger().info( "Copied " + count + " empty director" + ( count == 1 ? "y" : "ies" ) + - " to " + destDir.getAbsolutePath() ); + " to " + m_destDir.getAbsolutePath() ); } } } + private FilterSetCollection buildFilterSet() + { + final FilterSetCollection executionFilters = new FilterSetCollection(); + if( m_filtering ) + { + executionFilters.addFilterSet( project.getGlobalFilterSet() ); + } + + for( final Enumeration filterEnum = m_filterSets.elements(); filterEnum.hasMoreElements(); ) + { + executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); + } + return executionFilters; + } + /** * Compares source files to destination files to see if they should be * copied. @@ -417,11 +442,11 @@ public class Copy extends Task throws TaskException { FileNameMapper mapper = null; - if( mapperElement != null ) + if( m_mapperElement != null ) { - mapper = mapperElement.getImplementation(); + mapper = m_mapperElement.getImplementation(); } - else if( flatten ) + else if( m_flatten ) { mapper = new FlatFileNameMapper(); } @@ -430,11 +455,11 @@ public class Copy extends Task mapper = new IdentityMapper(); } - buildMap( fromDir, toDir, files, mapper, fileCopyMap ); + buildMap( fromDir, toDir, files, mapper, m_fileCopyMap ); - if( includeEmpty ) + if( m_includeEmpty ) { - buildMap( fromDir, toDir, dirs, mapper, dirCopyMap ); + buildMap( fromDir, toDir, dirs, mapper, m_dirCopyMap ); } } @@ -451,45 +476,45 @@ public class Copy extends Task protected void validateAttributes() throws TaskException { - if( file == null && filesets.size() == 0 ) + if( m_file == null && m_filesets.size() == 0 ) { throw new TaskException( "Specify at least one source - a file or a fileset." ); } - if( destFile != null && destDir != null ) + if( m_destFile != null && m_destDir != null ) { throw new TaskException( "Only one of tofile and todir may be set." ); } - if( destFile == null && destDir == null ) + if( m_destFile == null && m_destDir == null ) { throw new TaskException( "One of tofile or todir must be set." ); } - if( file != null && file.exists() && file.isDirectory() ) + if( m_file != null && m_file.exists() && m_file.isDirectory() ) { throw new TaskException( "Use a fileset to copy directories." ); } - if( destFile != null && filesets.size() > 0 ) + if( m_destFile != null && m_filesets.size() > 0 ) { - if( filesets.size() > 1 ) + if( m_filesets.size() > 1 ) { throw new TaskException( "Cannot concatenate multiple files into a single file." ); } else { - FileSet fs = (FileSet)filesets.elementAt( 0 ); + FileSet fs = (FileSet)m_filesets.elementAt( 0 ); DirectoryScanner ds = fs.getDirectoryScanner( project ); String[] srcFiles = ds.getIncludedFiles(); if( srcFiles.length > 0 ) { - if( file == null ) + if( m_file == null ) { - file = new File( srcFiles[ 0 ] ); - filesets.removeElementAt( 0 ); + m_file = new File( srcFiles[ 0 ] ); + m_filesets.removeElementAt( 0 ); } else { @@ -505,9 +530,59 @@ public class Copy extends Task } } - if( destFile != null ) + if( m_destFile != null ) { - destDir = new File( destFile.getParent() );// be 1.1 friendly + m_destDir = new File( m_destFile.getParent() );// be 1.1 friendly } } + + protected Vector getFilesets() + { + return m_filesets; + } + + protected boolean isFiltering() + { + return m_filtering; + } + + protected boolean isForceOverwrite() + { + return m_forceOverwrite; + } + + protected int getVerbosity() + { + return m_verbosity; + } + + protected boolean isIncludeEmpty() + { + return m_includeEmpty; + } + + protected Hashtable getFileCopyMap() + { + return m_fileCopyMap; + } + + protected Hashtable getDirCopyMap() + { + return m_dirCopyMap; + } + + protected Hashtable getCompleteDirMap() + { + return m_completeDirMap; + } + + protected File getDestDir() + { + return m_destDir; + } + + protected void setForceOverwrite( final boolean forceOverwrite ) + { + m_forceOverwrite = forceOverwrite; + } } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Move.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Move.java index 432c1b2a2..30d257b64 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Move.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Move.java @@ -36,11 +36,10 @@ import org.apache.tools.ant.types.FilterSetCollection; */ public class Move extends Copy { - public Move() { super(); - forceOverwrite = true; + setForceOverwrite( true ); } /** @@ -68,7 +67,7 @@ public class Move extends Copy throw new TaskException( "UNEXPECTED ERROR - The file " + f.getAbsolutePath() + " should not exist!" ); } } - log( "Deleting directory " + d.getAbsolutePath(), verbosity ); + log( "Deleting directory " + d.getAbsolutePath(), getVerbosity() ); if( !d.delete() ) { throw new TaskException( "Unable to delete directory " + d.getAbsolutePath() ); @@ -83,18 +82,18 @@ public class Move extends Copy throws TaskException { //Attempt complete directory renames, if any, first. - if( completeDirMap.size() > 0 ) + if( getCompleteDirMap().size() > 0 ) { - Enumeration e = completeDirMap.keys(); + Enumeration e = getCompleteDirMap().keys(); while( e.hasMoreElements() ) { File fromDir = (File)e.nextElement(); - File toDir = (File)completeDirMap.get( fromDir ); + File toDir = (File)getCompleteDirMap().get( fromDir ); try { log( "Attempting to rename dir: " + fromDir + - " to " + toDir, verbosity ); - renameFile( fromDir, toDir, filtering, forceOverwrite ); + " to " + toDir, getVerbosity() ); + renameFile( fromDir, toDir, isFiltering(), isForceOverwrite() ); } catch( IOException ioe ) { @@ -105,20 +104,20 @@ public class Move extends Copy } } } - if( fileCopyMap.size() > 0 ) + if( getFileCopyMap().size() > 0 ) {// files to move - getLogger().info( "Moving " + fileCopyMap.size() + " files to " + - destDir.getAbsolutePath() ); + getLogger().info( "Moving " + getFileCopyMap().size() + " files to " + + getDestDir().getAbsolutePath() ); - Enumeration e = fileCopyMap.keys(); + Enumeration e = getFileCopyMap().keys(); while( e.hasMoreElements() ) { String fromFile = (String)e.nextElement(); - String toFile = (String)fileCopyMap.get( fromFile ); + String toFile = (String)getFileCopyMap().get( fromFile ); if( fromFile.equals( toFile ) ) { - log( "Skipping self-move of " + fromFile, verbosity ); + log( "Skipping self-move of " + fromFile, getVerbosity() ); continue; } @@ -132,8 +131,8 @@ public class Move extends Copy try { log( "Attempting to rename: " + fromFile + - " to " + toFile, verbosity ); - moved = renameFile( f, d, filtering, forceOverwrite ); + " to " + toFile, getVerbosity() ); + moved = renameFile( f, d, isFiltering(), isForceOverwrite() ); } catch( IOException ioe ) { @@ -147,10 +146,10 @@ public class Move extends Copy { try { - log( "Moving " + fromFile + " to " + toFile, verbosity ); + log( "Moving " + fromFile + " to " + toFile, getVerbosity() ); FilterSetCollection executionFilters = new FilterSetCollection(); - if( filtering ) + if( isFiltering() ) { executionFilters.addFilterSet( project.getGlobalFilterSet() ); } @@ -159,7 +158,7 @@ public class Move extends Copy executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); } - if( forceOverwrite ) + if( isForceOverwrite() ) { FileUtil.forceDelete( d ); } @@ -184,9 +183,9 @@ public class Move extends Copy } } - if( includeEmpty ) + if( isIncludeEmpty() ) { - Enumeration e = dirCopyMap.elements(); + Enumeration e = getDirCopyMap().elements(); int count = 0; while( e.hasMoreElements() ) { @@ -206,13 +205,13 @@ public class Move extends Copy if( count > 0 ) { - getLogger().info( "Moved " + count + " empty directories to " + destDir.getAbsolutePath() ); + getLogger().info( "Moved " + count + " empty directories to " + getDestDir().getAbsolutePath() ); } } - if( filesets.size() > 0 ) + if( getFilesets().size() > 0 ) { - Enumeration e = filesets.elements(); + Enumeration e = getFilesets().elements(); while( e.hasMoreElements() ) { FileSet fs = (FileSet)e.nextElement(); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Copy.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Copy.java index de6ab1363..a045fe867 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Copy.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Copy.java @@ -9,6 +9,7 @@ package org.apache.tools.ant.taskdefs.file; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; @@ -42,35 +43,36 @@ import org.apache.tools.ant.util.SourceFileScanner; * @author Michael McCallum * @author Magesh Umasankar */ -public class Copy extends Task +public class Copy + extends Task { - protected File file = null;// the source file - protected File destFile = null;// the destination file - protected File destDir = null;// the destination directory - protected Vector filesets = new Vector(); + private File m_file;// the source file + private File m_destFile;// the destination file + private File m_destDir;// the destination directory + private Vector m_filesets = new Vector(); - protected boolean filtering = false; - protected boolean preserveLastModified = false; - protected boolean forceOverwrite = false; - protected boolean flatten = false; - protected int verbosity = Project.MSG_VERBOSE; - protected boolean includeEmpty = true; + private boolean m_filtering; + private boolean m_preserveLastModified; + private boolean m_forceOverwrite; + private boolean m_flatten; + private int m_verbosity = Project.MSG_VERBOSE; + private boolean m_includeEmpty = true; - protected Hashtable fileCopyMap = new Hashtable(); - protected Hashtable dirCopyMap = new Hashtable(); - protected Hashtable completeDirMap = new Hashtable(); + private Hashtable m_fileCopyMap = new Hashtable(); + private Hashtable m_dirCopyMap = new Hashtable(); + private Hashtable m_completeDirMap = new Hashtable(); - protected Mapper mapperElement = null; - private Vector filterSets = new Vector(); + private Mapper m_mapperElement; + private Vector m_filterSets = new Vector(); /** * Sets a single source file to copy. * * @param file The new File value */ - public void setFile( File file ) + public void setFile( final File file ) { - this.file = file; + m_file = file; } /** @@ -78,9 +80,9 @@ public class Copy extends Task * * @param filtering The new Filtering value */ - public void setFiltering( boolean filtering ) + public void setFiltering( final boolean filtering ) { - this.filtering = filtering; + m_filtering = filtering; } /** @@ -91,9 +93,9 @@ public class Copy extends Task * * @param flatten The new Flatten value */ - public void setFlatten( boolean flatten ) + public void setFlatten( final boolean flatten ) { - this.flatten = flatten; + m_flatten = flatten; } /** @@ -101,9 +103,9 @@ public class Copy extends Task * * @param includeEmpty The new IncludeEmptyDirs value */ - public void setIncludeEmptyDirs( boolean includeEmpty ) + public void setIncludeEmptyDirs( final boolean includeEmpty ) { - this.includeEmpty = includeEmpty; + m_includeEmpty = includeEmpty; } /** @@ -111,9 +113,9 @@ public class Copy extends Task * * @param overwrite The new Overwrite value */ - public void setOverwrite( boolean overwrite ) + public void setOverwrite( final boolean overwrite ) { - this.forceOverwrite = overwrite; + m_forceOverwrite = overwrite; } /** @@ -121,9 +123,9 @@ public class Copy extends Task * * @param preserve The new PreserveLastModified value */ - public void setPreserveLastModified( boolean preserve ) + public void setPreserveLastModified( final boolean preserve ) { - preserveLastModified = preserve; + m_preserveLastModified = preserve; } /** @@ -131,9 +133,9 @@ public class Copy extends Task * * @param destDir The new Todir value */ - public void setTodir( File destDir ) + public void setTodir( final File destDir ) { - this.destDir = destDir; + m_destDir = destDir; } /** @@ -141,9 +143,9 @@ public class Copy extends Task * * @param destFile The new Tofile value */ - public void setTofile( File destFile ) + public void setTofile( final File destFile ) { - this.destFile = destFile; + m_destFile = destFile; } /** @@ -151,15 +153,15 @@ public class Copy extends Task * * @param verbose The new Verbose value */ - public void setVerbose( boolean verbose ) + public void setVerbose( final boolean verbose ) { if( verbose ) { - this.verbosity = Project.MSG_INFO; + m_verbosity = Project.MSG_INFO; } else { - this.verbosity = Project.MSG_VERBOSE; + m_verbosity = Project.MSG_VERBOSE; } } @@ -168,9 +170,9 @@ public class Copy extends Task * * @param set The feature to be added to the Fileset attribute */ - public void addFileset( FileSet set ) + public void addFileset( final FileSet set ) { - filesets.addElement( set ); + m_filesets.addElement( set ); } /** @@ -180,8 +182,8 @@ public class Copy extends Task */ public FilterSet createFilterSet() { - FilterSet filterSet = new FilterSet(); - filterSets.addElement( filterSet ); + final FilterSet filterSet = new FilterSet(); + m_filterSets.addElement( filterSet ); return filterSet; } @@ -194,12 +196,12 @@ public class Copy extends Task public Mapper createMapper() throws TaskException { - if( mapperElement != null ) + if( m_mapperElement != null ) { throw new TaskException( "Cannot define more than one mapper" ); } - mapperElement = new Mapper( project ); - return mapperElement; + m_mapperElement = new Mapper( project ); + return m_mapperElement; } /** @@ -214,51 +216,52 @@ public class Copy extends Task validateAttributes(); // deal with the single file - if( file != null ) + if( m_file != null ) { - if( file.exists() ) + if( m_file.exists() ) { - if( destFile == null ) + if( m_destFile == null ) { - destFile = new File( destDir, file.getName() ); + m_destFile = new File( m_destDir, m_file.getName() ); } - if( forceOverwrite || - ( file.lastModified() > destFile.lastModified() ) ) + if( m_forceOverwrite || + ( m_file.lastModified() > m_destFile.lastModified() ) ) { - fileCopyMap.put( file.getAbsolutePath(), destFile.getAbsolutePath() ); + m_fileCopyMap.put( m_file.getAbsolutePath(), m_destFile.getAbsolutePath() ); } else { - log( file + " omitted as " + destFile + " is up to date.", + log( m_file + " omitted as " + m_destFile + " is up to date.", Project.MSG_VERBOSE ); } } else { String message = "Could not find file " - + file.getAbsolutePath() + " to copy."; + + m_file.getAbsolutePath() + " to copy."; getLogger().info( message ); throw new TaskException( message ); } } // deal with the filesets - for( int i = 0; i < filesets.size(); i++ ) + for( int i = 0; i < m_filesets.size(); i++ ) { - FileSet fs = (FileSet)filesets.elementAt( i ); - DirectoryScanner ds = fs.getDirectoryScanner( project ); - File fromDir = fs.getDir( project ); - - String[] srcFiles = ds.getIncludedFiles(); - String[] srcDirs = ds.getIncludedDirectories(); - boolean isEverythingIncluded = ds.isEverythingIncluded(); - if( isEverythingIncluded - && !flatten && mapperElement == null ) + final FileSet fileSet = (FileSet)m_filesets.elementAt( i ); + final DirectoryScanner scanner = fileSet.getDirectoryScanner( project ); + final File fromDir = fileSet.getDir( project ); + + final String[] srcFiles = scanner.getIncludedFiles(); + final String[] srcDirs = scanner.getIncludedDirectories(); + final boolean isEverythingIncluded = scanner.isEverythingIncluded(); + + if( isEverythingIncluded && !m_flatten && null == m_mapperElement ) { - completeDirMap.put( fromDir, destDir ); + m_completeDirMap.put( fromDir, m_destDir ); } - scan( fromDir, destDir, srcFiles, srcDirs ); + + scan( fromDir, m_destDir, srcFiles, srcDirs ); } // do all the copy operations now... @@ -266,9 +269,9 @@ public class Copy extends Task // clean up destDir again - so this instance can be used a second // time without throwing an exception - if( destFile != null ) + if( null != m_destFile ) { - destDir = null; + m_destDir = null; } } @@ -279,39 +282,51 @@ public class Copy extends Task */ protected Vector getFilterSets() { - return filterSets; + return m_filterSets; } - protected void buildMap( File fromDir, File toDir, String[] names, - FileNameMapper mapper, Hashtable map ) + protected void buildMap( final File fromDir, + final File toDir, + final String[] names, + final FileNameMapper mapper, + final Hashtable map ) throws TaskException { + final String[] toCopy = buildFilenameList( names, mapper, fromDir, toDir ); + for( int i = 0; i < toCopy.length; i++ ) + { + final String destFilename = mapper.mapFileName( toCopy[ i ] )[ 0 ]; + + final File src = new File( fromDir, toCopy[ i ] ); + final File dest = new File( toDir, destFilename ); + map.put( src.getAbsolutePath(), dest.getAbsolutePath() ); + } + } - String[] toCopy = null; - if( forceOverwrite ) + private String[] buildFilenameList( final String[] names, + final FileNameMapper mapper, + final File fromDir, + final File toDir ) + throws TaskException + { + if( m_forceOverwrite ) { - Vector v = new Vector(); + final ArrayList list = new ArrayList( names.length ); for( int i = 0; i < names.length; i++ ) { - if( mapper.mapFileName( names[ i ] ) != null ) + final String name = names[ i ]; + if( null != mapper.mapFileName( name ) ) { - v.addElement( names[ i ] ); + list.add( name ); } } - toCopy = new String[ v.size() ]; - v.copyInto( toCopy ); + + return (String[])list.toArray( new String[ list.size() ] ); } else { - SourceFileScanner ds = new SourceFileScanner( this ); - toCopy = ds.restrict( names, fromDir, toDir, mapper ); - } - - for( int i = 0; i < toCopy.length; i++ ) - { - File src = new File( fromDir, toCopy[ i ] ); - File dest = new File( toDir, mapper.mapFileName( toCopy[ i ] )[ 0 ] ); - map.put( src.getAbsolutePath(), dest.getAbsolutePath() ); + final SourceFileScanner scanner = new SourceFileScanner( this ); + return scanner.restrict( names, fromDir, toDir, mapper ); } } @@ -322,61 +337,56 @@ public class Copy extends Task protected void doFileOperations() throws TaskException { - if( fileCopyMap.size() > 0 ) + if( m_fileCopyMap.size() > 0 ) { - getLogger().info( "Copying " + fileCopyMap.size() + - " file" + ( fileCopyMap.size() == 1 ? "" : "s" ) + - " to " + destDir.getAbsolutePath() ); + getLogger().info( "Copying " + m_fileCopyMap.size() + + " file" + ( m_fileCopyMap.size() == 1 ? "" : "s" ) + + " to " + m_destDir.getAbsolutePath() ); - Enumeration e = fileCopyMap.keys(); + Enumeration e = m_fileCopyMap.keys(); while( e.hasMoreElements() ) { String fromFile = (String)e.nextElement(); - String toFile = (String)fileCopyMap.get( fromFile ); + String toFile = (String)m_fileCopyMap.get( fromFile ); if( fromFile.equals( toFile ) ) { - log( "Skipping self-copy of " + fromFile, verbosity ); + getLogger().info( "Skipping self-copy of " + fromFile ); continue; } try { - log( "Copying " + fromFile + " to " + toFile, verbosity ); + getLogger().info( "Copying " + fromFile + " to " + toFile ); - FilterSetCollection executionFilters = new FilterSetCollection(); - if( filtering ) - { - executionFilters.addFilterSet( project.getGlobalFilterSet() ); - } - for( Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements(); ) - { - executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); - } + final FilterSetCollection executionFilters = buildFilterSet(); final File src = new File( fromFile ); final File dest = new File( toFile ); - if( forceOverwrite ) + + if( m_forceOverwrite ) { FileUtil.forceDelete( dest ); } + FileUtils.newFileUtils().copyFile( src, dest, executionFilters ); - if( preserveLastModified ) + + if( m_preserveLastModified ) { dest.setLastModified( src.lastModified() ); } } - catch( IOException ioe ) + catch( final IOException ioe ) { - String msg = "Failed to copy " + fromFile + " to " + toFile - + " due to " + ioe.getMessage(); + final String msg = "Failed to copy " + fromFile + " to " + + toFile + " due to " + ioe.getMessage(); throw new TaskException( msg, ioe ); } } } - if( includeEmpty ) + if( m_includeEmpty ) { - Enumeration e = dirCopyMap.elements(); + Enumeration e = m_dirCopyMap.elements(); int count = 0; while( e.hasMoreElements() ) { @@ -399,11 +409,26 @@ public class Copy extends Task getLogger().info( "Copied " + count + " empty director" + ( count == 1 ? "y" : "ies" ) + - " to " + destDir.getAbsolutePath() ); + " to " + m_destDir.getAbsolutePath() ); } } } + private FilterSetCollection buildFilterSet() + { + final FilterSetCollection executionFilters = new FilterSetCollection(); + if( m_filtering ) + { + executionFilters.addFilterSet( project.getGlobalFilterSet() ); + } + + for( final Enumeration filterEnum = m_filterSets.elements(); filterEnum.hasMoreElements(); ) + { + executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); + } + return executionFilters; + } + /** * Compares source files to destination files to see if they should be * copied. @@ -417,11 +442,11 @@ public class Copy extends Task throws TaskException { FileNameMapper mapper = null; - if( mapperElement != null ) + if( m_mapperElement != null ) { - mapper = mapperElement.getImplementation(); + mapper = m_mapperElement.getImplementation(); } - else if( flatten ) + else if( m_flatten ) { mapper = new FlatFileNameMapper(); } @@ -430,11 +455,11 @@ public class Copy extends Task mapper = new IdentityMapper(); } - buildMap( fromDir, toDir, files, mapper, fileCopyMap ); + buildMap( fromDir, toDir, files, mapper, m_fileCopyMap ); - if( includeEmpty ) + if( m_includeEmpty ) { - buildMap( fromDir, toDir, dirs, mapper, dirCopyMap ); + buildMap( fromDir, toDir, dirs, mapper, m_dirCopyMap ); } } @@ -451,45 +476,45 @@ public class Copy extends Task protected void validateAttributes() throws TaskException { - if( file == null && filesets.size() == 0 ) + if( m_file == null && m_filesets.size() == 0 ) { throw new TaskException( "Specify at least one source - a file or a fileset." ); } - if( destFile != null && destDir != null ) + if( m_destFile != null && m_destDir != null ) { throw new TaskException( "Only one of tofile and todir may be set." ); } - if( destFile == null && destDir == null ) + if( m_destFile == null && m_destDir == null ) { throw new TaskException( "One of tofile or todir must be set." ); } - if( file != null && file.exists() && file.isDirectory() ) + if( m_file != null && m_file.exists() && m_file.isDirectory() ) { throw new TaskException( "Use a fileset to copy directories." ); } - if( destFile != null && filesets.size() > 0 ) + if( m_destFile != null && m_filesets.size() > 0 ) { - if( filesets.size() > 1 ) + if( m_filesets.size() > 1 ) { throw new TaskException( "Cannot concatenate multiple files into a single file." ); } else { - FileSet fs = (FileSet)filesets.elementAt( 0 ); + FileSet fs = (FileSet)m_filesets.elementAt( 0 ); DirectoryScanner ds = fs.getDirectoryScanner( project ); String[] srcFiles = ds.getIncludedFiles(); if( srcFiles.length > 0 ) { - if( file == null ) + if( m_file == null ) { - file = new File( srcFiles[ 0 ] ); - filesets.removeElementAt( 0 ); + m_file = new File( srcFiles[ 0 ] ); + m_filesets.removeElementAt( 0 ); } else { @@ -505,9 +530,59 @@ public class Copy extends Task } } - if( destFile != null ) + if( m_destFile != null ) { - destDir = new File( destFile.getParent() );// be 1.1 friendly + m_destDir = new File( m_destFile.getParent() );// be 1.1 friendly } } + + protected Vector getFilesets() + { + return m_filesets; + } + + protected boolean isFiltering() + { + return m_filtering; + } + + protected boolean isForceOverwrite() + { + return m_forceOverwrite; + } + + protected int getVerbosity() + { + return m_verbosity; + } + + protected boolean isIncludeEmpty() + { + return m_includeEmpty; + } + + protected Hashtable getFileCopyMap() + { + return m_fileCopyMap; + } + + protected Hashtable getDirCopyMap() + { + return m_dirCopyMap; + } + + protected Hashtable getCompleteDirMap() + { + return m_completeDirMap; + } + + protected File getDestDir() + { + return m_destDir; + } + + protected void setForceOverwrite( final boolean forceOverwrite ) + { + m_forceOverwrite = forceOverwrite; + } } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Move.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Move.java index 432c1b2a2..30d257b64 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Move.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/file/Move.java @@ -36,11 +36,10 @@ import org.apache.tools.ant.types.FilterSetCollection; */ public class Move extends Copy { - public Move() { super(); - forceOverwrite = true; + setForceOverwrite( true ); } /** @@ -68,7 +67,7 @@ public class Move extends Copy throw new TaskException( "UNEXPECTED ERROR - The file " + f.getAbsolutePath() + " should not exist!" ); } } - log( "Deleting directory " + d.getAbsolutePath(), verbosity ); + log( "Deleting directory " + d.getAbsolutePath(), getVerbosity() ); if( !d.delete() ) { throw new TaskException( "Unable to delete directory " + d.getAbsolutePath() ); @@ -83,18 +82,18 @@ public class Move extends Copy throws TaskException { //Attempt complete directory renames, if any, first. - if( completeDirMap.size() > 0 ) + if( getCompleteDirMap().size() > 0 ) { - Enumeration e = completeDirMap.keys(); + Enumeration e = getCompleteDirMap().keys(); while( e.hasMoreElements() ) { File fromDir = (File)e.nextElement(); - File toDir = (File)completeDirMap.get( fromDir ); + File toDir = (File)getCompleteDirMap().get( fromDir ); try { log( "Attempting to rename dir: " + fromDir + - " to " + toDir, verbosity ); - renameFile( fromDir, toDir, filtering, forceOverwrite ); + " to " + toDir, getVerbosity() ); + renameFile( fromDir, toDir, isFiltering(), isForceOverwrite() ); } catch( IOException ioe ) { @@ -105,20 +104,20 @@ public class Move extends Copy } } } - if( fileCopyMap.size() > 0 ) + if( getFileCopyMap().size() > 0 ) {// files to move - getLogger().info( "Moving " + fileCopyMap.size() + " files to " + - destDir.getAbsolutePath() ); + getLogger().info( "Moving " + getFileCopyMap().size() + " files to " + + getDestDir().getAbsolutePath() ); - Enumeration e = fileCopyMap.keys(); + Enumeration e = getFileCopyMap().keys(); while( e.hasMoreElements() ) { String fromFile = (String)e.nextElement(); - String toFile = (String)fileCopyMap.get( fromFile ); + String toFile = (String)getFileCopyMap().get( fromFile ); if( fromFile.equals( toFile ) ) { - log( "Skipping self-move of " + fromFile, verbosity ); + log( "Skipping self-move of " + fromFile, getVerbosity() ); continue; } @@ -132,8 +131,8 @@ public class Move extends Copy try { log( "Attempting to rename: " + fromFile + - " to " + toFile, verbosity ); - moved = renameFile( f, d, filtering, forceOverwrite ); + " to " + toFile, getVerbosity() ); + moved = renameFile( f, d, isFiltering(), isForceOverwrite() ); } catch( IOException ioe ) { @@ -147,10 +146,10 @@ public class Move extends Copy { try { - log( "Moving " + fromFile + " to " + toFile, verbosity ); + log( "Moving " + fromFile + " to " + toFile, getVerbosity() ); FilterSetCollection executionFilters = new FilterSetCollection(); - if( filtering ) + if( isFiltering() ) { executionFilters.addFilterSet( project.getGlobalFilterSet() ); } @@ -159,7 +158,7 @@ public class Move extends Copy executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); } - if( forceOverwrite ) + if( isForceOverwrite() ) { FileUtil.forceDelete( d ); } @@ -184,9 +183,9 @@ public class Move extends Copy } } - if( includeEmpty ) + if( isIncludeEmpty() ) { - Enumeration e = dirCopyMap.elements(); + Enumeration e = getDirCopyMap().elements(); int count = 0; while( e.hasMoreElements() ) { @@ -206,13 +205,13 @@ public class Move extends Copy if( count > 0 ) { - getLogger().info( "Moved " + count + " empty directories to " + destDir.getAbsolutePath() ); + getLogger().info( "Moved " + count + " empty directories to " + getDestDir().getAbsolutePath() ); } } - if( filesets.size() > 0 ) + if( getFilesets().size() > 0 ) { - Enumeration e = filesets.elements(); + Enumeration e = getFilesets().elements(); while( e.hasMoreElements() ) { FileSet fs = (FileSet)e.nextElement();