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

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

package com.moon.mapping.processing;

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

    private final MappingModel model;
    private final ImportManager importManager;
    private final StaticManager staticManager;
    private final MappingManager mappingManager;
    private final ConvertManager convertManager;
    private final ScopedManager scopedManager;
    private final WarningManager warningManager;

    public Manager() {
        final MappingModel model = new MappingModel();
        final ImportManager importManager = new ImportManager();
        final StaticManager staticManager = new StaticManager(importManager);
        final ScopedManager scopedManager = new ScopedManager(importManager);
        final WarningManager warningManager = new WarningManager(model);
        final MappingManager mappingManager = new MappingManager(model, importManager);
        this.convertManager = new ConvertManager(mappingManager, warningManager, importManager);
        this.mappingManager = mappingManager;
        this.warningManager = warningManager;
        this.importManager = importManager;
        this.staticManager = staticManager;
        this.scopedManager = scopedManager;
        this.model = model;
    }

    public boolean canUsableModel(Mappable thisProp, Mappable thatProp, PropertyAttr attr, ConvertStrategy strategy) {
        return getModel().onConvert(thisProp, thatProp, attr, strategy).isUsable();
    }

    public MappingModel getModel() { return model; }

    public MappingManager getMapping() { return mappingManager; }

    public ScopedManager ofScoped() { return scopedManager; }

    public ConvertManager ofConvert() { return convertManager; }

    private StaticManager ofStatic() { return staticManager; }

    private ImportManager ofImport() { return importManager; }

    public String onImported(String classname) { return ofImport().onImported(classname); }

    public String onImported(Class classname) { return ofImport().onImported(classname); }

    public void setupWarning() { warningManager.reset(); }

    public String toStringForImports() { return ofImport().toString(); }

    public String toStringForStaticVars() { return ofStatic().toString(); }

    /*
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~ 静态变量管理
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    public String staticVarForEnumValuesOnDeclare() {
        return staticVarForEnumValues(setterDeclareType());
    }

    public String staticVarForEnumValues(String enumClassname) {
        return ofStatic().onEnumValues(enumClassname);
    }

    public String staticVarForJodaDateTimeFormatter(String formatVal) {
        return ofStatic().onJodaDateTimeFormat(formatVal);
    }

    public String staticVarForDateTimeFormatter(String formatVal) {
        return ofStatic().onDateTimeFormatter(formatVal);
    }

    public String staticVarForDefaultBigInteger() {
        String defaultValue = defaultVal();
        if (defaultValue != null) {
            return ofStatic().onDefaultBigInteger(defaultValue);
        }
        return ofStatic().defaultNull();
    }

    public String staticVarForDefaultBigDecimal() {
        String defaultValue = defaultVal();
        if (defaultValue != null) {
            return ofStatic().onDefaultBigDecimal(defaultValue);
        }
        return ofStatic().defaultNull();
    }

    public String staticVarForDefaultChar() {
        return ofStatic().onDefaultChar(defaultVal());
    }

    public String staticVarForDefaultBooleanOnDeclare() {
        return staticVarForDefaultBoolean(setterDeclareType());
    }

    public String staticVarForDefaultBoolean(String classname) {
        return ofStatic().onDefaultBoolean(classname, defaultVal());
    }

    public String staticVarForDefaultNumberOnDeclare() {
        return staticVarForDefaultNumber(setterDeclareType());
    }

    public String staticVarForDefaultNumber(String expectedClass) {
        String defaultValue = defaultVal();
        if (defaultValue != null) {
            return ofStatic().onDefaultNumber(expectedClass, defaultValue);
        }
        return ofStatic().defaultNull();
    }

    public String staticVarForDefaultNumberValueOf(String classname, String value) {
        return ofStatic().onDefaultNumber(classname, value);
    }

    public String staticVarForDefaultString() {
        return ofStatic().onString(defaultVal());
    }

    public String staticVarForDefaultEnumOnDeclare() {
        return doStaticVarForDefaultEnum(setterDeclareType());
    }

    private String doStaticVarForDefaultEnum(String enumClassname) {
        String dftValue = defaultVal();
        if (DetectUtils.isDigit(dftValue)) {
            return ofStatic().onEnumIndexed(enumClassname, dftValue);
        } else if (DetectUtils.isVar(dftValue)) {
            return ofStatic().onEnumNamed(enumClassname, dftValue);
        } else {
            return ofStatic().defaultNull();
        }
    }

    private String setterDeclareType() { return getModel().getSetterDeclareType(); }

    private String defaultVal() { return getModel().getAttr().defaultValue(); }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy