use of com.squareup.javapoet.ParameterSpec in project celesta by CourseOrchestra.
the class CursorGenerator method buildCompileCopying.
private List<MethodSpec> buildCompileCopying(GrainElement ge, TypeName selfTypeName, Collection<String> columns, boolean isVersionedObject) {
final String copyFieldsFromMethodName = "copyFieldsFrom";
final ParameterSpec context = ParameterSpec.builder(CallContext.class, "context").build();
final ParameterSpec fields = ParameterSpec.builder(ParameterizedTypeName.get(List.class, String.class), "fields").build();
MethodSpec.Builder getBufferCopyBuilder = MethodSpec.methodBuilder("_getBufferCopy").addModifiers(Modifier.PUBLIC).addAnnotation(Override.class).addParameters(Arrays.asList(context, fields)).returns(selfTypeName).addStatement("final $T result", selfTypeName).beginControlFlow("if ($T.isNull($N))", Objects.class, fields.name);
if (ge instanceof ParameterizedView) {
getBufferCopyBuilder.addStatement("result = new $T($N, this.parameters)", selfTypeName, context.name);
} else {
getBufferCopyBuilder.addStatement("result = new $T($N)", selfTypeName, context.name);
}
getBufferCopyBuilder.endControlFlow().beginControlFlow("else");
if (ge instanceof ParameterizedView) {
getBufferCopyBuilder.addStatement("result = new $T($N, new $T<>($N), this.parameters)", selfTypeName, context.name, LinkedHashSet.class, fields.name);
} else {
getBufferCopyBuilder.addStatement("result = new $T($N, new $T<>($N))", selfTypeName, context.name, LinkedHashSet.class, fields.name);
}
getBufferCopyBuilder.endControlFlow().addStatement("result.$N(this)", copyFieldsFromMethodName).addStatement("return result");
MethodSpec getBufferCopy = getBufferCopyBuilder.build();
MethodSpec.Builder copyFieldsFromBuilder = MethodSpec.methodBuilder(copyFieldsFromMethodName).addModifiers(Modifier.PUBLIC).addAnnotation(Override.class).addParameter(BasicCursor.class, "c");
copyFieldsFromBuilder.addStatement("$T from = ($T)c", selfTypeName, selfTypeName);
columns.forEach(c -> copyFieldsFromBuilder.addStatement("this.$N = from.$N", camelize(c), camelize(c)));
if (isVersionedObject) {
copyFieldsFromBuilder.addStatement("this.setRecversion(from.getRecversion())");
}
return Arrays.asList(getBufferCopy, copyFieldsFromBuilder.build());
}
use of com.squareup.javapoet.ParameterSpec in project celesta by CourseOrchestra.
the class CursorGenerator method buildTriggerRegistration.
private static List<MethodSpec> buildTriggerRegistration(TypeName selfTypeName) {
ParameterSpec celestaParam = ParameterSpec.builder(ICelesta.class, "celesta").build();
ParameterSpec consumerParam = ParameterSpec.builder(ParameterizedTypeName.get(ClassName.get(Consumer.class), WildcardTypeName.supertypeOf(selfTypeName)), "cursorConsumer").build();
return TRIGGER_REGISTRATION_METHOD_TO_TRIGGER_TYPE.entrySet().stream().map(e -> {
String methodName = e.getKey();
String triggerType = e.getValue();
return MethodSpec.methodBuilder(methodName).addModifiers(Modifier.PUBLIC, Modifier.STATIC).addParameter(celestaParam).addParameter(consumerParam).addStatement("$N.getTriggerDispatcher().registerTrigger($T.$N, $T.class, $N)", celestaParam.name, TriggerType.class, triggerType, selfTypeName, consumerParam.name).build();
}).collect(Collectors.toList());
}
Aggregations