
com.wangjiegulu.rapidooo.library.compiler.part.impl.FromMethodPartBrew Maven / Gradle / Ivy
package com.wangjiegulu.rapidooo.library.compiler.part.impl;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;
import com.wangjiegulu.rapidooo.library.compiler.entry.GetterSetterMethodNames;
import com.wangjiegulu.rapidooo.library.compiler.oooentry.OOOConversionEntry;
import com.wangjiegulu.rapidooo.library.compiler.oooentry.OOOEntry;
import com.wangjiegulu.rapidooo.library.compiler.oooentry.OOOFieldEntry;
import com.wangjiegulu.rapidooo.library.compiler.oooentry.OOOSEntry;
import com.wangjiegulu.rapidooo.library.compiler.part.PartBrew;
import com.wangjiegulu.rapidooo.library.compiler.part.statement.contact.IFromMethodStatementBrew;
import com.wangjiegulu.rapidooo.library.compiler.part.statement.mfrom.FromMethodArrayStatementBrew;
import com.wangjiegulu.rapidooo.library.compiler.part.statement.mfrom.FromMethodListStatementBrew;
import com.wangjiegulu.rapidooo.library.compiler.part.statement.mfrom.FromMethodMapStatementBrew;
import com.wangjiegulu.rapidooo.library.compiler.part.statement.mfrom.FromMethodObjectStatementBrew;
import com.wangjiegulu.rapidooo.library.compiler.util.PoetUtil;
import com.wangjiegulu.rapidooo.library.compiler.util.TextUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.lang.model.element.Modifier;
/**
* Author: wangjie Email: [email protected] Date: 2019-06-13.
*/
public class FromMethodPartBrew implements PartBrew {
private List statementBrews = new ArrayList<>();
public FromMethodPartBrew() {
statementBrews.add(new FromMethodObjectStatementBrew());
statementBrews.add(new FromMethodListStatementBrew());
statementBrews.add(new FromMethodArrayStatementBrew());
statementBrews.add(new FromMethodMapStatementBrew());
}
@Override
public void brew(OOOEntry oooEntry, TypeSpec.Builder result) {
String fromParamName = TextUtil.firstCharLower(oooEntry.getFromSimpleName());
MethodSpec.Builder fromMethodSpec = MethodSpec.methodBuilder("from" + oooEntry.getFromSimpleName())
.addModifiers(Modifier.PUBLIC)
.returns(void.class)
.addParameter(oooEntry.getFromTypeName(), fromParamName);
if (oooEntry.isTargetSupperTypeId()) {
fromMethodSpec.addStatement("from" + OOOSEntry.queryTypeById(oooEntry.getTargetSupperTypeId()).getFromSimpleName()
+ "(" + fromParamName + ")");
}
// Continuing fields
for (Map.Entry fieldE : oooEntry.getAllContinuingFields().entrySet()) {
OOOFieldEntry fieldEntry = fieldE.getValue();
GetterSetterMethodNames getterSetterMethodNames = PoetUtil.generateGetterSetterMethodName(fieldEntry.getSimpleName(), fieldEntry.getTypeName());
fromMethodSpec.addStatement("this." + TextUtil.firstCharLower(fieldEntry.getSimpleName()) + " = " + fromParamName + "." + getterSetterMethodNames.getGetterMethodName() + "()");
}
// Conversion fields
for (Map.Entry conversionFieldE : oooEntry.getConversions().entrySet()) {
OOOConversionEntry conversionEntry = conversionFieldE.getValue();
for(IFromMethodStatementBrew brew : statementBrews){
if(brew.match(conversionEntry)){
brew.buildStatement(oooEntry, conversionEntry, fromMethodSpec);
break;
}
}
}
result.addMethod(fromMethodSpec.build());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy