private void addControlFlowModel( ArtifactFragment parent, Resource instanceRes, Resource modelRes, Map<Resource, ArtifactFragment> instanceRes2AFMap, ReloRdfRepository repo, DiagramModel diagramModel) throws Exception { Statement cfLabelStmt = repo.getStatement(modelRes, RSECore.name, null); Statement cfType = repo.getStatement(modelRes, RSECore.controlFlowName, null); ControlFlowModel cfModel = null; String cfTypeString = cfType.getObject().toString(); if (cfTypeString.equals(RSECore.ifBlock.toString())) { cfModel = new IfBlockModel(diagramModel, cfLabelStmt.getObject().toString()); ((IfBlockModel) cfModel) .addElseIfStmts( cfTypeString, getListOfConditionalStatements( RSECore.ifStmt, modelRes, instanceRes, instanceRes2AFMap, repo)); ((IfBlockModel) cfModel) .setElseStmts( getListOfConditionalStatements( RSECore.elseStmt, modelRes, instanceRes, instanceRes2AFMap, repo)); ((IfBlockModel) cfModel) .setThenStmts( getListOfConditionalStatements( RSECore.thenStmt, modelRes, instanceRes, instanceRes2AFMap, repo)); } else if (cfTypeString.equals(RSECore.loopBlock.toString())) { cfModel = new LoopBlockModel(diagramModel, cfLabelStmt.getObject().toString()); ((LoopBlockModel) cfModel) .setLoopStmts( getListOfConditionalStatements( RSECore.loopStmt, modelRes, instanceRes, instanceRes2AFMap, repo)); } else if (cfTypeString.equals(RSECore.userControlBlock.toString())) { cfModel = new UserCreatedControlFlowModel(diagramModel, cfLabelStmt.getObject().toString()); ((UserCreatedControlFlowModel) cfModel) .setStatements( getListOfConditionalStatements( RSECore.conditionalStmt, modelRes, instanceRes, instanceRes2AFMap, repo)); } if (parent instanceof DiagramModel) { diagramModel.addChildToConditionalLayer(cfModel); } else if (parent instanceof ControlFlowModel) { ((ControlFlowModel) parent).addInnerConditionalModel(cfModel); cfModel.setOuterConditionalModel((ControlFlowModel) parent); diagramModel.firePropertyChange(NodeModel.PROPERTY_CONDITIONAL_CHILDREN, null, cfModel); } StatementIterator containeeIter = repo.getStatements(modelRes, RSECore.contains, null); while (containeeIter.hasNext()) { Value obj = containeeIter.next().getObject(); if (!(obj instanceof Resource) || repo.getStatement((Resource) obj, RSECore.model, null) == null) throw new Exception( "Child resource not found for parent resource: " + instanceRes.toString()); Resource childInstanceRes = (Resource) obj; addControlFlowModel( cfModel, instanceRes, childInstanceRes, instanceRes2AFMap, repo, diagramModel); } // if(instanceModel!=null) // instanceModel.setInstanceRes(instanceRes); // else // logger.error("Could not create Instance model for resource: " + detailsRes.toString()); }