From af3702c49b2f6459ee6bd7650984140ee32c9736 Mon Sep 17 00:00:00 2001 From: nilswende Date: Thu, 24 Oct 2024 17:14:52 +0200 Subject: [PATCH] support notes for Table Group --- .../com/wn/dbml/compiler/parser/ParserImpl.java | 13 +++++++++---- src/main/java/com/wn/dbml/model/TableGroup.java | 9 +++++++++ src/test/java/com/wn/dbml/compiler/ParserTest.java | 4 ++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/wn/dbml/compiler/parser/ParserImpl.java b/src/main/java/com/wn/dbml/compiler/parser/ParserImpl.java index ec22b28..098148c 100644 --- a/src/main/java/com/wn/dbml/compiler/parser/ParserImpl.java +++ b/src/main/java/com/wn/dbml/compiler/parser/ParserImpl.java @@ -401,10 +401,15 @@ private void parseTableGroup() { } else { next(LBRACE); while (true) { - var tableName = parseTableName(); - var table = findTable(tableName); - if (!tableGroup.addTable(table)) { - error("Table '%s' is already defined", table); + if (lookaheadTypeIs(NOTE)) { + next(NOTE); + tableGroup.setNote(parseNote()); + } else { + var tableName = parseTableName(); + var table = findTable(tableName); + if (!tableGroup.addTable(table)) { + error("Table '%s' is already defined", table); + } } if (lookaheadTypeIs(RBRACE)) { next(RBRACE); diff --git a/src/main/java/com/wn/dbml/model/TableGroup.java b/src/main/java/com/wn/dbml/model/TableGroup.java index 6e8c8af..bff6fbe 100644 --- a/src/main/java/com/wn/dbml/model/TableGroup.java +++ b/src/main/java/com/wn/dbml/model/TableGroup.java @@ -9,6 +9,7 @@ public class TableGroup { private final Schema schema; private final String name; private final Set tables = new LinkedHashSet<>(); + private Note note; TableGroup(final Schema schema, final String name) { this.schema = Objects.requireNonNull(schema); @@ -31,6 +32,14 @@ public Set
getTables() { return Collections.unmodifiableSet(tables); } + public Note getNote() { + return note; + } + + public void setNote(Note note) { + this.note = note; + } + @Override public boolean equals(final Object o) { if (this == o) return true; diff --git a/src/test/java/com/wn/dbml/compiler/ParserTest.java b/src/test/java/com/wn/dbml/compiler/ParserTest.java index 18fe48a..de1082e 100644 --- a/src/test/java/com/wn/dbml/compiler/ParserTest.java +++ b/src/test/java/com/wn/dbml/compiler/ParserTest.java @@ -373,6 +373,7 @@ void testParseTableGroup() { table1 table2 C + note: 'group note' }"""; var database = parse(dbml); @@ -384,6 +385,9 @@ void testParseTableGroup() { assertTrue(schema.containsTableGroup(tableGroupName)); var tables = tableGroup.getTables(); assertEquals(3, tables.size()); + var note = tableGroup.getNote(); + assertNotNull(note); + assertEquals("group note", note.getValue()); } @Test