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

ssm.data.spring.autoconfigure.DataSsmAutoConfiguration.kt Maven / Gradle / Ivy

package ssm.data.spring.autoconfigure

import f2.dsl.fnc.f2Function
import f2.dsl.fnc.invoke
import org.slf4j.LoggerFactory
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import ssm.api.DataSsmQueryFunctionImpl
import ssm.chaincode.dsl.config.ChaincodeSsmConfig
import ssm.couchdb.dsl.config.CouchdbSsmConfig
import ssm.data.dsl.SsmApiQueryFunctions
import ssm.data.dsl.config.DataSsmConfig
import ssm.data.dsl.features.query.DataChaincodeListQueryFunction
import ssm.data.dsl.features.query.DataSsmGetQueryFunction
import ssm.data.dsl.features.query.DataSsmListQueryFunction
import ssm.data.dsl.features.query.DataSsmSessionGetQueryFunction
import ssm.data.dsl.features.query.DataSsmSessionListQueryFunction
import ssm.data.dsl.features.query.DataSsmSessionLogGetQueryFunction
import ssm.data.dsl.features.query.DataSsmSessionLogListQueryFunction
import ssm.sync.sdk.SsmSyncF2Builder
import ssm.sync.sdk.SyncSsmCommandFunction


@EnableConfigurationProperties(DataSsmProperties::class)
@Configuration(proxyBeanMethods = false)
class DataSsmAutoConfiguration {

	private val logger = LoggerFactory.getLogger(DataSsmAutoConfiguration::class.java)

	@Bean
	@ConditionalOnMissingBean(CouchdbSsmConfig::class)
	@ConditionalOnProperty(prefix = "ssm.couchdb", name = ["url"])
	fun couchdbSsmConfig(dataSsmProperties: DataSsmProperties): CouchdbSsmConfig? {
		logger.debug("Configuration of ${DataSsmAutoConfiguration::couchdbSsmConfig.name}...")
		return dataSsmProperties.couchdb
	}
	@Bean
	@ConditionalOnMissingBean(ChaincodeSsmConfig::class)
	@ConditionalOnProperty(prefix = "ssm.chaincode", name = ["url"])
	fun ssmChaincodeConfig(dataSsmProperties: DataSsmProperties): ChaincodeSsmConfig? {
		logger.debug("Configuration of ${DataSsmAutoConfiguration::ssmChaincodeConfig.name}...")
		return dataSsmProperties.chaincode
	}

	@Bean
	@ConditionalOnMissingBean(DataSsmConfig::class)
	@ConditionalOnBean(value = [CouchdbSsmConfig::class, ChaincodeSsmConfig::class])
	fun dataSsmConfig(
		couchdbSsmConfig: CouchdbSsmConfig,
		chaincodeSsmConfig: ChaincodeSsmConfig
	): DataSsmConfig {
		logger.debug("Configuration of ${DataSsmAutoConfiguration::dataSsmConfig.name}...")
		return DataSsmConfig(couchdbSsmConfig, chaincodeSsmConfig)
	}

	@Bean
	@ConditionalOnMissingBean(SsmApiQueryFunctions::class)
	@ConditionalOnBean(value = [DataSsmConfig::class])
	fun ssmApiQueryFunctions(ssmDataConfig: DataSsmConfig): SsmApiQueryFunctions {
		logger.debug("Configuration of ${DataSsmAutoConfiguration::ssmApiQueryFunctions.name}...")
		return DataSsmQueryFunctionImpl(ssmDataConfig)
	}
}

@ConditionalOnBean(SsmApiQueryFunctions::class)
@Configuration(proxyBeanMethods = false)
class DataSsmF2AutoConfiguration(
	private val ssmApiQueryFunctions: SsmApiQueryFunctions
) : SsmApiQueryFunctions {

	private val logger = LoggerFactory.getLogger(DataSsmAutoConfiguration::class.java)

	@Bean
	override fun dataChaincodeListQueryFunction(): DataChaincodeListQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmListQueryFunction.name}...")
		return ssmApiQueryFunctions.dataChaincodeListQueryFunction()
	}

	@Bean
	override fun dataSsmListQueryFunction(): DataSsmListQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmListQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmListQueryFunction()
	}

	@Bean
	override fun dataSsmGetQueryFunction(): DataSsmGetQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmGetQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmGetQueryFunction()
	}

	@Bean
	override fun dataSsmSessionListQueryFunction(): DataSsmSessionListQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmSessionListQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmSessionListQueryFunction()
	}

	@Bean
	override fun dataSsmSessionGetQueryFunction(): DataSsmSessionGetQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmSessionGetQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmSessionGetQueryFunction()
	}

	@Bean
	override fun dataSsmSessionLogListQueryFunction(): DataSsmSessionLogListQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmSessionLogListQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmSessionLogListQueryFunction()
	}

	@Bean
	override fun dataSsmSessionLogGetQueryFunction(): DataSsmSessionLogGetQueryFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::dataSsmSessionLogGetQueryFunction.name}...")
		return ssmApiQueryFunctions.dataSsmSessionLogGetQueryFunction()
	}

	@Bean
	fun syncSsmCommandFunction(config: DataSsmConfig): SyncSsmCommandFunction {
		logger.debug("Configuration of ${DataSsmF2AutoConfiguration::syncSsmCommandFunction.name}...")
		return SsmSyncF2Builder.build(config)
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy