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) {
setter.addCode("return $N == this.$N ? this : new $T(", fieldName, fieldName, type);
setter.addCode(String.join(", ", base.getData().keySet()));
setter.addStatement(")");
} else {
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());
});
@ -117,6 +115,16 @@ public class GenDataBaseX extends ClassGenerator {
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);
}
}