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("unchecked")
    @Test
    void assertGetOriginalTableName() {
        Collection<ColumnMetaData> columns = new LinkedList<>();
        columns.add(new ColumnMetaData("column1", 2, true, true, true, false, false, false));
        Collection<IndexMetaData> indexes = new LinkedList<>();
        indexes.add(new IndexMetaData("index1"));
        TableMetaData tableMetaData = new TableMetaData("originalTableName", columns, indexes, null);
        TableMetaDataReviseEngine<T> tableMetaDataReviseEngine = new TableMetaDataReviseEngine<T>(rule, databaseType, dataSource, metaDataReviseEntry);
        when(metaDataReviseEntry.getTableNameReviser()).thenReturn(Optional.empty());
        TableMetaData revisedMetaData = tableMetaDataReviseEngine.revise(tableMetaData);
        assertThat(revisedMetaData.getName(), is("originalTableName"));
    }