diff --git a/org.fortiss.tooling.ext.quality.ui/META-INF/MANIFEST.MF b/org.fortiss.tooling.ext.quality.ui/META-INF/MANIFEST.MF index 7fcef617d54f557d53a7cbb3af10a8c0221116ed..d4bd3f279252a39c19785682d01042b986a01cbf 100644 --- a/org.fortiss.tooling.ext.quality.ui/META-INF/MANIFEST.MF +++ b/org.fortiss.tooling.ext.quality.ui/META-INF/MANIFEST.MF @@ -2,14 +2,12 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.fortiss.tooling.ext.quality.ui Bundle-SymbolicName: org.fortiss.tooling.ext.quality.ui;singleton:=true -Bundle-Version: 1.0.0 +Bundle-Version: 1.0.0.qualifier Automatic-Module-Name: org.fortiss.tooling.ext.quality.ui Bundle-RequiredExecutionEnvironment: JavaSE-11 Require-Bundle: org.eclipse.ui.ide;visibility:=reexport, org.fortiss.tooling.base.ui;visibility:=reexport, org.fortiss.tooling.kernel, org.fortiss.tooling.kernel.ui, - org.fortiss.tooling.ext.reuse, - org.eclipse.emf.ecore, - org.fortiss.tooling.ext.quality -Import-Package: org.fortiss.af3.project.model + org.fortiss.tooling.ext.quality, + org.fortiss.af3.project;bundle-version="2.23.0" 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 3dcbcbb01735ed393011a70cce6895af674d0080..594099b416a21db7e58427384fc12a17317f36a0 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 @@ -28,9 +28,13 @@ import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.resource.ImageDescriptor; import org.fortiss.af3.project.model.FileProject; +import org.fortiss.tooling.ext.quality.service.IModelQualityService; import org.fortiss.tooling.ext.quality.service.ModelQualityService; +import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; +import org.fortiss.tooling.kernel.service.IPersistencyService; import org.fortiss.tooling.kernel.ui.extension.IContextMenuContributor; import org.fortiss.tooling.kernel.ui.extension.data.ContextMenuContextProvider; +import org.fortiss.tooling.kernel.utils.KernelModelElementUtils; /** * Crates a context menu entry to generate the for the selected @@ -78,8 +82,9 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor { /** {@inheritDoc} */ @Override public void run() { - ModelQualityService ms = new ModelQualityService(); - ms.performMetricAnalysis(this.fp); + ITopLevelElement top = IPersistencyService.getInstance().getTopLevelElementFor(this.fp); + + IModelQualityService.getInstance().performMetricAnalysis(top); System.out.println("We print something"); } diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/AF3QualityActivator.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/AF3QualityActivator.java index 0f067724e692516876f78c2c0119aa2fa5de93da..1714186e560cfc51d23cefe9fd96fbf424fc9414 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/AF3QualityActivator.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/AF3QualityActivator.java @@ -17,6 +17,9 @@ package org.fortiss.tooling.ext.quality; +--------------------------------------------------------------------------*/ import org.eclipse.core.runtime.Plugin; +import org.fortiss.tooling.base.model.element.IHierarchicElement; +import org.fortiss.tooling.ext.quality.service.HierarchicElementSizeProvider; +import org.fortiss.tooling.ext.quality.service.IModelQualityService; import org.fortiss.tooling.ext.quality.service.ModelQualityService; import org.osgi.framework.BundleContext; @@ -39,6 +42,8 @@ public class AF3QualityActivator extends Plugin { plugin = this; System.out.println("[Plugin] " + PLUGIN_ID + " started."); ModelQualityService.getInstance().startService(); + IModelQualityService.getInstance().registerMetricProvider( + new HierarchicElementSizeProvider("dasd"), IHierarchicElement.class); } /** {@inheritDoc} */ diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityService.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityService.java index b5b7310ca15887e2c101bc2564fdd2bbf6ddc780..c9f521e5546ebb48f74ab472bbb9b42a40091307 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityService.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityService.java @@ -17,6 +17,8 @@ package org.fortiss.tooling.ext.quality.service; import java.util.Map; +import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; + /** * The migration service checks and upgrades the old models from the last release. * @@ -33,4 +35,7 @@ public interface IModelQualityService { /** trigger extraction to csv document */ void metricExtractionToCSV(Map<String, Double> data); + + /** */ + void performMetricAnalysis(ITopLevelElement top); } 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 2fa1be0c7b06cde84b0e47f24c1aa2a6c7c57f82..4be3b2362a92acbef2b7ef773e89772541a39fcd 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 @@ -30,8 +30,7 @@ import java.util.Map; import java.util.Map.Entry; import org.eclipse.emf.ecore.EObject; -import org.fortiss.af3.project.model.FileProject; -import org.fortiss.tooling.base.model.element.IHierarchicElement; +import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem; import org.fortiss.tooling.kernel.introspection.IIntrospectionItem; import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService; @@ -39,6 +38,7 @@ 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; +import org.fortiss.tooling.kernel.utils.EcoreUtils; /** * This class implements the {@link IMigrationService} interface. @@ -51,7 +51,12 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr /** The singleton instance. */ private static final ModelQualityService INSTANCE = new ModelQualityService(); + /** Constructor. */ + private ModelQualityService() { + } + /** Returns singleton instance of the service. */ + /* package */ public static ModelQualityService getInstance() { return INSTANCE; } @@ -102,27 +107,35 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr } /** - * @param fp + * @param top * @return */ - public List<IModelQualityProvider<? extends EObject>> performMetricAnalysis(FileProject fp) { + @Override + public void performMetricAnalysis(ITopLevelElement top) { 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); - } + + for(IProjectRootElement ele : EcoreUtils.getChildrenWithType(top.getRootModelElement(), + IProjectRootElement.class)) { + List<IModelQualityProvider<? extends EObject>> providers = + getRegisteredHandlers(ele.getClass()); + + // for(IModelQualityProvider<? extends EObject> provider: providers) { + // if(provider instanceof IModelQualityProvider<IHierarchicElement>) { + // + // } + // } + // mqp.apply(ele); + // System.out.println("checked in hierarchic metrics for: " + mqp.getName()); + // result.add(mqp) + // } } - // List<IModelQualityProvider<?>> handlers = getRegisteredHandlers(modelElement.getClass()); + // // Map<String, Double> qualityData = new HashMap<String, Double>(); // getRegisteredHandlers(IHierarchicElement.class); - // List<IModelQualityProvider<?>> hierarchicHandlers2 = getAllMetricProviders(fp); + // List<IModelQualityProvider<?>> hierarchicHandlers2 = getRegisteredHandlers(fp); // if(handlers == null) { // return null; // } @@ -134,7 +147,7 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr // metricsList.addAll(metrics); // } // } - return result; + // return result; } /** */