Search in sources :

Example 11 with DfLanguageGrammar

use of org.dbflute.logic.generate.language.grammar.DfLanguageGrammar in project dbflute-core by dbflute.

the class Table method buildCommonColumnListSetupExpression.

protected String buildCommonColumnListSetupExpression(List<Column> commonColumnList) {
    final DfLanguageImplStyle implStyle = getLanguageDependency().getLanguageImplStyle();
    final DfLanguageGrammar grammar = getLanguageGrammar();
    final StringBuilder sb = new StringBuilder();
    int index = 0;
    for (Column column : commonColumnList) {
        if (index > 0) {
            sb.append(", ");
        }
        final String resourceName = "column" + column.getJavaName();
        final String callExp;
        if (implStyle.isDBMetaColumnGetterProperty()) {
            callExp = grammar.buildPropertyGetterCall(resourceName);
        } else {
            // method style
            callExp = resourceName + "()";
        }
        sb.append(callExp);
        ++index;
    }
    return sb.toString();
}
Also used : DfColumnListToStringBuilder(org.dbflute.logic.generate.column.DfColumnListToStringBuilder) DfLanguageGrammar(org.dbflute.logic.generate.language.grammar.DfLanguageGrammar) DfLanguageImplStyle(org.dbflute.logic.generate.language.implstyle.DfLanguageImplStyle)

Example 12 with DfLanguageGrammar

use of org.dbflute.logic.generate.language.grammar.DfLanguageGrammar in project dbflute-core by dbflute.

the class DfPmbGenerationHandler method prepareEntityGenericDef.

protected String prepareEntityGenericDef(boolean immutable, String bhvType, String customizeType, String immuType) {
    final DfLanguageGrammar grammar = getLanguageGrammar();
    final String entityGenericDef;
    {
        if (immutable) {
            // e.g. Scala, ImmutableListHandlingPmb<BEHAVIOR, IMMU, DBLE>
            entityGenericDef = grammar.buildGenericThreeClassHint(bhvType, immuType, customizeType);
        } else {
            // normally here in Java
            entityGenericDef = grammar.buildGenericTwoClassHint(bhvType, customizeType);
        }
    }
    return entityGenericDef;
}
Also used : DfLanguageGrammar(org.dbflute.logic.generate.language.grammar.DfLanguageGrammar)

Example 13 with DfLanguageGrammar

use of org.dbflute.logic.generate.language.grammar.DfLanguageGrammar in project dbflute-core by dbflute.

the class DfPmbGenerationHandler method getInterfaceDefinition.

public String getInterfaceDefinition(String className) {
    assertArgumentPmbMetaDataClassName(className);
    final DfLanguageImplStyle implStyle = getLanguageImplStyle();
    if (!implStyle.isTypedParameterBeanEnabled()) {
        return "";
    }
    final boolean immutable = implStyle.isMakeImmutableEntity();
    final String immuPrefix = immutable ? "Immutable" : "";
    final DfLanguageGrammar grammar = getLanguageGrammar();
    final String delimiter = grammar.getImplementsDelimiter();
    final StringBuilder sb = new StringBuilder();
    if (isTypedParameterBean(className)) {
        final String bhvType = getBehaviorClassName(className);
        final String customizeType;
        final String immuType;
        if (isRelatedToCustomizeEntity(className)) {
            customizeType = getCustomizeEntityType(className);
            immuType = immutable ? getImmutableCustomizeEntityType(className) : null;
        } else {
            // these are no used
            customizeType = null;
            immuType = null;
        }
        final String entityGenericDef = prepareEntityGenericDef(immutable, bhvType, customizeType, immuType);
        final String voidResultGenericDef = prepareVoidResultGenericDef(immutable, bhvType, customizeType, immuType);
        final String noResultGenericDef = grammar.buildGenericOneClassHint(bhvType);
        // several typed interfaces can be implemented
        if (isTypedListHandling(className)) {
            final String name = ListHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name).append(entityGenericDef);
        }
        if (isTypedEntityHandling(className)) {
            final String name = EntityHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name).append(entityGenericDef);
        }
        if (isTypedManualPagingHandling(className)) {
            final String name = ManualPagingHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name).append(entityGenericDef);
        }
        if (isTypedAutoPagingHandling(className)) {
            final String name = AutoPagingHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name).append(entityGenericDef);
        }
        if (isTypedCursorHandling(className)) {
            final String name = CursorHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name);
            if (isTypedPagingHandling(className)) {
                // cursor with paging
                sb.append(entityGenericDef);
            } else {
                // pure cursor
                sb.append(voidResultGenericDef);
            }
        }
        if (isTypedExecuteHandling(className)) {
            final String name = ExecuteHandlingPmb.class.getSimpleName();
            sb.append(delimiter).append(immuPrefix);
            sb.append(name).append(noResultGenericDef);
        }
    }
    if (sb.length() > 0) {
        sb.delete(0, delimiter.length());
    } else {
        sb.append("ParameterBean");
    }
    sb.append(delimiter).append("FetchBean");
    final String implementsMark = grammar.getImplementsMark();
    final String implementsPrefix;
    if (grammar.isSameAreaExtendsImplements()) {
        final String superClassDefinition = getSuperClassDefinition(className);
        final boolean hasSuperClassDefinition = Srl.is_NotNull_and_NotTrimmedEmpty(superClassDefinition);
        if (hasSuperClassDefinition) {
            // e.g. extends SimplePagingBean| with |Immutable...
            implementsPrefix = delimiter;
        } else {
            implementsPrefix = " " + implementsMark + " ";
        }
    } else {
        implementsPrefix = " " + implementsMark + " ";
    }
    return implementsPrefix + sb.toString();
}
Also used : DfLanguageGrammar(org.dbflute.logic.generate.language.grammar.DfLanguageGrammar) DfLanguageImplStyle(org.dbflute.logic.generate.language.implstyle.DfLanguageImplStyle)

