1/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. 2 * 3 * This program and the accompanying materials are made available under 4 * the terms of the Common Public License v1.0 which accompanies this distribution, 5 * and is available at http://www.eclipse.org/legal/cpl-v10.html 6 * 7 * $Id: FileTask.java,v 1.2.2.1 2004/07/08 10:52:10 vlad_r Exp $ 8 */ 9package com.vladium.emma.ant; 10 11import java.io.File; 12import java.util.ArrayList; 13import java.util.Iterator; 14import java.util.List; 15 16import org.apache.tools.ant.DirectoryScanner; 17import org.apache.tools.ant.types.FileSet; 18 19import com.vladium.emma.ant.XFileSet; 20 21// ---------------------------------------------------------------------------- 22/** 23 * @author Vlad Roubtsov, (C) 2003 24 */ 25public 26abstract class FileTask extends NestedTask 27{ 28 // public: ................................................................ 29 30 31// public static final class FileElement 32// { 33// public FileElement (final List /* File */ files) 34// { 35// m_files = files; 36// } 37// 38// public void setFile (final File file) 39// { 40// if (file != null) m_files.add (file); 41// } 42// 43// 44// private final List /* File */ m_files; 45// 46// } // end of nested class 47 48 49 // infileset|fileset element: 50 51 public final void addInfileset (final XFileSet set) 52 { 53 if (set != null) m_dataFileSets.add (set); 54 } 55 56 public final void addFileset (final XFileSet set) 57 { 58 if (set != null) m_dataFileSets.add (set); 59 } 60 61 62// // infile|file element: 63// 64// public final FileElement createInfile () 65// { 66// return new FileElement (m_dataFiles); 67// } 68// 69// public final FileElement createFile () 70// { 71// return new FileElement (m_dataFiles); 72// } 73 74 // protected: ............................................................. 75 76 77 protected FileTask (final SuppressableTask parent) 78 { 79 super (parent); 80 81 m_dataFileSets = new ArrayList (); 82// m_dataFiles = new ArrayList (); 83 } 84 85 86 protected final String [] getDataPath (final boolean removeNonexistent) 87 { 88 final List /* String */ _files = new ArrayList (); 89 90 // merge filesets: 91 for (Iterator i = m_dataFileSets.iterator (); i.hasNext (); ) 92 { 93 final FileSet set = (FileSet) i.next (); 94 final DirectoryScanner ds = set.getDirectoryScanner (project); 95 final File dsBaseDir = ds.getBasedir (); 96 97 final String [] dsfiles = ds.getIncludedFiles (); 98 for (int f = 0; f < dsfiles.length; ++ f) 99 { 100 _files.add (new File (dsBaseDir, dsfiles [f]).getAbsolutePath ()); 101 } 102 } 103 104// // merge files: 105// for (Iterator i = m_dataFiles.iterator (); i.hasNext (); ) 106// { 107// final File file = (File) i.next (); 108// if (! removeNonexistent || file.exists ()) 109// { 110// _files.add (file.getAbsolutePath ()); 111// } 112// } 113 114 if (_files.size () == 0) 115 return EMPTY_STRING_ARRAY; 116 else 117 { 118 final String [] files = new String [_files.size ()]; 119 _files.toArray (files); 120 121 return files; 122 } 123 } 124 125 // package: ............................................................... 126 127 // private: ............................................................... 128 129 130 private final List /* FileSet */ m_dataFileSets; // never null 131// private final List /* File */ m_dataFiles; // never null 132 133 private static final String [] EMPTY_STRING_ARRAY = new String [0]; 134 135} // end of class 136// ----------------------------------------------------------------------------