Changeset 1196


Ignore:
Timestamp:
Jul 10, 2011, 3:49:59 PM (6 years ago)
Author:
stefan
Message:
 
Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/jlatexeditor/PackagesExtractor.java

    r1195 r1196  
    55import org.xml.sax.helpers.XMLReaderFactory;
    66import util.StreamUtils;
     7import util.Trie;
    78import util.TrieSet;
     9
     10import java.util.ArrayList;
     11import java.util.HashSet;
    812
    913/**
     
    2125      long startTime = System.nanoTime();
    2226
    23       packageParser = new PackageParser(PACKAGES_FILE);
    24       docClassesParser = new PackageParser(DOCCLASSES_FILE);
     27      packageParser = getPackageParser();
     28      docClassesParser = getDocClassesParser();
     29
     30      Package graphics = packageParser.getPackages().get("graphics");
     31      for (Package dependantPackage : graphics.getDependantPackagesRecursively()) {
     32        System.out.println(dependantPackage.getName());
     33      }
    2534
    2635      System.out.println((System.nanoTime() - startTime) / (1000 * 1000));
     36      System.out.println();
     37      System.out.println(graphics.getDependantPackagesRecursively().size());
    2738    } catch (Exception e) {
    2839      e.printStackTrace();
     
    3344    if (packageParser == null) {
    3445      packageParser = new PackageParser(PACKAGES_FILE);
     46
     47      // long time = System.nanoTime();
     48      packageParser.finalizePackages();
     49      // System.out.println((System.nanoTime() - time) / 1000 / 1000);
    3550    }
    3651    return packageParser;
     
    5065    private Package pack;
    5166    private String debPack;
    52     private TrieSet<Package> packages = new TrieSet<Package>();
     67    private Trie<Package> packages = new Trie<Package>();
    5368    private TrieSet<Command> commands = new TrieSet<Command>();
    5469
     
    95110    }
    96111
    97     public TrieSet<Package> getPackages() {
     112    public Trie<Package> getPackages() {
    98113      return packages;
    99114    }
     
    101116    public TrieSet<Command> getCommands() {
    102117      return commands;
     118    }
     119
     120    protected void finalizePackages() {
     121      for (Package pack : packages) {
     122        pack.finalizePackage();
     123      }
    103124    }
    104125  }
     
    107128    private String name;
    108129    private String[] options = new String[0];
    109     private String[] requiresPackages = new String[0];
     130    private String[] requiresPackageNames = new String[0];
     131    private ArrayList<Package> requiresPackages = null;
     132    private ArrayList<Package> dependantPackages = new ArrayList<Package>();
    110133    private String title;
    111134    private String description;
     
    118141      }
    119142      if (requiresPackagesList != null) {
    120         requiresPackages = requiresPackagesList.split(",");
     143        requiresPackageNames = requiresPackagesList.split(",");
    121144      }
    122145      this.title = title;
     
    147170    }
    148171
    149     public String[] getRequiresPackages() {
     172    public ArrayList<Package> getRequiresPackages() {
     173      if (requiresPackages == null) {
     174        requiresPackages = new ArrayList<Package>();
     175        for (String packageName : requiresPackageNames) {
     176          Package pack = getPackageParser().getPackages().get(packageName);
     177          if (pack != null) {
     178            requiresPackages.add(pack);
     179          }
     180        }
     181        // free memory
     182        requiresPackageNames = null;
     183      }
    150184      return requiresPackages;
     185    }
     186
     187    public ArrayList<Package> getDependantPackages() {
     188      return dependantPackages;
     189    }
     190
     191    public HashSet<Package> getDependantPackagesRecursively() {
     192      return addDependantPackagesRecursively(new HashSet<Package>());
     193    }
     194
     195    public HashSet<Package> addDependantPackagesRecursively(HashSet<Package> depPackages) {
     196      if (!depPackages.contains(this)) {
     197        depPackages.add(this);
     198        for (Package dependantPackage : dependantPackages) {
     199          dependantPackage.addDependantPackagesRecursively(depPackages);
     200        }
     201      }
     202      return depPackages;
    151203    }
    152204
     
    166218    public int compareTo(Package that) {
    167219      return this.name.compareTo(that.name);
     220    }
     221
     222    public void finalizePackage() {
     223      for (Package pack : getRequiresPackages()) {
     224        pack.dependantPackages.add(this);
     225      }
    168226    }
    169227  }
  • trunk/src/util/Trie.java

    r1033 r1196  
    1111 * @author Stefan Endrullis &lt;stefan@endrullis.de&gt;
    1212 */
    13 public class Trie<T> implements AbstractTrie<T> {
     13public class Trie<T> implements AbstractTrie<T>, Iterable<T> {
    1414  private int count = 0;
    1515  private TreeMap<Character, Trie<T>> map = new TreeMap<Character, Trie<T>>();
     
    165165      }
    166166    };
     167  }
     168
     169  @Override
     170  public Iterator<T> iterator() {
     171    return getObjectsIterable("").iterator();
    167172  }
    168173
Note: See TracChangeset for help on using the changeset viewer.