Skip to content
Snippets Groups Projects
Commit e085a5cc authored by Konstantin Blaschke's avatar Konstantin Blaschke
Browse files

Switching to singleton service use in ext.quality

Issue-Ref: 4310
Issue-Url: af3#4310



Signed-off-by: default avatarKonstantin Blaschke <blaschke@fortiss.org>
parent ee6c232a
No related branches found
No related tags found
1 merge request!210Setting up Metric extraction plugin for AF3 : Issue 4310
...@@ -2,14 +2,12 @@ Manifest-Version: 1.0 ...@@ -2,14 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: org.fortiss.tooling.ext.quality.ui Bundle-Name: org.fortiss.tooling.ext.quality.ui
Bundle-SymbolicName: org.fortiss.tooling.ext.quality.ui;singleton:=true 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 Automatic-Module-Name: org.fortiss.tooling.ext.quality.ui
Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.ui.ide;visibility:=reexport, Require-Bundle: org.eclipse.ui.ide;visibility:=reexport,
org.fortiss.tooling.base.ui;visibility:=reexport, org.fortiss.tooling.base.ui;visibility:=reexport,
org.fortiss.tooling.kernel, org.fortiss.tooling.kernel,
org.fortiss.tooling.kernel.ui, org.fortiss.tooling.kernel.ui,
org.fortiss.tooling.ext.reuse, org.fortiss.tooling.ext.quality,
org.eclipse.emf.ecore, org.fortiss.af3.project;bundle-version="2.23.0"
org.fortiss.tooling.ext.quality
Import-Package: org.fortiss.af3.project.model
...@@ -28,9 +28,13 @@ import org.eclipse.jface.action.ActionContributionItem; ...@@ -28,9 +28,13 @@ import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.fortiss.af3.project.model.FileProject; 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.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.IContextMenuContributor;
import org.fortiss.tooling.kernel.ui.extension.data.ContextMenuContextProvider; 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 * Crates a context menu entry to generate the for the selected
...@@ -78,8 +82,9 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor { ...@@ -78,8 +82,9 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public void run() { public void run() {
ModelQualityService ms = new ModelQualityService(); ITopLevelElement top = IPersistencyService.getInstance().getTopLevelElementFor(this.fp);
ms.performMetricAnalysis(this.fp);
IModelQualityService.getInstance().performMetricAnalysis(top);
System.out.println("We print something"); System.out.println("We print something");
} }
......
...@@ -17,6 +17,9 @@ package org.fortiss.tooling.ext.quality; ...@@ -17,6 +17,9 @@ package org.fortiss.tooling.ext.quality;
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
import org.eclipse.core.runtime.Plugin; 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.fortiss.tooling.ext.quality.service.ModelQualityService;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
...@@ -39,6 +42,8 @@ public class AF3QualityActivator extends Plugin { ...@@ -39,6 +42,8 @@ public class AF3QualityActivator extends Plugin {
plugin = this; plugin = this;
System.out.println("[Plugin] " + PLUGIN_ID + " started."); System.out.println("[Plugin] " + PLUGIN_ID + " started.");
ModelQualityService.getInstance().startService(); ModelQualityService.getInstance().startService();
IModelQualityService.getInstance().registerMetricProvider(
new HierarchicElementSizeProvider("dasd"), IHierarchicElement.class);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
......
...@@ -17,6 +17,8 @@ package org.fortiss.tooling.ext.quality.service; ...@@ -17,6 +17,8 @@ package org.fortiss.tooling.ext.quality.service;
import java.util.Map; 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. * The migration service checks and upgrades the old models from the last release.
* *
...@@ -33,4 +35,7 @@ public interface IModelQualityService { ...@@ -33,4 +35,7 @@ public interface IModelQualityService {
/** trigger extraction to csv document */ /** trigger extraction to csv document */
void metricExtractionToCSV(Map<String, Double> data); void metricExtractionToCSV(Map<String, Double> data);
/** */
void performMetricAnalysis(ITopLevelElement top);
} }
...@@ -30,8 +30,7 @@ import java.util.Map; ...@@ -30,8 +30,7 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.project.model.FileProject; import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.base.model.element.IHierarchicElement;
import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem; import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem;
import org.fortiss.tooling.kernel.introspection.IIntrospectionItem; import org.fortiss.tooling.kernel.introspection.IIntrospectionItem;
import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService; import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService;
...@@ -39,6 +38,7 @@ import org.fortiss.tooling.kernel.model.IProjectRootElement; ...@@ -39,6 +38,7 @@ import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService; import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService;
import org.fortiss.tooling.kernel.service.IMigrationService; import org.fortiss.tooling.kernel.service.IMigrationService;
import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase; import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase;
import org.fortiss.tooling.kernel.utils.EcoreUtils;
/** /**
* This class implements the {@link IMigrationService} interface. * This class implements the {@link IMigrationService} interface.
...@@ -51,7 +51,12 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr ...@@ -51,7 +51,12 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
/** The singleton instance. */ /** The singleton instance. */
private static final ModelQualityService INSTANCE = new ModelQualityService(); private static final ModelQualityService INSTANCE = new ModelQualityService();
/** Constructor. */
private ModelQualityService() {
}
/** Returns singleton instance of the service. */ /** Returns singleton instance of the service. */
/* package */
public static ModelQualityService getInstance() { public static ModelQualityService getInstance() {
return INSTANCE; return INSTANCE;
} }
...@@ -102,27 +107,35 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr ...@@ -102,27 +107,35 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
} }
/** /**
* @param fp * @param top
* @return * @return
*/ */
public List<IModelQualityProvider<? extends EObject>> performMetricAnalysis(FileProject fp) { @Override
public void performMetricAnalysis(ITopLevelElement top) {
List<IModelQualityProvider<? extends EObject>> result = List<IModelQualityProvider<? extends EObject>> result =
new LinkedList<IModelQualityProvider<? extends EObject>>(); new LinkedList<IModelQualityProvider<? extends EObject>>();
for(IProjectRootElement ele : fp.getRootElements()) {
if(ele instanceof IHierarchicElement) { for(IProjectRootElement ele : EcoreUtils.getChildrenWithType(top.getRootModelElement(),
HierarchicElementSizeProvider hes = IProjectRootElement.class)) {
new HierarchicElementSizeProvider(ele.getName()); List<IModelQualityProvider<? extends EObject>> providers =
hes.apply((IHierarchicElement)ele); getRegisteredHandlers(ele.getClass());
System.out.println("checked in hierarchic metrics for: " + hes.getName());
result.add(hes); // 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>(); // Map<String, Double> qualityData = new HashMap<String, Double>();
// getRegisteredHandlers(IHierarchicElement.class); // getRegisteredHandlers(IHierarchicElement.class);
// List<IModelQualityProvider<?>> hierarchicHandlers2 = getAllMetricProviders(fp); // List<IModelQualityProvider<?>> hierarchicHandlers2 = getRegisteredHandlers(fp);
// if(handlers == null) { // if(handlers == null) {
// return null; // return null;
// } // }
...@@ -134,7 +147,7 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr ...@@ -134,7 +147,7 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
// metricsList.addAll(metrics); // metricsList.addAll(metrics);
// } // }
// } // }
return result; // return result;
} }
/** */ /** */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment