001    package org.shiftone.jrat.inject.process;
002    
003    
004    import org.shiftone.jrat.inject.InjectorOptions;
005    import org.shiftone.jrat.inject.bytecode.Transformer;
006    import org.shiftone.jrat.util.Assert;
007    import org.shiftone.jrat.util.log.Logger;
008    
009    import java.io.File;
010    
011    
012    /**
013     * @author jeff@shiftone.org (Jeff Drost)
014     */
015    public class DirectoryFileProcessor implements FileProcessor {
016    
017        private static final Logger LOG = Logger.getLogger(DirectoryFileProcessor.class);
018        private FileProcessor fileProcessor;
019    
020        public DirectoryFileProcessor(FileProcessor fileProcessor) {
021            this.fileProcessor = fileProcessor;
022        }
023    
024    
025        public void process(Transformer transformer, InjectorOptions options, File source, File target) {
026    
027            LOG.info("process " + source);
028            Assert.assertTrue("source exists", source.exists());
029            Assert.assertTrue("source is directory", source.isDirectory());
030    
031            if (!target.exists()) {
032                target.mkdirs();
033            }
034    
035            File[] files = source.listFiles();
036    
037            for (int i = 0; i < files.length; i++) {
038                File childSource = files[i];
039                File childTarget = new File(target.getAbsolutePath() + File.separator + files[i].getName());
040    
041                fileProcessor.process(transformer, options, childSource, childTarget);
042            }
043        }
044    }