diff --git a/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java b/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java index fae5ff921137188465dd443716137f256599b19d..3dcbcbb01735ed393011a70cce6895af674d0080 100644 --- a/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java +++ b/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java @@ -67,6 +67,7 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor { /** Action for generating the set of . */ protected class MetricExtractionAction extends Action { + /** */ private final FileProject fp; /** Constructor. */ public MetricExtractionAction(FileProject fp) { diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java index 41bc8536d9bf3eed0d7785c0ee4b85714f50c731..350d038e89a71528ba0c13249f209f61f1ed07d2 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java @@ -38,10 +38,26 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie * Number of totalElements in whole tree * Average SubTree Size */ + /* */ + private final String rootName; + /** */ + Map<String, Double> sizes = new HashMap<String, Double>(); + + /** */ + public HierarchicElementSizeProvider(String rootName) { + super(); + this.rootName = rootName; + // TODO Auto-generated constructor stub + } + + /** */ + public String getName() { + return this.rootName; + } /** {@inheritDoc} */ @Override - public Map<String, Double> apply(IHierarchicElement ele) { + public void apply(IHierarchicElement ele) { Map<String, Double> sizes = new HashMap<String, Double>(); sizes.put("numberOfPorts", (double)ele.getConnectors().size()); sizes.put("numberOfChildren", (double)ele.getContainedElements().size()); @@ -63,7 +79,7 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie for(IHierarchicElement child : ele.getContainedElements()) { apply(child); } - return sizes; + this.sizes = sizes; } /** diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java index db893d2a232f236df3cebbf606289751d412dfa7..77c3bf38eeca7aa27f4a675e0acc66d37410244d 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java @@ -15,8 +15,6 @@ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.ext.quality.service; -import java.util.Map; - import org.eclipse.emf.ecore.EObject; import org.fortiss.tooling.kernel.service.base.IEObjectAware; @@ -30,5 +28,5 @@ import org.fortiss.tooling.kernel.service.base.IEObjectAware; public interface IModelQualityProvider<C extends EObject> extends IEObjectAware<EObject> { /** Applies the IMetricProvider to the given model element. */ - Map<String, Double> apply(C element); + void apply(C element); } diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java index 6398acae0a252e27b39d39103e60a2ecb9598aa1..2fa1be0c7b06cde84b0e47f24c1aa2a6c7c57f82 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java @@ -24,7 +24,6 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -36,6 +35,7 @@ import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem; import org.fortiss.tooling.kernel.introspection.IIntrospectionItem; import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService; +import org.fortiss.tooling.kernel.model.IProjectRootElement; import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService; import org.fortiss.tooling.kernel.service.IMigrationService; import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase; @@ -47,6 +47,7 @@ import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase; */ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityProvider<?>> implements IIntrospectiveKernelService, IModelQualityService { + /** The singleton instance. */ private static final ModelQualityService INSTANCE = new ModelQualityService(); @@ -89,7 +90,6 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr } /** Get all suitable {@link IModelQualityProvider} for the given input. */ - @SuppressWarnings("unused") private List<IModelQualityProvider<?>> getAllMetricProviders(EObject input) { List<IModelQualityProvider<?>> providers = new ArrayList<>(); for(Entry<Class<?>, List<IModelQualityProvider<?>>> migEntry : handlerMap.entrySet()) { @@ -102,18 +102,27 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr } /** - * @param modelElement + * @param fp * @return */ - public List<IModelQualityProvider<? extends EObject>> - performMetricAnalysis(FileProject modelElement) { + public List<IModelQualityProvider<? extends EObject>> performMetricAnalysis(FileProject fp) { List<IModelQualityProvider<? extends EObject>> result = new LinkedList<IModelQualityProvider<? extends EObject>>(); + for(IProjectRootElement ele : fp.getRootElements()) { + if(ele instanceof IHierarchicElement) { + HierarchicElementSizeProvider hes = + new HierarchicElementSizeProvider(ele.getName()); + hes.apply((IHierarchicElement)ele); + System.out.println("checked in hierarchic metrics for: " + hes.getName()); + result.add(hes); + } + } + // List<IModelQualityProvider<?>> handlers = getRegisteredHandlers(modelElement.getClass()); - Map<String, Double> qualityData = new HashMap<String, Double>(); - List<IModelQualityProvider<?>> hierarchicHandlers = - getRegisteredHandlers(IHierarchicElement.class); - List<IModelQualityProvider<?>> hierarchicHandlers2 = getRegisteredHandlers(EObject.class); + // Map<String, Double> qualityData = new HashMap<String, Double>(); + + // getRegisteredHandlers(IHierarchicElement.class); + // List<IModelQualityProvider<?>> hierarchicHandlers2 = getAllMetricProviders(fp); // if(handlers == null) { // return null; // }