/* Delete duplicated relationship.ajs * * This jArchi script scans all the model elements and merge identical relationships. * relastionships are considered as identical if name, type, source and target are identical. * * Impact on model: * When elements are merged, the properties, documentations and relationships are merged. The specialization of the first element found in the model is kept. * * Impact on views: * No impact. * * Versions * 1.0 20/07/2023 Sebastien Dubourdieu First script release */ //------------------------------ console.show(); console.clear(); var elements = $("relationship") var elements2 = $("relationship") var nbMerges = 0; var mergedElements = new Set(); elements.each(function(e1) { if ( !mergedElements.has(e1.id)){ var duplicate = elements2.filter(e1.getType()).filter(function(object){return (object.getName().equals(e1.getName())||(!object.getName() && !e1.getName()))}); if (duplicate.length > 1) { duplicate.each(function(e2){ if (e1.source.equals(e2.source) && e1.target.equals(e2.target) && !e1.id.equals(e2.id)){ mergedElements.add(e2.id); e1.merge(e2); e2.delete(); ++nbMerges; } }); } } }); if (nbMerges > 1) { debug(nbMerges + " relationships deleted"); } else { debug(nbMerges + " relationship deleted"); } function debug(msg) { console.setTextColor(169, 169, 169); // grey console.log(msg); console.setDefaultTextColor(); }