private List<CodeBlock> constructorBody(int index) { return constructorInfo.parameterInfoStream() .map(param -> parameterInfoToCodeBlock(index, param)) .flatMap(l -> l.stream()) .collect(Collectors.toList()); }
@Override List<ParameterInfo> parameterInfoList() { return constructorInfo.parameterInfoList(); }
List<BuilderClassConstructor> constructorList() { List<ConstructorInfo> constructorInfoList = typeInfo.constructorInfoStream() .filter(info -> !info.hasAccessInfo(AccessInfo.PRIVATE)) .collect(Collectors.toList()); int size = constructorInfoList.size(); return constructorInfoList.stream() .map(constructor -> new BuilderClassConstructor(constructor, size, customFieldList)) .collect(Collectors.toList()); }
@Override public Equality isEqualTo(Object that) { return Tester.of(ConstructorInfo.class) .add("accessInfo", o -> o.accessInfo()) .add("parameterInfoList", o -> o.parameterInfoList()) .test(this, that); }
public MethodSpec constructor(int index) { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(customFieldList.stream() .map(BuilderCustomField::builderConstructorParameter) .collect(Collectors.toList())) .addCode(constructorBody(index)) .addCode(customFieldList.stream() .map(BuilderCustomField::builderConstructorBody) .collect(Collectors.toList())) .addCode(constructorMarker(index)) .write(); }
public ConstructorInfoConstructorWriter addStandardSuperStatement() { return addCode(constructorInfo.statementWriter() .addStandardSuperStatement() .write()); }
static ConstructorInfoConstructorWriter get(ConstructorInfo constructorInfo) { AccessInfo accessInfo = constructorInfo.accessInfo(); return new ConstructorInfoConstructorWriter(constructorInfo, accessInfo); }
public MethodSpec constructor(int index) { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(customFieldList.stream() .map(BuilderCustomField::builderConstructorParameter) .collect(Collectors.toList())) .addCode(constructorBody(index)) .addCode(customFieldList.stream() .map(BuilderCustomField::builderConstructorBody) .collect(Collectors.toList())) .addCode(constructorMarker(index)) .write(); }
@Override public MethodSpec execute() { OrmInject inject = context.inject(); ConstructorInfo constructorInfo = context.constructorInfo(); constructor .addModifiers(Modifier.PUBLIC) .addParameter(inject.parameterSpec()) .addParameters(context.parameterSpecList()) .addCode(constructorInfo.statementWriter() .addStandardSuperStatement() .write()) .addCode(inject.assignToFieldStatement()); OrmPojoInfo pojoInfo = context.pojoInfo(); pojoInfo.propertyList().stream() .sorted() .forEach(property -> property.acceptColumnsConstructor(this)); return constructor.build(); }
public boolean hasAccessInfo(AccessInfo accessInfo) { return accessInfo().equals(accessInfo); }
public ConstructorInfoConstructorWriter addParameterList() { List<ParameterSpec> thatParameterSpecList = constructorInfo.parameterInfoStream() .map(ParameterInfo::parameterSpec) .collect(Collectors.toList()); return addParameterList(thatParameterSpecList); }
public Boolean hasParameterInfoListSize(int size) { return parameterInfoList().size() == size; }
MethodSpec pojoOnly() { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(parameterList) .addParameterList(customParameterList) .addStandardSuperStatement() .addCode(body.build()) .write(); }
List<BuilderClassConstructor> constructorList() { List<ConstructorInfo> constructorInfoList = typeInfo.constructorInfoStream() .filter(info -> !info.hasAccessInfo(AccessInfo.PRIVATE)) .collect(Collectors.toList()); int size = constructorInfoList.size(); return constructorInfoList.stream() .map(constructor -> new BuilderClassConstructor(constructor, size, customFieldList)) .collect(Collectors.toList()); }
private List<CodeBlock> constructorBody(int index) { return constructorInfo.parameterInfoStream() .map(param -> parameterInfoToCodeBlock(index, param)) .flatMap(l -> l.stream()) .collect(Collectors.toList()); }
public Stream<ParameterInfo> parameterInfoStream() { return parameterInfoList().stream(); }
MethodSpec pojoOnly() { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(parameterList) .addParameterList(customParameterList) .addStandardSuperStatement() .addCode(body.build()) .write(); }
Stream<ParameterInfo> parameterInfoStream() { return constructorInfo() .parameterInfoStream() .filter(OrmInject::isNotOrm); }
private CodeBlock buildReturnStatement(Naming naming, int index) { String parameterString = constructorInfo.parameterInfoList().stream() .map(parameterInfo -> constructorPrefix(index, parameterInfo.name())) .collect(Collectors.joining(", ")); String customString = customFieldList.stream() .map(BuilderCustomField::name) .collect(Collectors.joining(", ")); return CodeBlock.builder() .addStatement("return new $T($L$Lthis)", naming.pojoUnboundedTypeName(), customFieldList.isEmpty() ? customString : customString + ", ", parameterString.isEmpty() ? parameterString : parameterString + ", ") .build(); }
MethodSpec standard() { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(customParameterList) .addParameter(naming.builderClassTypeName(), "builder") .addStandardSuperStatement() .addCode(body.build()) .write(); }