Skip to content

Commit

Permalink
# fixed issue with Default, Changes, Constants
Browse files Browse the repository at this point in the history
  • Loading branch information
sbra0902 committed Jul 22, 2019
1 parent f4e6e21 commit a4092c7
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.kaufland.generation;

import com.kaufland.model.entity.BaseEntityHolder;
import com.kaufland.model.field.CblBaseFieldHolder;
import com.kaufland.model.field.CblFieldHolder;
import com.kaufland.util.TypeUtil;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.MethodSpec;

import javax.lang.model.element.Modifier;
import javax.lang.model.type.TypeMirror;

public class CblConstantGeneration {

public static MethodSpec addConstants(BaseEntityHolder holder){
MethodSpec.Builder builder = MethodSpec.methodBuilder("addConstants").
addModifiers(Modifier.PRIVATE).
addParameter(TypeUtil.createMapStringObject(), "map");

for (CblBaseFieldHolder fieldHolder : holder.getFieldConstants()) {

if (fieldHolder.isConstant()) {
builder.addStatement("map.put($N, " + getConvertedValue(fieldHolder.getTypeMirror(), fieldHolder.getDefaultValue())+")", fieldHolder.getConstantName());
}
}
return builder.build();
}

public static CodeBlock addAddCall(String nameOfMap){
return CodeBlock.builder().addStatement("addConstants($N)", nameOfMap).build();
}

private static String getConvertedValue(TypeMirror clazz, String value) {

if (clazz.toString().equals(String.class.getCanonicalName())) {
return "\"" + value + "\"";
}
return value;
}

}
Original file line number Diff line number Diff line change
@@ -1,34 +1,37 @@
package com.kaufland.generation;

import com.kaufland.model.entity.BaseEntityHolder;
import com.kaufland.model.field.CblBaseFieldHolder;
import com.kaufland.model.field.CblFieldHolder;
import com.kaufland.util.TypeUtil;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.FieldSpec;
import com.squareup.javapoet.MethodSpec;
import com.thoughtworks.qdox.model.JavaField;

import javax.lang.model.element.Modifier;
import javax.lang.model.type.TypeMirror;

