示例#1
0
  private ModelDescription transform(
      View target, ModelRepository repository, Map<Name, ModelDescription> context) {
    assert target != null;
    assert repository != null;
    assert context != null;

    CreateView ast = target.ast;

    // 先に外部依存関係を解決してcontextに登録する
    if (resolveDependency(ast, repository, context) == false) {
      return null;
    }

    Kind kind = ast.getKind();
    if (kind == Kind.JOINED) {
      return transformJoined(target, context);
    } else if (kind == Kind.SUMMARIZED) {
      return transformSummarized(target, context);
    } else {
      LOG.error("{}は処理できない種類のビューです: {}", ast.name, ast);
      return null;
    }
  }
示例#2
0
 private boolean resolveDependency(
     CreateView target, ModelRepository repository, Map<Name, ModelDescription> context) {
   boolean success = true;
   for (Name dependency : target.getDependencies()) {
     LOG.debug("{}の依存先として{}を解決しています", target.name, dependency);
     if (context.containsKey(dependency)) {
       if (context.get(dependency) == null) {
         LOG.warn("{}は依存先の{}が失敗しているため、変換をスキップします", target.name, dependency);
         return false;
       }
     } else {
       ModelDescription resolved = repository.find(dependency.token);
       if (resolved == null) {
         LOG.error("{}は依存先の{}が見つからないため、変換に失敗しました", target.name, dependency);
         success = false;
       } else {
         context.put(dependency, resolved);
       }
     }
   }
   return success;
 }