DecisionTableHierarchy oDecisionTable = new DecisionTableHierarchy(oExpression);
oDecisionTable.buildUpMaskingMCDCDecisionTable(in_bCreateRowsForUnnecessaryValues);
for(DecisionRowAlternatives oAlternatives : oDecisionTable)
{
TCGDisjunctiveNormalForm oDNF = GeneratedFactory.eINSTANCE.createTCGDisjunctiveNormalForm();
for(DecisionRowInterface oRow : oAlternatives)
{
DecisionTableExpressionValueSelection oResultingSelection =
new DecisionTableExpressionValueSelection();
oRow.fillValueSelection(oResultingSelection);
oResultingSelection.setTruthValue(oRow.getTruthValue());
// TODO: Performanz erh�hen:
// Hier werden in oRow schon hierarchisch alle Wahrheitswerte
// der Altenativen vorgehalten - sie m�ssen im folgenden
// Aufruf nicht erst erneut bestimmt werden!
TCGDisjunctiveNormalForm oTmpDNF =
TCGOCLExpressionHelperClass.
createDNFForExpressionAndDecisionTableRow(oExpression, oResultingSelection);
TCGConjunctionHelperClass.removeContradictingConjunctions(
oTmpDNF.getConjunctions());
if(!oTmpDNF.getConjunctions().isEmpty()) {
oDNF.getConjunctions().addAll(oTmpDNF.getConjunctions());
}
}
if(!oDNF.getConjunctions().isEmpty()) {
colRetDNFs.addAll(TCGDisjunctiveNormalFormHelperClass.
splitUpDNFsAccordingToInequationsAndConfiguration(oDNF));