All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.huiche.extra.sql.builder.naming.CamelCaseNamingRule Maven / Gradle / Ivy

package org.huiche.extra.sql.builder.naming;

import javax.annotation.Nonnull;

/**
 * 驼峰命名规则转下划线小写 命名规则
 *
 * @author Maning
 */
public class CamelCaseNamingRule implements NamingRule {
    private static final String UNDERLINE = "_";
    private static final CamelCaseNamingRule INSTANCE = new CamelCaseNamingRule() {
    };

    private CamelCaseNamingRule() {
    }

    public static NamingRule getInstance() {
        return INSTANCE;
    }

    @Override
    @Nonnull
    public String javaName2SqlName(@Nonnull String javaName) {
        if (javaName.isEmpty()) {
            return "";
        }
        StringBuilder column = new StringBuilder();
        column.append(javaName.substring(0, 1).toLowerCase());
        for (int i = 1; i < javaName.length(); i++) {
            String s = javaName.substring(i, i + 1);
            if (!Character.isDigit(s.charAt(0)) && s.equals(s.toUpperCase())) {
                column.append(UNDERLINE);
            }
            column.append(s.toLowerCase());
        }
        return column.toString();
    }

    @Override
    @Nonnull
    public String sqlName2JavaName(@Nonnull String sqlName) {
        StringBuilder result = new StringBuilder();
        if (sqlName.isEmpty()) {
            return "";
        } else if (!sqlName.contains(UNDERLINE)) {
            return sqlName.substring(0, 1).toLowerCase() + sqlName.substring(1);
        } else {
            String[] columns = sqlName.split(UNDERLINE);
            for (String columnSplit : columns) {
                if (columnSplit.isEmpty()) {
                    continue;
                }
                if (result.length() == 0) {
                    result.append(columnSplit.toLowerCase());
                } else {
                    result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase());
                }
            }
            return result.toString();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy