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 }