All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.babyfish.jimmer.sql.ast.tuple.Tuple4.kt Maven / Gradle / Ivy

There is a newer version: 0.9.19
Show newest version
package org.babyfish.jimmer.sql.ast.tuple

import org.babyfish.jimmer.sql.ast.impl.TupleImplementor
import java.util.function.BiFunction

data class Tuple4(
    val _1: T1,
    val _2: T2,
    val _3: T3,
    val _4: T4
) : TupleImplementor {

    override fun size(): Int = 4

    override operator fun get(index: Int): Any? =
        when (index) {
            0 -> _1
            1 -> _2
            2 -> _3
            3 -> _4
            else -> throw IllegalArgumentException("Index must between 0 and ${size() - 1}")
        }

    override fun convert(block: BiFunction): TupleImplementor =
        Tuple4(
            block.apply(_1, 0),
            block.apply(_2, 1),
            block.apply(_3, 2),
            block.apply(_4, 3)
        )

    companion object {
        @JvmStatic
        @Suppress("UNCHECKED_CAST")
        fun  projection1(tuples: Collection>) : Collection =
            TupleImplementor.projection(tuples, 0) as Collection

        @JvmStatic
        @Suppress("UNCHECKED_CAST")
        fun  projection2(tuples: Collection>) : Collection =
            TupleImplementor.projection(tuples, 1) as Collection

        @JvmStatic
        @Suppress("UNCHECKED_CAST")
        fun  projection3(tuples: Collection>) : Collection =
            TupleImplementor.projection(tuples, 2) as Collection

        @JvmStatic
        @Suppress("UNCHECKED_CAST")
        fun  projection4(tuples: Collection>) : Collection =
            TupleImplementor.projection(tuples, 3) as Collection
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy