1 package de.masters_of_disaster.ant.tasks.calculatesize; 2 3 import java.io.File ; 4 import java.util.Enumeration ; 5 import java.util.Vector ; 6 import org.apache.tools.ant.BuildException; 7 import org.apache.tools.ant.taskdefs.MatchingTask; 8 import org.apache.tools.ant.types.FileSet; 9 10 15 public class CalculateSize extends MatchingTask { 16 String realSizeProperty = null; 17 String diskSizeProperty = null; 18 Vector fileSets = new Vector (); 19 File baseDir; 20 21 26 public FileSet createFileSet() { 27 FileSet fileSet = new FileSet(); 28 fileSets.addElement(fileSet); 29 return fileSet; 30 } 31 32 37 public void setBaseDir(File baseDir) { 38 this.baseDir = baseDir; 39 fileset.setDir(baseDir); 40 } 41 42 47 public void setRealSizeProperty(String realSizeProperty) { 48 this.realSizeProperty = realSizeProperty; 49 } 50 51 56 public void setDiskSizeProperty(String diskSizeProperty) { 57 this.diskSizeProperty = diskSizeProperty; 58 } 59 60 65 public void execute() throws BuildException { 66 if ((null == realSizeProperty) && (null == diskSizeProperty)) { 67 throw new BuildException("realSizeProperty or diskSizeProperty must be set for <CalculateSize>"); 68 } 69 70 if (null != baseDir) { 71 fileSets.addElement(fileset); 73 } 74 75 long realSize = 0; 76 long diskSize = 0; 77 for (Enumeration e=fileSets.elements() ; e.hasMoreElements() ; ) { 78 FileSet fileSet = (FileSet)e.nextElement(); 79 String [] files = fileSet.getDirectoryScanner(getProject()).getIncludedFiles(); 80 File fileSetDir = fileSet.getDir(getProject()); 81 for (int i=0, c=files.length ; i<c ; i++) { 82 long fileLength = new File (fileSetDir,files[i]).length(); 83 realSize += fileLength / 1024; 84 diskSize += (fileLength / 4096 + 1) * 4; 85 } 86 } 87 if (null != realSizeProperty) { 88 getProject().setNewProperty(realSizeProperty,Long.toString(realSize)); 89 } 90 if (null != diskSizeProperty) { 91 getProject().setNewProperty(diskSizeProperty,Long.toString(diskSize)); 92 } 93 } 94 } 95 | Popular Tags |