hotspot/src/share/tools/ProjectCreator/FileTreeCreator.java
author neliasso
Thu, 29 Mar 2012 16:43:21 +0200
changeset 13892 9ba13acea673
child 19277 8952a5e25673
permissions -rw-r--r--
7163863: Updated projectcreator Summary: Enable source browsing for all platform dependent code Reviewed-by: brutisso, coleenp
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     1
import java.nio.file.FileSystems;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     2
import java.nio.file.Path;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     3
import java.nio.file.SimpleFileVisitor;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     4
import java.util.HashSet;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     5
import java.util.Stack;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     6
import java.util.Vector;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     7
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     8
public class FileTreeCreator extends SimpleFileVisitor<Path>
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
     9
{
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    10
   Path vcProjLocation;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    11
   Path startDir;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    12
   final int startDirLength;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    13
   Stack<DirAttributes> attributes = new Stack<DirAttributes>();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    14
   Vector<BuildConfig> allConfigs;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    15
   WinGammaPlatformVC10 wg;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    16
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    17
   public FileTreeCreator(Path startDir, Vector<BuildConfig> allConfigs, WinGammaPlatformVC10 wg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    18
      super();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    19
      this.wg = wg;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    20
      this.allConfigs = allConfigs;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    21
      this.startDir = startDir;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    22
      startDirLength = startDir.toAbsolutePath().toString().length();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    23
      vcProjLocation = FileSystems.getDefault().getPath(allConfigs.firstElement().get("BuildSpace"));
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    24
      attributes.push(new DirAttributes());
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    25
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    26
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    27
   public class DirAttributes {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    28
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    29
      private HashSet<BuildConfig> ignores;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    30
      private HashSet<BuildConfig> disablePch;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    31
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    32
      public DirAttributes() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    33
         ignores = new HashSet<BuildConfig>();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    34
         disablePch = new HashSet<BuildConfig>();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    35
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    36
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    37
      public DirAttributes(HashSet<BuildConfig> excludes2, HashSet<BuildConfig> disablePch2) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    38
         ignores = excludes2;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    39
         disablePch = disablePch2;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    40
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    41
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    42
      @SuppressWarnings("unchecked")
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    43
      public DirAttributes clone() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    44
         return new DirAttributes((HashSet<BuildConfig>)this.ignores.clone(), (HashSet<BuildConfig>)this.disablePch.clone());
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    45
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    46
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    47
      public void setIgnore(BuildConfig conf) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    48
         ignores.add(conf);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    49
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    50
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    51
      public boolean hasIgnore(BuildConfig cfg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    52
         return ignores.contains(cfg);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    53
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    54
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    55
      public void removeFromIgnored(BuildConfig cfg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    56
         ignores.remove(cfg);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    57
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    58
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    59
      public void setDisablePch(BuildConfig conf) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    60
         disablePch.add(conf);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    61
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    62
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    63
      public boolean hasDisablePch(BuildConfig cfg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    64
         return disablePch.contains(cfg);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    65
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    66
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    67
      public void removeFromDisablePch(BuildConfig cfg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    68
         disablePch.remove(cfg);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    69
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    70
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    71
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents:
diff changeset
    72
}