示例#1
0
  private static boolean isSolved(
      final DIDependency dependency,
      final Set<String> parentComponentInfos,
      final Set<String> allComponentInfos,
      final List<String> sorted) {
    // Une dépendace est résolue si tous les ids concernés sont résolus.
    // Si la dépendance est déjà résolue et bien c'est bon on pass à la dépendances suivante

    if (dependency.isRequired()) {
      return parentComponentInfos.contains(dependency.getName())
          || sorted.contains(dependency.getName());
    } else if (dependency.isOption()) {
      // Si l'objet fait partie de la liste alors il doit être résolu.
      if (allComponentInfos.contains(dependency.getName())) {
        return sorted.contains(dependency.getName());
      }
      // Sinon comme il est optionnel c'est ok.
      return true;
    } else if (dependency.isList()) {
      // Si l'objet fait partie de la liste alors il doit être résolu.
      for (final String id : allComponentInfos) {
        final boolean match =
            id.equals(dependency.getName()) || id.startsWith(dependency.getName() + '#');
        if (match && !sorted.contains(id)) {
          // L'objet id fait partie de la liste
          return sorted.contains(id);
        }
      }
      return true;
    }
    throw new IllegalStateException();
  }