Example 14 with DfLanguageGrammar

use of org.dbflute.logic.generate.language.grammar.DfLanguageGrammar in project dbflute-core by dbflute.

the class DfPmbGenerationHandler method prepareVoidResultGenericDef.

protected String prepareVoidResultGenericDef(boolean immutable, String bhvType, String customizeType, String immuType) {
    // it works when not use void in Java but not need it and also for compatibility
    // (Scala cannot use void in the generic so customize this logic here)
    final DfLanguageGrammar grammar = getLanguageGrammar();
    // e.g. true if Java
    final boolean voidable = isOutsideSqlCursorGenericVoidable();
    final String voidResultGenericDef;
    if (immutable) {
        final String immuDef = voidable ? "Void" : immuType;
        voidResultGenericDef = grammar.buildGenericThreeClassHint(bhvType, immuDef, customizeType);
    } else {
        final String entity = voidable ? "Void" : customizeType;
        voidResultGenericDef = grammar.buildGenericTwoClassHint(bhvType, entity);
    }
    return voidResultGenericDef;
}
Also used : DfLanguageGrammar(org.dbflute.logic.generate.language.grammar.DfLanguageGrammar)

Example 15 with DfLanguageGrammar

use of org.dbflute.logic.generate.language.grammar.DfLanguageGrammar in project dbflute-core by dbflute.

the class DfProcedurePmbSetupper method convertProcedureListPropertyType.

protected String convertProcedureListPropertyType(String entityName) {
    // propertyType is class name can used on program
    // so it adjusts project prefix here
    final String projectPrefix = getBasicProperties().getProjectPrefix();
    final String propertyType = projectPrefix + entityName;
    final DfLanguageGrammar grammarInfo = getBasicProperties().getLanguageDependency().getLanguageGrammar();
    return grammarInfo.buildGenericListClassName(propertyType);
}
Also used : DfLanguageGrammar(org.dbflute.logic.generate.language.grammar.DfLanguageGrammar)

Aggregations

DfLanguageGrammar (org.dbflute.logic.generate.language.grammar.DfLanguageGrammar)24 DfLanguageDependency (org.dbflute.logic.generate.language.DfLanguageDependency)3 DfLanguageImplStyle (org.dbflute.logic.generate.language.implstyle.DfLanguageImplStyle)2 DfBasicProperties (org.dbflute.properties.DfBasicProperties)2 BufferedReader (java.io.BufferedReader)1 BufferedWriter (java.io.BufferedWriter)1 FileInputStream (java.io.FileInputStream)1 FileNotFoundException (java.io.FileNotFoundException)1 FileOutputStream (java.io.FileOutputStream)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 OutputStreamWriter (java.io.OutputStreamWriter)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Time (java.sql.Time)1 Timestamp (java.sql.Timestamp)1 List (java.util.List)1 Map (java.util.Map)1 Column (org.apache.torque.engine.database.model.Column)1 ExceptionMessageBuilder (org.dbflute.helper.message.ExceptionMessageBuilder)1 DfArrangeQueryTable (org.dbflute.logic.doc.arrqy.DfArrangeQueryTable)1