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)!!)
}