public static NodeModel createAddNodeAndRelCommand( DiagramEditPart diagramController, Artifact art, NodeModel mostRecentNavigation, int mostRecentLineNumber, Object selElement, CompoundCommand command) { DiagramModel diagram = (DiagramModel) diagramController.getModel(); Resource resToAdd = art.elementRes; IJavaElement selectedElt = null; if (selElement instanceof IJavaElement) selectedElt = (IJavaElement) selElement; ReloRdfRepository repo = StoreUtil.getDefaultStoreRepository(); IJavaElement elmtToAdd = selectedElt != null ? selectedElt : RJCore.resourceToJDTElement(repo, resToAdd); NodeModel addedNode = null; if (IJavaElement.TYPE == elmtToAdd.getElementType()) { addedNode = InstanceUtil.findOrCreateContainerInstanceModel( null, InstanceUtil.getClassName(resToAdd, repo), resToAdd, diagram, -1, command); } else if (elmtToAdd instanceof IMethod && elmtToAdd.getParent() instanceof IType) { if (mostRecentNavigation instanceof MethodBoxModel) { addMethodModelsAndConns( addedNode, resToAdd, mostRecentNavigation, mostRecentLineNumber, diagram, command); } if (addedNode == null) { IType containerClass = (IType) elmtToAdd.getParent(); Resource classRes = RJCore.jdtElementToResource(repo, containerClass); InstanceModel instance = InstanceUtil.findOrCreateContainerInstanceModel( null, InstanceUtil.getClassName(classRes, repo), classRes, diagram, -1, command); IMethod method = (IMethod) elmtToAdd; addedNode = MethodUtil.findOrCreateMethodModel(method, resToAdd, instance, -1, command); } } else if (elmtToAdd instanceof IField && elmtToAdd.getParent() instanceof IType) { if (mostRecentNavigation instanceof MethodBoxModel) { addFieldModelsAndConns( addedNode, resToAdd, mostRecentNavigation, mostRecentLineNumber, diagram, command); } if (addedNode == null) { IType containerClass = (IType) elmtToAdd.getParent(); Resource classRes = RJCore.jdtElementToResource(repo, containerClass); InstanceModel instance = InstanceUtil.findOrCreateContainerInstanceModel( null, InstanceUtil.getClassName(classRes, repo), classRes, diagram, -1, command); IField field = (IField) elmtToAdd; addedNode = FieldUtil.findOrCreateFieldModel(field, resToAdd, instance, -1, command); } } return addedNode; }