+ private static YangModelDependencyInfo parseModuleContext(
+ final Module_stmtContext module) {
+ final String name = getArgumentString(module);
+ final String latestRevision = getLatestRevision(module.revision_stmts());
+ final ImmutableSet<ModuleImport> imports = parseImports(module
+ .linkage_stmts().import_stmt());
+ final ImmutableSet<ModuleImport> includes = parseIncludes(module
+ .linkage_stmts().include_stmt());
+
+ return new ModuleDependencyInfo(name, latestRevision, imports, includes);
+ }
+
+ private static YangModelDependencyInfo parseModuleContext(
+ final YangStatementParser.StatementContext module) {
+ final String name = Utils.stringFromStringContext(module.argument());
+ final String latestRevision = getLatestRevision(module);
+ final Optional<SemVer> semVer = Optional.fromNullable(getSemanticVersion(module));
+ final ImmutableSet<ModuleImport> imports = parseImports(module);
+ final ImmutableSet<ModuleImport> includes = parseIncludes(module);
+
+ return new ModuleDependencyInfo(name, latestRevision, imports, includes, semVer);
+ }
+
+ private static ImmutableSet<ModuleImport> parseImports(
+ final YangStatementParser.StatementContext module) {
+ final Set<ModuleImport> result = new HashSet<>();
+ final List<StatementContext> subStatements = module.statement();
+ for (final StatementContext subStatementContext : subStatements) {
+ if (subStatementContext
+ .keyword()
+ .getText()
+ .equals(Rfc6020Mapping.IMPORT.getStatementName()
+ .getLocalName())) {
+ final String revisionDateStr = getRevisionDateString(subStatementContext);
+ final String importedModuleName = Utils
+ .stringFromStringContext(subStatementContext.argument());
+ final Date revisionDate = (revisionDateStr == null) ? null : QName
+ .parseRevision(revisionDateStr);
+ final Optional<SemVer> importSemVer = Optional.fromNullable(getSemanticVersion(subStatementContext));
+ result.add(new ModuleImportImpl(importedModuleName,
+ revisionDate, importSemVer));
+ }