001package cn.mybatis.mp.generator.config;
002
003import lombok.Getter;
004
005import java.util.ArrayList;
006import java.util.Arrays;
007import java.util.Comparator;
008import java.util.List;
009import java.util.stream.Collectors;
010
011@Getter
012public class TableConfig {
013
014    /**
015     * 需要生成的表名
016     */
017    private final List<String> tablePrefixs = new ArrayList<>();
018
019    /**
020     * 需要生成的表名
021     */
022    private final List<String> includeTables = new ArrayList<>();
023
024    /**
025     * 需要排除的表名
026     */
027    private final List<String> excludeTables = new ArrayList<>();
028
029
030    /**
031     * 表的前缀
032     *
033     * @param prefixs
034     * @return
035     */
036    public TableConfig tablePrefixs(String... prefixs) {
037        this.tablePrefixs.addAll(Arrays.asList(prefixs).stream()
038                .map(item -> {
039                    if (item.toLowerCase().equals(item)) {
040                        return item.toLowerCase();
041                    }
042                    return item;
043                })
044                .sorted(Comparator.comparing(i -> i.length()))
045                .sorted(Comparator.reverseOrder()
046                ).collect(Collectors.toList()));
047        return this;
048    }
049
050    /**
051     * 设置需要生成的表
052     *
053     * @param tables
054     * @return
055     */
056    public TableConfig includeTable(String... tables) {
057        this.includeTables.addAll(Arrays.asList(tables));
058        return this;
059    }
060
061    /**
062     * 设置需要不生成的表
063     *
064     * @param tables
065     * @return
066     */
067    public TableConfig excludeTable(String... tables) {
068        this.excludeTables.addAll(Arrays.asList(tables));
069        return this;
070    }
071}