示例#1
0
    private static Map<String, BootstrapPackage> getPackagesMap(Database database) {
      Map<String, BootstrapPackage> packagesByName = new TreeMap<String, BootstrapPackage>();
      // First create the _init package for the whole database
      BootstrapPackage initPkg = new BootstrapPackage();
      initPkg.setName(INIT_NAME);
      initPkg.setIsInit(true);
      packagesByName.put(INIT_NAME, initPkg);

      for (ObjectType type : database.getEnvironment().getTypes()) {
        TypeData bmod = type.as(TypeData.class);
        for (String name : bmod.getPackageNames()) {
          BootstrapPackage pkg = packagesByName.get(name);
          if (pkg == null) {
            pkg = new BootstrapPackage();
            pkg.setName(name);
            packagesByName.put(name, pkg);
          }
          pkg.getTypes().add(type);
        }
      }
      for (BootstrapPackage pkg : Query.from(BootstrapPackage.class).using(database).selectAll()) {
        packagesByName.put(pkg.getName(), pkg);
      }
      for (Map.Entry<String, BootstrapPackage> entry : packagesByName.entrySet()) {
        checkConsistency(
            database,
            entry.getValue(),
            new HashSet<BootstrapPackage>(packagesByName.values()),
            null);
      }
      return packagesByName;
    }