override fun parseCondition()

in code/nxt-integration/src/main/kotlin/org/fbme/integration/nxt/importer/BasicFbTypeNxtImporter.kt [16:49]


    override fun parseCondition(
        condition: ECTransitionCondition,
        rawCondition: String,
        fbtd: BasicFBTypeDeclaration
    ) {
        var rawCondition = rawCondition
        rawCondition = rawCondition.trim { it <= ' ' }
        if (rawCondition == "1") {
            return
        }
        val openBracketIndex = rawCondition.indexOf('[')
        val closeBracketIndex = rawCondition.lastIndexOf(']')
        if (openBracketIndex == -1) {
            val guardCondition = parseExpression(stFactory, rawCondition.unescapeXML())
            val checker = TransitionImportChecker(fbtd)
            checker.checkTransition(guardCondition)
            if (checker.satisfies()) {
                val eventName: String = checker.eventName
                if (eventName.isNotEmpty()) {
                    condition.eventReference.setFQName(eventName)
                }
                condition.setGuardCondition(checker.newGuardCondition)
            } else {
                condition.eventReference.setFQName(rawCondition)
            }
            return
        }
        require(closeBracketIndex == rawCondition.length - 1) { "Malformed transition condition" }
        if (openBracketIndex > 0) {
            condition.eventReference.setFQName(rawCondition.substring(0, openBracketIndex))
        }
        val guardConditionText = rawCondition.substring(openBracketIndex + 1, closeBracketIndex).unescapeXML()
        condition.setGuardCondition(parseExpression(stFactory, guardConditionText)!!)
    }