public class CblDefaultGeneration {

public static FieldSpec field() {
return FieldSpec.builder(TypeUtil.createMapStringObject(), "mDocDefaults", Modifier.PRIVATE, Modifier.STATIC).
initializer(" new $T()", TypeUtil.createHashMapStringObject()).
build();
}
public static MethodSpec addDefaults(BaseEntityHolder holder){
MethodSpec.Builder builder = MethodSpec.methodBuilder("addDefaults").
addModifiers(Modifier.PRIVATE).
addParameter(TypeUtil.createMapStringObject(), "map");

public static CodeBlock staticInitialiser(BaseEntityHolder holder) {
CodeBlock.Builder builder = CodeBlock.builder();
for (CblFieldHolder fieldHolder : holder.getFields()) {
for (CblBaseFieldHolder fieldHolder : holder.getFieldConstants()) {

if (fieldHolder.isDefault()) {
builder.addStatement("mDocDefaults.put($N, " + getConvertedValue(fieldHolder.getTypeMirror(), fieldHolder.getDefaultValue())+")", fieldHolder.getConstantName());
builder.addStatement("map.put($N, " + getConvertedValue(fieldHolder.getTypeMirror(), fieldHolder.getDefaultValue())+")", fieldHolder.getConstantName());
}
}
return builder.build();
}

public static CodeBlock addAddCall(String nameOfMap){
return CodeBlock.builder().addStatement("addDefaults($N)", nameOfMap).build();
}

private static String getConvertedValue(TypeMirror clazz, String value) {

if (clazz.toString().equals(String.class.getCanonicalName())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ public JavaFile generateModel(EntityHolder holder) {
TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(holder.getEntitySimpleName()).
addModifiers(Modifier.PUBLIC).
addSuperinterface(TypeUtil.createMapSupportObject()).
addField(CblDefaultGeneration.field()).
addMethod(CblDefaultGeneration.addDefaults(holder)).
addMethod(CblConstantGeneration.addConstants(holder)).
addField(TypeUtil.createMapStringObject(), "mDoc", Modifier.PRIVATE).
addField(TypeUtil.createMapStringObject(), "mDocChanges", Modifier.PRIVATE).
addMethods(create(holder)).
Expand All @@ -59,7 +60,6 @@ public JavaFile generateModel(EntityHolder holder) {
}
}

typeBuilder.addStaticBlock(CblDefaultGeneration.staticInitialiser(holder));
typeBuilder.addMethod(new RebindMethodGeneration().generate(true));
typeBuilder.addMethod(delete(holder));
typeBuilder.addMethod(save(holder));
Expand Down Expand Up @@ -108,7 +108,6 @@ private MethodSpec toMap(EntityHolder holder) {

toMapBuilder.addStatement("$1T temp = new $1T()", TypeUtil.createHashMapStringObject());
toMapBuilder.addCode(CodeBlock.builder().
addStatement("temp.putAll(mDocDefaults)").
beginControlFlow("if(doc != null)").
addStatement("temp.putAll(doc)").
endControlFlow().
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,13 @@ public MethodSpec generate(boolean clearMDocChanges) {

MethodSpec.Builder rebind = MethodSpec.methodBuilder("rebind").
addParameter(TypeUtil.createMapStringObject(), "doc").
addStatement("mDoc = doc != null ? new $1T(doc) : new $1T()", TypeUtil.createHashMapStringObject());
addStatement("mDoc = new $T()", TypeUtil.createHashMapStringObject()).
addCode(CblDefaultGeneration.addAddCall("mDoc")).
addCode(CodeBlock.builder()
.beginControlFlow("if(doc != null)")
.addStatement("mDoc.putAll(doc)")
.endControlFlow().build()).
addCode(CblConstantGeneration.addAddCall("mDoc"));

if (clearMDocChanges) {
rebind.addStatement("mDocChanges = new $T()", TypeUtil.createHashMapStringObject());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ public JavaFile generateModel(WrapperEntityHolder holder) {
TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(holder.getEntitySimpleName()).
addSuperinterface(TypeUtil.createMapSupportObject()).
addModifiers(Modifier.PUBLIC).
addField(CblDefaultGeneration.field()).
addMethod(CblDefaultGeneration.addDefaults(holder)).
addMethod(CblConstantGeneration.addConstants(holder)).
addMethod(MapSupportGeneration.toMap(holder)).
addMethods(create(holder)).
addField(TypeUtil.createMapStringObject(), "mDoc", Modifier.PRIVATE).
Expand All @@ -43,7 +44,6 @@ public JavaFile generateModel(WrapperEntityHolder holder) {
}
}

typeBuilder.addStaticBlock(CblDefaultGeneration.staticInitialiser(holder));
typeBuilder.addMethod(new RebindMethodGeneration().generate(false));
typeBuilder.addMethods(fromMap(holder));
typeBuilder.addMethods(toMap(holder));
Expand All @@ -66,7 +66,7 @@ private List<MethodSpec> toMap(BaseEntityHolder holder) {
returns(TypeUtil.createMapStringObject()).
addCode(nullCheck).
addStatement("$T result = new $T()", TypeUtil.createHashMapStringObject(), TypeUtil.createHashMapStringObject())
.addStatement("result.putAll(mDocDefaults)").
.
addStatement("result.putAll(obj.mDoc)").
addStatement("return result").
build(),
Expand All @@ -78,7 +78,6 @@ private List<MethodSpec> toMap(BaseEntityHolder holder) {
addStatement("$T result = new $T()", TypeUtil.createListWithMapStringObject(), TypeUtil.createArrayListWithMapStringObject()).
addCode(CodeBlock.builder().beginControlFlow("for($N entry : obj)", holder.getEntitySimpleName()).
addStatement("$T temp = new $T()", TypeUtil.createHashMapStringObject(), TypeUtil.createHashMapStringObject()).
addStatement("temp.putAll(mDocDefaults)").
addStatement("temp.putAll((($N)entry).toMap(entry))", holder.getEntitySimpleName()).
addStatement("result.add(temp)", holder.getEntitySimpleName()).
endControlFlow().
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ public boolean isSubEntityIsTypeParam() {
}



public boolean isTypeOfSubEntity() {
return !StringUtils.isBlank(subEntitySimpleName);
}
Expand Down Expand Up @@ -109,9 +108,7 @@ public MethodSpec getter(String dbName, boolean useMDocChanges) {
endControlFlow().
build());

if (isDefault()) {
builder.addStatement("return " + TypeConversionMethodsGeneration.READ_METHOD_NAME + "(mDocDefaults.get($N), $T.class)", getConstantName(), forTypeConversion);
} else if(forTypeConversion.isPrimitive()){
if (forTypeConversion.isPrimitive()) {
builder.addStatement("return $L.get($T.class)", DefaultValue.class.getCanonicalName(), forTypeConversion);
} else {
builder.addStatement("return null");
Expand All @@ -125,7 +122,7 @@ public MethodSpec getter(String dbName, boolean useMDocChanges) {

@Override
public MethodSpec setter(String dbName, TypeName entityTypeName, boolean useMDocChanges) {
TypeName fieldType = TypeUtil.parseMetaType(getTypeMirror(),isIterable, getSubEntitySimpleName());
TypeName fieldType = TypeUtil.parseMetaType(getTypeMirror(), isIterable, getSubEntitySimpleName());
MethodSpec.Builder builder = MethodSpec.methodBuilder("set" + accessorSuffix()).
addModifiers(Modifier.PUBLIC).
addParameter(fieldType, "value").
Expand Down Expand Up @@ -160,6 +157,6 @@ private TypeName evaluateClazzForTypeConversion() {
return TypeName.get(List.class);
}

return TypeUtil.parseMetaType(getTypeMirror(),isIterable, getSubEntitySimpleName());
return TypeUtil.parseMetaType(getTypeMirror(), isIterable, getSubEntitySimpleName());
}
}

0 comments on commit a4092c7

Please sign in to comment.