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

com.moon.mapping.processing.NameGenerator Maven / Gradle / Ivy

package com.moon.mapping.processing;

import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author moonsky
 */
final class NameGenerator {

    private final static String PREFIX = "map";

    private final AtomicInteger indexer = new AtomicInteger();

    private final Set generated = new HashSet<>();

    private String thisSimpleName;

    public NameGenerator() { }

    public NameGenerator atFromClass(String thisClass) {
        this.thisSimpleName = ElementUtils.getSimpleName(thisClass);
        return this;
    }

    public String get(String targetClass) {
        String thatSimpleName = ElementUtils.getSimpleName(targetClass);
        final StringBuilder builder = defaultName(new StringBuilder(), thatSimpleName);
        String beanName = builder.toString();
        // 保证 bean name 的唯一性
        if (generated.contains(beanName)) {
            builder.setLength(0);
            defaultName(builder, thatSimpleName);
            beanName = builder.append(indexer.getAndIncrement()).toString();
        }
        generated.add(beanName);
        return beanName;
    }

    private StringBuilder defaultName(StringBuilder builder, String thatSimpleName) {
        builder.append(PREFIX).append(thisSimpleName).append("To").append(thatSimpleName);
        return builder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy