AutoMapping、ReverseAutoMapping支持qualifiedByName、conditionQualifiedByName和dependsOn属性

This commit is contained in:
gzoldou 2024-02-12 23:15:55 +08:00
parent f78efc39e1
commit 3023bbc5ed
5 changed files with 61 additions and 0 deletions

View File

@ -734,6 +734,9 @@ public class AutoMapperProcessor extends AbstractProcessor {
metadata.setConditionExpression(reverseAutoMapping.conditionExpression()); metadata.setConditionExpression(reverseAutoMapping.conditionExpression());
metadata.setDateFormat(reverseAutoMapping.dateFormat()); metadata.setDateFormat(reverseAutoMapping.dateFormat());
metadata.setNumberFormat(reverseAutoMapping.numberFormat()); metadata.setNumberFormat(reverseAutoMapping.numberFormat());
metadata.setQualifiedByName(reverseAutoMapping.qualifiedByName());
metadata.setConditionQualifiedByName(reverseAutoMapping.conditionQualifiedByName());
metadata.setDependsOn(reverseAutoMapping.dependsOn());
return metadata; return metadata;
} }
@ -808,6 +811,9 @@ public class AutoMapperProcessor extends AbstractProcessor {
metadata.setConditionExpression(autoMapping.conditionExpression()); metadata.setConditionExpression(autoMapping.conditionExpression());
metadata.setDateFormat(autoMapping.dateFormat()); metadata.setDateFormat(autoMapping.dateFormat());
metadata.setNumberFormat(autoMapping.numberFormat()); metadata.setNumberFormat(autoMapping.numberFormat());
metadata.setQualifiedByName(autoMapping.qualifiedByName());
metadata.setConditionQualifiedByName(autoMapping.conditionQualifiedByName());
metadata.setDependsOn(autoMapping.dependsOn());
return metadata; return metadata;
} }

View File

@ -1,6 +1,7 @@
package io.github.linpeilie.processor.generator; package io.github.linpeilie.processor.generator;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName; import com.squareup.javapoet.ClassName;
@ -143,6 +144,18 @@ public class AutoMapperGenerator {
if (StringUtils.isNotEmpty(autoMappingMetadata.getConditionExpression())) { if (StringUtils.isNotEmpty(autoMappingMetadata.getConditionExpression())) {
builder.addMember("conditionExpression", CodeBlock.builder().add("$S", autoMappingMetadata.getConditionExpression()).build()); 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(); return builder.build();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

View File

@ -24,6 +24,12 @@ public class AutoMappingMetadata {
private String defaultValue = ""; private String defaultValue = "";
String[] qualifiedByName = {};
String[] conditionQualifiedByName = {};
String[] dependsOn = {};
public ClassName getTargetClass() { public ClassName getTargetClass() {
return targetClass; return targetClass;
} }
@ -103,4 +109,28 @@ public class AutoMappingMetadata {
public void setConditionExpression(final String conditionExpression) { public void setConditionExpression(final String conditionExpression) {
this.conditionExpression = 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;
}
} }

View File

@ -40,4 +40,10 @@ public @interface AutoMapping {
*/ */
String defaultValue() default ""; String defaultValue() default "";
String[] qualifiedByName() default {};
String[] conditionQualifiedByName() default {};
String[] dependsOn() default {};
} }

View File

@ -67,4 +67,10 @@ public @interface ReverseAutoMapping {
*/ */
String defaultValue() default ""; String defaultValue() default "";
String[] qualifiedByName() default {};
String[] conditionQualifiedByName() default {};
String[] dependsOn() default {};
} }