Add string representer

This commit is contained in:
Andrea Cavalli 2023-01-24 17:23:23 +01:00
parent 8d02729342
commit 8d66542067
1 changed files with 12 additions and 4 deletions

View File

@ -90,13 +90,11 @@ public class GenDataBaseX extends ClassGenerator {
} }
if (fieldTypeName.isPrimitive() || !deepCheckBeforeCreatingNewEqualInstances) { if (fieldTypeName.isPrimitive() || !deepCheckBeforeCreatingNewEqualInstances) {
setter.addCode("return $N == this.$N ? this : new $T(", fieldName, fieldName, type); setter.addCode("return $N == this.$N ? this : new $T(", fieldName, fieldName, type);
setter.addCode(String.join(", ", base.getData().keySet()));
setter.addStatement(")");
} else { } else {
setter.addCode("return $T.equals($N, this.$N) ? this : new $T(", Objects.class, fieldName, fieldName, type); setter.addCode("return $T.equals($N, this.$N) ? this : new $T(", Objects.class, fieldName, fieldName, type);
setter.addCode(String.join(", ", base.getData().keySet()));
setter.addStatement(")");
} }
setter.addCode(String.join(", ", base.getData().keySet()));
setter.addStatement(")");
classBuilder.addMethod(setter.build()); classBuilder.addMethod(setter.build());
}); });
@ -117,6 +115,16 @@ public class GenDataBaseX extends ClassGenerator {
classBuilder.addMethod(ofMethod.build()); classBuilder.addMethod(ofMethod.build());
} }
final String stringRepresenter = base.getStringRepresenter();
if (stringRepresenter != null && !stringRepresenter.isBlank()) {
var toStringMethod = MethodSpec.methodBuilder("toString");
toStringMethod.addModifiers(Modifier.PUBLIC);
toStringMethod.addAnnotation(Override.class);
toStringMethod.returns(String.class);
toStringMethod.addStatement("return " + stringRepresenter + "(this)");
classBuilder.addMethod(toStringMethod.build());
}
return new GeneratedClass(type.packageName(), classBuilder); return new GeneratedClass(type.packageName(), classBuilder);
} }
} }