Search in sources :

Example 96 with ParameterSpec

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());
}
Also used : ParameterSpec(com.squareup.javapoet.ParameterSpec) MethodSpec(com.squareup.javapoet.MethodSpec) ParameterizedView(ru.curs.celesta.score.ParameterizedView) CallContext(ru.curs.celesta.CallContext)

Example 97 with ParameterSpec

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());
}
Also used : BasicCursor(ru.curs.celesta.dbutils.BasicCursor) Arrays(java.util.Arrays) Modifier(javax.lang.model.element.Modifier) CelestaException(ru.curs.celesta.CelestaException) ZonedDateTime(java.time.ZonedDateTime) ClassName(com.squareup.javapoet.ClassName) SequenceElement(ru.curs.celesta.score.SequenceElement) Grain(ru.curs.celesta.score.Grain) Parameter(ru.curs.celesta.score.Parameter) ColumnMeta(ru.curs.celesta.score.ColumnMeta) Generated(javax.annotation.Generated) StringColumn(ru.curs.celesta.score.StringColumn) ResultSet(java.sql.ResultSet) Map(java.util.Map) ICelesta(ru.curs.celesta.ICelesta) ZoneOffset(java.time.ZoneOffset) DataGrainElement(ru.curs.celesta.score.DataGrainElement) CelestaGenerated(ru.curs.celesta.dbutils.CelestaGenerated) ParameterSpec(com.squareup.javapoet.ParameterSpec) CallContext(ru.curs.celesta.CallContext) TimeZone(java.util.TimeZone) Timestamp(java.sql.Timestamp) Collection(java.util.Collection) Set(java.util.Set) Column(ru.curs.celesta.score.Column) Collectors(java.util.stream.Collectors) JavaFile(com.squareup.javapoet.JavaFile) Objects(java.util.Objects) List(java.util.List) ViewCursor(ru.curs.celesta.dbutils.ViewCursor) TriggerType(ru.curs.celesta.event.TriggerType) BasicTable(ru.curs.celesta.score.BasicTable) GrainElement(ru.curs.celesta.score.GrainElement) BasicDataAccessor(ru.curs.celesta.dbutils.BasicDataAccessor) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) IntegerColumn(ru.curs.celesta.score.IntegerColumn) MaterializedViewCursor(ru.curs.celesta.dbutils.MaterializedViewCursor) ZonedDateTimeColumn(ru.curs.celesta.score.ZonedDateTimeColumn) FieldSpec(com.squareup.javapoet.FieldSpec) TableElement(ru.curs.celesta.score.TableElement) LocalDateTime(java.time.LocalDateTime) WildcardTypeName(com.squareup.javapoet.WildcardTypeName) Cursor(ru.curs.celesta.dbutils.Cursor) HashMap(java.util.HashMap) View(ru.curs.celesta.score.View) ReadOnlyTable(ru.curs.celesta.score.ReadOnlyTable) Function(java.util.function.Function) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SQLException(java.sql.SQLException) Calendar(java.util.Calendar) Sequence(ru.curs.celesta.dbutils.Sequence) BinaryColumn(ru.curs.celesta.score.BinaryColumn) ParameterizedView(ru.curs.celesta.score.ParameterizedView) CodeBlock(com.squareup.javapoet.CodeBlock) LinkedHashSet(java.util.LinkedHashSet) Iterator(java.util.Iterator) MethodSpec(com.squareup.javapoet.MethodSpec) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) IOException(java.io.IOException) CursorIterator(ru.curs.celesta.dbutils.CursorIterator) TypeSpec(com.squareup.javapoet.TypeSpec) ParameterizedViewCursor(ru.curs.celesta.dbutils.ParameterizedViewCursor) MaterializedView(ru.curs.celesta.score.MaterializedView) Table(ru.curs.celesta.score.Table) File(java.io.File) Consumer(java.util.function.Consumer) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) VersionedElement(ru.curs.celesta.score.VersionedElement) DateTimeFormatter(java.time.format.DateTimeFormatter) NamedElement(ru.curs.celesta.score.NamedElement) FileResource(ru.curs.celesta.score.io.FileResource) ReadOnlyTableCursor(ru.curs.celesta.dbutils.ReadOnlyTableCursor) Collections(java.util.Collections) ArrayTypeName(com.squareup.javapoet.ArrayTypeName) Consumer(java.util.function.Consumer) ParameterSpec(com.squareup.javapoet.ParameterSpec) ICelesta(ru.curs.celesta.ICelesta)

Aggregations

ParameterSpec (com.squareup.javapoet.ParameterSpec)97 MethodSpec (com.squareup.javapoet.MethodSpec)59 ParameterizedTypeName (com.squareup.javapoet.ParameterizedTypeName)40 ArrayList (java.util.ArrayList)34 TypeName (com.squareup.javapoet.TypeName)30 ClassName (com.squareup.javapoet.ClassName)27 TypeSpec (com.squareup.javapoet.TypeSpec)26 Map (java.util.Map)26 CodeBlock (com.squareup.javapoet.CodeBlock)23 FieldSpec (com.squareup.javapoet.FieldSpec)22 List (java.util.List)20 HashMap (java.util.HashMap)18 AnnotationSpec (com.squareup.javapoet.AnnotationSpec)17 JavaFile (com.squareup.javapoet.JavaFile)13 Modifier (javax.lang.model.element.Modifier)13 TypeElement (javax.lang.model.element.TypeElement)13 Collectors (java.util.stream.Collectors)12 IOException (java.io.IOException)11 Element (javax.lang.model.element.Element)11 TypeMirror (javax.lang.model.type.TypeMirror)11