public TableMetaData revise(final TableMetaData originalMetaData) {
        Optional<? extends TableNameReviser<T>> tableNameReviser = reviseEntry.getTableNameReviser();
        String revisedTableName = tableNameReviser.map(optional -> optional.revise(originalMetaData.getName(), rule)).orElse(originalMetaData.getName());
        return new TableMetaData(revisedTableName, new ColumnReviseEngine<>(rule, databaseType, dataSource, reviseEntry).revise(originalMetaData.getName(), originalMetaData.getColumns()),
                new IndexReviseEngine<>(rule, reviseEntry).revise(originalMetaData.getName(), originalMetaData.getIndexes()),
                new ConstraintReviseEngine<>(rule, reviseEntry).revise(originalMetaData.getName(), originalMetaData.getConstraints()), originalMetaData.getType());
    }
@SuppressWarnings({"rawtypes", "unchecked"})
    @Test
    void assertGetRevisedTableName() {
        TableNameReviser tableNameReviser = mock(TableNameReviser.class);
        TableMetaData originalMetaData = new TableMetaData("originalTableName", new LinkedList<>(), null, null);
        TableMetaDataReviseEngine<T> tableMetaDataReviseEngine = new TableMetaDataReviseEngine<T>(rule, databaseType, dataSource, metaDataReviseEntry);
        doReturn(Optional.of(tableNameReviser)).when(metaDataReviseEntry).getTableNameReviser();
        when(tableNameReviser.revise(anyString(), eq(rule))).thenReturn("revisedTableName");
        TableMetaData revisedMetaData = tableMetaDataReviseEngine.revise(originalMetaData);
        assertThat(revisedMetaData.getName(), is("revisedTableName"));
    }