From 8d665420678c23bdbe609e4a9018b14cf7ddb7c2 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 24 Jan 2023 17:23:23 +0100 Subject: [PATCH] Add string representer --- .../generator/plugin/classgen/GenDataBaseX.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/data-generator-plugin/src/main/java/it/cavallium/data/generator/plugin/classgen/GenDataBaseX.java b/data-generator-plugin/src/main/java/it/cavallium/data/generator/plugin/classgen/GenDataBaseX.java index 4885f85..132cdd0 100644 --- a/data-generator-plugin/src/main/java/it/cavallium/data/generator/plugin/classgen/GenDataBaseX.java +++ b/data-generator-plugin/src/main/java/it/cavallium/data/generator/plugin/classgen/GenDataBaseX.java @@ -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); } }