/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. * * This program and the accompanying materials are made available under * the terms of the Common Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/cpl-v10.html * * $Id: FileTask.java,v 1.2.2.1 2004/07/08 10:52:10 vlad_r Exp $ */ package com.vladium.emma.ant; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.types.FileSet; import com.vladium.emma.ant.XFileSet; // ---------------------------------------------------------------------------- /** * @author Vlad Roubtsov, (C) 2003 */ public abstract class FileTask extends NestedTask { // public: ................................................................ // public static final class FileElement // { // public FileElement (final List /* File */ files) // { // m_files = files; // } // // public void setFile (final File file) // { // if (file != null) m_files.add (file); // } // // // private final List /* File */ m_files; // // } // end of nested class // infileset|fileset element: public final void addInfileset (final XFileSet set) { if (set != null) m_dataFileSets.add (set); } public final void addFileset (final XFileSet set) { if (set != null) m_dataFileSets.add (set); } // // infile|file element: // // public final FileElement createInfile () // { // return new FileElement (m_dataFiles); // } // // public final FileElement createFile () // { // return new FileElement (m_dataFiles); // } // protected: ............................................................. protected FileTask (final SuppressableTask parent) { super (parent); m_dataFileSets = new ArrayList (); // m_dataFiles = new ArrayList (); } protected final String [] getDataPath (final boolean removeNonexistent) { final List /* String */ _files = new ArrayList (); // merge filesets: for (Iterator i = m_dataFileSets.iterator (); i.hasNext (); ) { final FileSet set = (FileSet) i.next (); final DirectoryScanner ds = set.getDirectoryScanner (project); final File dsBaseDir = ds.getBasedir (); final String [] dsfiles = ds.getIncludedFiles (); for (int f = 0; f < dsfiles.length; ++ f) { _files.add (new File (dsBaseDir, dsfiles [f]).getAbsolutePath ()); } } // // merge files: // for (Iterator i = m_dataFiles.iterator (); i.hasNext (); ) // { // final File file = (File) i.next (); // if (! removeNonexistent || file.exists ()) // { // _files.add (file.getAbsolutePath ()); // } // } if (_files.size () == 0) return EMPTY_STRING_ARRAY; else { final String [] files = new String [_files.size ()]; _files.toArray (files); return files; } } // package: ............................................................... // private: ............................................................... private final List /* FileSet */ m_dataFileSets; // never null // private final List /* File */ m_dataFiles; // never null private static final String [] EMPTY_STRING_ARRAY = new String [0]; } // end of class // ----------------------------------------------------------------------------