// This product is provided under the terms of EPL (Eclipse Public License) // version 1.0. // // The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.core.dsmengine; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.dtangler.core.dependencies.Dependable; import org.dtangler.core.dependencies.DependencyGraph; import org.dtangler.core.dsm.Dsm; import org.dtangler.core.dsm.DsmCell; import org.dtangler.core.dsm.DsmRow; public class DsmEngine { private final DependencyGraph dependencies; public DsmEngine(DependencyGraph dependencies) { this.dependencies = dependencies; } public Dsm createDsm() { List<Dependable> allItems = new ArrayList(dependencies.getAllItems()); Collections.sort(allItems, new InstabilityComparator(dependencies)); List<DsmRow> rows = new ArrayList(allItems.size()); for (Dependable item : allItems) rows.add(new DsmRow(item, createRowCells(item, allItems))); return new Dsm(rows); } private List<DsmCell> createRowCells(Dependable rowItem, List<Dependable> allItems) { List<DsmCell> cells = new ArrayList(); for (Dependable colItem : allItems) cells.add(createCell(rowItem, colItem)); return cells; } private DsmCell createCell(Dependable rowItem, Dependable colItem) { int depCount = dependencies.getDependencyWeight(colItem, rowItem); return new DsmCell(colItem, rowItem, depCount); } }