001/**
002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com).
003 * <p>
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 * <p>
008 * http://www.apache.org/licenses/LICENSE-2.0
009 * <p>
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package io.jboot.codegen.model;
017
018import com.jfinal.plugin.activerecord.generator.BaseModelGenerator;
019import com.jfinal.plugin.activerecord.generator.MetaBuilder;
020import io.jboot.codegen.CodeGenHelpler;
021
022public class JbootBaseModelGenerator extends BaseModelGenerator {
023
024    private MetaBuilder metaBuilder;
025
026    public JbootBaseModelGenerator(String baseModelPackageName,
027                                   String baseModelOutputDir) {
028        super(baseModelPackageName, baseModelOutputDir);
029
030        this.template = "/io/jboot/codegen/model/base_model_template.tp";
031        this.metaBuilder = CodeGenHelpler.createMetaBuilder();
032    }
033
034    @Override
035    protected void initEngine() {
036        this.getterTypeMap.put("java.math.BigInteger", "getBigInteger");
037        super.initEngine();
038    }
039
040    public void generate() {
041        super.generate(metaBuilder.build());
042    }
043
044    /**
045     * 设置需要被移除的表名前缀
046     * 例如表名  "tb_account",移除前缀 "tb_" 后变为 "account"
047     */
048    public JbootBaseModelGenerator setRemovedTableNamePrefixes(String... prefixes) {
049        metaBuilder.setRemovedTableNamePrefixes(prefixes);
050        return this;
051    }
052
053    public JbootBaseModelGenerator addExcludedTable(String... excludedTables) {
054        metaBuilder.addExcludedTable(excludedTables);
055        return this;
056    }
057
058    public JbootBaseModelGenerator setGenerateRemarks(boolean generateRemarks) {
059        metaBuilder.setGenerateRemarks(generateRemarks);
060        return this;
061    }
062    public JbootBaseModelGenerator addWhitelist(String... tableNames) {
063        if (tableNames != null) {
064            this.metaBuilder.addWhitelist(tableNames);
065        }
066        return this;
067    }
068
069}