package me.eater.hefbrug.definition.impl import me.eater.hefbrug.collector.impl.PackageCollector import me.eater.hefbrug.definition.AbstractDefinition import me.eater.hefbrug.definition.DefinitionFactory import me.eater.hefbrug.dsl.context.impl.PackageContext import me.eater.hefbrug.enforcer.impl.PackageEnforcer import me.eater.hefbrug.executor.ExecutionContext import me.eater.hefbrug.state.impl.PackageState class PackageDefinition(id: String) : AbstractDefinition(factory.key(id), PackageState(id)) { override fun getContext(): PackageContext = PackageContext(this) class Factory : DefinitionFactory("package", ::PackageDefinition) { override fun createCollector(context: ExecutionContext): PackageCollector = PackageCollector(context) override fun createEnforcer(context: ExecutionContext): PackageEnforcer = PackageEnforcer(context) } object KeyHelper { operator fun get(id: String) = factory.key(id) } companion object { val factory: Factory = Factory() } }