From 3023bbc5edb6e696dde172deb35ec6ec9f686996 Mon Sep 17 00:00:00 2001 From: gzoldou Date: Mon, 12 Feb 2024 23:15:55 +0800 Subject: [PATCH] =?UTF-8?q?AutoMapping=E3=80=81ReverseAutoMapping=E6=94=AF?= =?UTF-8?q?=E6=8C=81qualifiedByName=E3=80=81conditionQualifiedByName?= =?UTF-8?q?=E5=92=8CdependsOn=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/AutoMapperProcessor.java | 6 ++++ .../generator/AutoMapperGenerator.java | 13 ++++++++ .../metadata/AutoMappingMetadata.java | 30 +++++++++++++++++++ .../linpeilie/annotations/AutoMapping.java | 6 ++++ .../annotations/ReverseAutoMapping.java | 6 ++++ 5 files changed, 61 insertions(+) diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java index be2d558..0a2452e 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java @@ -734,6 +734,9 @@ public class AutoMapperProcessor extends AbstractProcessor { metadata.setConditionExpression(reverseAutoMapping.conditionExpression()); metadata.setDateFormat(reverseAutoMapping.dateFormat()); metadata.setNumberFormat(reverseAutoMapping.numberFormat()); + metadata.setQualifiedByName(reverseAutoMapping.qualifiedByName()); + metadata.setConditionQualifiedByName(reverseAutoMapping.conditionQualifiedByName()); + metadata.setDependsOn(reverseAutoMapping.dependsOn()); return metadata; } @@ -808,6 +811,9 @@ public class AutoMapperProcessor extends AbstractProcessor { metadata.setConditionExpression(autoMapping.conditionExpression()); metadata.setDateFormat(autoMapping.dateFormat()); metadata.setNumberFormat(autoMapping.numberFormat()); + metadata.setQualifiedByName(autoMapping.qualifiedByName()); + metadata.setConditionQualifiedByName(autoMapping.conditionQualifiedByName()); + metadata.setDependsOn(autoMapping.dependsOn()); return metadata; } diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java index 893054b..7bc60b4 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java @@ -1,6 +1,7 @@ package io.github.linpeilie.processor.generator; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.ClassName; @@ -143,6 +144,18 @@ public class AutoMapperGenerator { if (StringUtils.isNotEmpty(autoMappingMetadata.getConditionExpression())) { builder.addMember("conditionExpression", CodeBlock.builder().add("$S", autoMappingMetadata.getConditionExpression()).build()); } + if (ArrayUtil.isNotEmpty(autoMappingMetadata.getQualifiedByName())) { + builder.addMember("qualifiedByName", CodeBlock.builder().add("$L", + "{" + ArrayUtil.join(autoMappingMetadata.getQualifiedByName(), ",", "\"", "\"") + "}").build()); + } + if (ArrayUtil.isNotEmpty(autoMappingMetadata.getConditionQualifiedByName())) { + builder.addMember("conditionQualifiedByName", CodeBlock.builder().add("$L", + "{" + ArrayUtil.join(autoMappingMetadata.getConditionQualifiedByName(), ",", "\"", "\"") + "}").build()); + } + if (ArrayUtil.isNotEmpty(autoMappingMetadata.getDependsOn())) { + builder.addMember("dependsOn", CodeBlock.builder().add("$L", + "{" + ArrayUtil.join(autoMappingMetadata.getDependsOn(), ",", "\"", "\"") + "}").build()); + } return builder.build(); }).collect(Collectors.toList()); } diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMappingMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMappingMetadata.java index 6ce2531..dbf8944 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMappingMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMappingMetadata.java @@ -24,6 +24,12 @@ public class AutoMappingMetadata { private String defaultValue = ""; + String[] qualifiedByName = {}; + + String[] conditionQualifiedByName = {}; + + String[] dependsOn = {}; + public ClassName getTargetClass() { return targetClass; } @@ -103,4 +109,28 @@ public class AutoMappingMetadata { public void setConditionExpression(final String conditionExpression) { this.conditionExpression = conditionExpression; } + + public String[] getQualifiedByName() { + return qualifiedByName; + } + + public void setQualifiedByName(String[] qualifiedByName) { + this.qualifiedByName = qualifiedByName; + } + + public String[] getConditionQualifiedByName() { + return conditionQualifiedByName; + } + + public void setConditionQualifiedByName(String[] conditionQualifiedByName) { + this.conditionQualifiedByName = conditionQualifiedByName; + } + + public String[] getDependsOn() { + return dependsOn; + } + + public void setDependsOn(String[] dependsOn) { + this.dependsOn = dependsOn; + } } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapping.java b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapping.java index 16d8e58..df82176 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapping.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapping.java @@ -40,4 +40,10 @@ public @interface AutoMapping { */ String defaultValue() default ""; + String[] qualifiedByName() default {}; + + String[] conditionQualifiedByName() default {}; + + String[] dependsOn() default {}; + } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/ReverseAutoMapping.java b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/ReverseAutoMapping.java index ed5c9a4..17cd299 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/ReverseAutoMapping.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/ReverseAutoMapping.java @@ -67,4 +67,10 @@ public @interface ReverseAutoMapping { */ String defaultValue() default ""; + String[] qualifiedByName() default {}; + + String[] conditionQualifiedByName() default {}; + + String[] dependsOn() default {}; + }