diff --git a/clients/cli/src/main/java/org/apache/gravitino/cli/outputs/PlainFormat.java b/clients/cli/src/main/java/org/apache/gravitino/cli/outputs/PlainFormat.java
index 8520ba7f366..ed35c9fe46f 100644
--- a/clients/cli/src/main/java/org/apache/gravitino/cli/outputs/PlainFormat.java
+++ b/clients/cli/src/main/java/org/apache/gravitino/cli/outputs/PlainFormat.java
@@ -21,6 +21,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
+import org.apache.gravitino.Audit;
import org.apache.gravitino.Catalog;
import org.apache.gravitino.Metalake;
import org.apache.gravitino.Schema;
@@ -55,6 +56,8 @@ public static void output(Object entity, CommandContext context) {
new TablePlainFormat(context).output((Table) entity);
} else if (entity instanceof Table[]) {
new TableListPlainFormat(context).output((Table[]) entity);
+ } else if (entity instanceof Audit) {
+ new AuditPlainFormat(context).output((Audit) entity);
} else {
throw new IllegalArgumentException("Unsupported object type");
}
@@ -176,8 +179,7 @@ public String getOutput(Schema[] schemas) {
}
/**
- * Formats a single Table instance with detailed column information. Output format: table_name
- * column1_name, column1_type, column1_comment column2_name, column2_type, column2_comment ...
+ * Formats a single Table instance with detailed column information. Output format: table_name,
* table_comment
*/
static final class TablePlainFormat extends PlainFormat
{
@@ -188,21 +190,8 @@ public TablePlainFormat(CommandContext context) {
/** {@inheritDoc} */
@Override
public String getOutput(Table table) {
- StringBuilder output = new StringBuilder();
- List columnOutput =
- Arrays.stream(table.columns())
- .map(
- column ->
- COMMA_JOINER.join(
- column.name(),
- column.dataType().simpleString(),
- column.autoIncrement(),
- column.nullable(),
- column.comment() == null ? "N/A" : column.comment()))
- .collect(Collectors.toList());
- output.append(NEWLINE_JOINER.join(columnOutput));
- output.append(System.lineSeparator());
- return output.toString();
+ String comment = table.comment() == null ? "N/A" : table.comment();
+ return COMMA_JOINER.join(new String[] {table.name(), comment});
}
}
@@ -222,4 +211,24 @@ public String getOutput(Table[] tables) {
return NEWLINE_JOINER.join(tableNames);
}
}
+
+ /**
+ * Formats an instance of {@link Audit} , outputting the audit information. Output format:
+ * creator, create_time, modified, modified_time
+ */
+ static final class AuditPlainFormat extends PlainFormat {
+ public AuditPlainFormat(CommandContext context) {
+ super(context);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public String getOutput(Audit audit) {
+ return COMMA_JOINER.join(
+ audit.creator(),
+ audit.createTime() == null ? "N/A" : audit.createTime(),
+ audit.lastModifier() == null ? "N/A" : audit.lastModifier(),
+ audit.lastModifiedTime() == null ? "N/A" : audit.lastModifiedTime());
+ }
+ }
}
diff --git a/clients/cli/src/test/java/org/apache/gravitino/cli/output/TestPlainFormat.java b/clients/cli/src/test/java/org/apache/gravitino/cli/output/TestPlainFormat.java
index 093b8535e0f..32e9e7dbc86 100644
--- a/clients/cli/src/test/java/org/apache/gravitino/cli/output/TestPlainFormat.java
+++ b/clients/cli/src/test/java/org/apache/gravitino/cli/output/TestPlainFormat.java
@@ -131,10 +131,36 @@ void testTableDetailsWithPlainFormat() {
Table mockTable = getMockTable();
PlainFormat.output(mockTable, mockContext);
String output = new String(outContent.toByteArray(), StandardCharsets.UTF_8).trim();
+ Assertions.assertEquals("demo_table, This is a demo table", output);
+ }
+
+ @Test
+ void testAuditWithTableFormat() {
+ CommandContext mockContext = getMockContext();
+ Audit mockAudit = mock(Audit.class);
+ when(mockAudit.creator()).thenReturn("demo_user");
+ when(mockAudit.createTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));
+ when(mockAudit.lastModifier()).thenReturn("demo_user");
+ when(mockAudit.lastModifiedTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));
+
+ PlainFormat.output(mockAudit, mockContext);
+ String output = new String(outContent.toByteArray(), StandardCharsets.UTF_8).trim();
Assertions.assertEquals(
- "id, integer, true, false, This is a int column\n"
- + "name, string, false, true, This is a string column",
- output);
+ "demo_user, 2021-01-20T02:51:51.111Z, demo_user, 2021-01-20T02:51:51.111Z", output);
+ }
+
+ @Test
+ void testAuditWithTableFormatWithNullValues() {
+ CommandContext mockContext = getMockContext();
+ Audit mockAudit = mock(Audit.class);
+ when(mockAudit.creator()).thenReturn("demo_user");
+ when(mockAudit.createTime()).thenReturn(null);
+ when(mockAudit.lastModifier()).thenReturn(null);
+ when(mockAudit.lastModifiedTime()).thenReturn(null);
+
+ PlainFormat.output(mockAudit, mockContext);
+ String output = new String(outContent.toByteArray(), StandardCharsets.UTF_8).trim();
+ Assertions.assertEquals("demo_user, N/A, N/A, N/A", output);
}
@Test
@@ -236,14 +262,4 @@ private org.apache.gravitino.rel.Column getMockColumn(
return mockColumn;
}
-
- private Audit getMockAudit() {
- Audit mockAudit = mock(Audit.class);
- when(mockAudit.creator()).thenReturn("demo_user");
- when(mockAudit.createTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));
- when(mockAudit.lastModifier()).thenReturn("demo_user");
- when(mockAudit.lastModifiedTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));
-
- return mockAudit;
- }
}