package es.usj.svit.simuhaff.approach.encoding import javax.xml.XMLConstants import javax.xml.parsers.DocumentBuilderFactory import kotlin.reflect.KClass import es.usj.svit.simuhaff.approach.domain.KromaiaFormat @Suppress("UNCHECKED_CAST") object XMLEncodeHelper : Encoder { private val allowedFormats: List> = listOf(KromaiaFormat::class) as List> override fun encode(models: List, format: KClass): List { val encodings = mutableListOf() val factory = DocumentBuilderFactory.newInstance() factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true) val builder = factory.newDocumentBuilder() models.forEach { model -> val xml = builder.parse(model.xml) xml.documentElement.normalize() if (format as KClass<*> in allowedFormats) { val encoding = KromaiaFormat(model.name, xml).apply() encodings.add(encoding as T) } } return encodings } }