/** * If there are deps that are going from inside a FigComponent to inside a FigComponentInstance * the returned vector-set is not null. Then in the vector-set are the UMLDeploymentDiagram and * all FigDependencies with this characteristic and their FigObjects described over the supplier * and client. * * @param dd the diagram to check * @return the set of offenders */ public ListSet computeOffenders(UMLDeploymentDiagram dd) { Collection figs = dd.getLayer().getContents(); ListSet offs = null; for (Object obj : figs) { if (!(obj instanceof FigDependency)) { continue; } FigDependency figDependency = (FigDependency) obj; if (!(Model.getFacade().isADependency(figDependency.getOwner()))) { continue; } Object dependency = figDependency.getOwner(); Collection suppliers = Model.getFacade().getSuppliers(dependency); int count = 0; if (suppliers != null) { for (Object moe : suppliers) { if (Model.getFacade().isAObject(moe)) { Object objSup = moe; if (Model.getFacade().getElementResidences(objSup) != null && (Model.getFacade().getElementResidences(objSup).size() > 0)) { count += 2; } if (Model.getFacade().getComponentInstance(objSup) != null) { count++; } } } } Collection clients = Model.getFacade().getClients(dependency); if (clients != null && (clients.size() > 0)) { for (Object moe : clients) { if (Model.getFacade().isAObject(moe)) { Object objCli = moe; if (Model.getFacade().getElementResidences(objCli) != null && (Model.getFacade().getElementResidences(objCli).size() > 0)) { count += 2; } if (Model.getFacade().getComponentInstance(objCli) != null) { count++; } } } } if (count == 3) { if (offs == null) { offs = new ListSet(); offs.add(dd); } offs.add(figDependency); offs.add(figDependency.getSourcePortFig()); offs.add(figDependency.getDestPortFig()); } } return offs; }