1 import java.nio.file.FileSystems;
   2 import java.nio.file.Path;
   3 import java.nio.file.SimpleFileVisitor;
   4 import java.util.HashSet;
   5 import java.util.Stack;
   6 import java.util.Vector;
   7 
   8 public class FileTreeCreator extends SimpleFileVisitor<Path>
   9 {
  10    Path vcProjLocation;
  11    Path startDir;
  12    final int startDirLength;
  13    Stack<DirAttributes> attributes = new Stack<DirAttributes>();
  14    Vector<BuildConfig> allConfigs;
  15    WinGammaPlatformVC10 wg;
  16    
  17    public FileTreeCreator(Path startDir, Vector<BuildConfig> allConfigs, WinGammaPlatformVC10 wg) { 
  18       super();
  19       this.wg = wg;
  20       this.allConfigs = allConfigs;
  21       this.startDir = startDir;
  22       startDirLength = startDir.toAbsolutePath().toString().length();
  23       vcProjLocation = FileSystems.getDefault().getPath(allConfigs.firstElement().get("BuildSpace"));
  24       attributes.push(new DirAttributes());
  25    }
  26    
  27    public class DirAttributes {
  28 
  29       private HashSet<BuildConfig> ignores;
  30       private HashSet<BuildConfig> disablePch;
  31 
  32       public DirAttributes() {
  33          ignores = new HashSet<BuildConfig>();
  34          disablePch = new HashSet<BuildConfig>();
  35       }
  36 
  37       public DirAttributes(HashSet<BuildConfig> excludes2, HashSet<BuildConfig> disablePch2) {
  38          ignores = excludes2;
  39          disablePch = disablePch2;
  40       }
  41 
  42       @SuppressWarnings("unchecked")
  43       public DirAttributes clone() {
  44          return new DirAttributes((HashSet<BuildConfig>)this.ignores.clone(), (HashSet<BuildConfig>)this.disablePch.clone());
  45       }
  46 
  47       public void setIgnore(BuildConfig conf) {
  48          ignores.add(conf);
  49       }
  50 
  51       public boolean hasIgnore(BuildConfig cfg) {
  52          return ignores.contains(cfg);
  53       }
  54 
  55       public void removeFromIgnored(BuildConfig cfg) {
  56          ignores.remove(cfg);                   
  57       }
  58 
  59       public void setDisablePch(BuildConfig conf) {
  60          disablePch.add(conf);
  61       }
  62 
  63       public boolean hasDisablePch(BuildConfig cfg) {
  64          return disablePch.contains(cfg);
  65       }
  66 
  67       public void removeFromDisablePch(BuildConfig cfg) {
  68          disablePch.remove(cfg);                        
  69       }
  70 
  71    }
  72 }