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();
}
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;
}
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();
}
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;
}
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);
}
Aggregations