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

com.testerum.file_service.mapper.business_to_file.BusinessToFileStepMapper.kt Maven / Gradle / Ivy

package com.testerum.file_service.mapper.business_to_file

import com.testerum.file_service.mapper.business_to_file.common.BusinessToFilePhaseMapper
import com.testerum.file_service.mapper.business_to_file.common.BusinessToFileStepCallMapper
import com.testerum.model.step.ComposedStepDef
import com.testerum.model.text.parts.ParamStepPatternPart
import com.testerum.model.text.parts.StepPatternPart
import com.testerum.model.text.parts.TextStepPatternPart
import com.testerum.model.text.parts.param_meta.TypeMetaFactory
import com.testerum.test_file_format.common.step_call.phase.FileStepPhase
import com.testerum.test_file_format.stepdef.FileStepDef
import com.testerum.test_file_format.stepdef.signature.FileStepDefSignature
import com.testerum.test_file_format.stepdef.signature.part.FileParamStepDefSignaturePart
import com.testerum.test_file_format.stepdef.signature.part.FileStepDefSignaturePart
import com.testerum.test_file_format.stepdef.signature.part.FileTextStepDefSignaturePart

class BusinessToFileStepMapper(private val businessToFilePhaseMapper: BusinessToFilePhaseMapper,
                               private val businessToFileStepCallMapper: BusinessToFileStepCallMapper) {

    fun mapComposedStep(composedStep: ComposedStepDef): FileStepDef {
        return FileStepDef(
                signature = mapSignature(composedStep),
                description = composedStep.description,
                tags = composedStep.tags,
                steps = businessToFileStepCallMapper.mapStepCalls(composedStep.stepCalls)
        )
    }

    private fun mapSignature(composedStep: ComposedStepDef): FileStepDefSignature {
        val filePhase: FileStepPhase = businessToFilePhaseMapper.mapPhase(composedStep.phase)
        val fileSignatureParts: List = mapSignatureParts(composedStep.stepPattern.patternParts)

        return FileStepDefSignature(filePhase, fileSignatureParts)
    }

    private fun mapSignatureParts(parts: List): List {
        return parts.map { mapSignaturePart(it) }
    }

    private fun mapSignaturePart(part: StepPatternPart): FileStepDefSignaturePart {
        return when (part) {
            is TextStepPatternPart  -> FileTextStepDefSignaturePart(part.text)
            is ParamStepPatternPart -> FileParamStepDefSignaturePart(part.name, TypeMetaFactory.getStringTypeFromTypeMeta(part.typeMeta)) //TODO: what about the part.description and part.enumValues
            else                    -> throw Exception("unknown StepPatternPart [${part.javaClass.name}]")
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy