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

com.alpine.model.pack.UnitModel.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2015 Alpine Data Labs
 * All rights reserved.
 */
package com.alpine.model.pack

import com.alpine.model.RowModel
import com.alpine.model.pack.sql.SimpleSQLTransformer
import com.alpine.plugin.core.io.ColumnDef
import com.alpine.sql.SQLGenerator
import com.alpine.transformer.Transformer
import com.alpine.transformer.sql.SQLTransformer

/**
 * Represents a model that carries features through without transforming them.
 * Designed to be used in parallel to other models in the CombinerModel.
 */
case class UnitModel(inputFeatures: Seq[ColumnDef], override val identifier: String = "") extends RowModel {
  override def transformer: Transformer = UnitTransformer
  override def outputFeatures = inputFeatures

  override def sqlTransformer(sqlGenerator: SQLGenerator): Option[SQLTransformer] = {
    Some(UnitSQLTransformer(this, sqlGenerator))
  }
}

/**
 * Applies the unit (a.k.a. identity or no-operation) transformation to the input row.
 * That is, apply returns its input argument.
 */
object UnitTransformer extends Transformer {
  override def apply(row: Row): Row = row
}

case class UnitSQLTransformer(model : UnitModel, sqlGenerator: SQLGenerator) extends SimpleSQLTransformer {
  override def getSQLExpressions = {
    inputColumnNames.map(_.asColumnarSQLExpression(sqlGenerator))
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy