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

Adding initialization of size provider for IHierarchicElement

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



Signed-off-by: default avatarKonstantin Blaschke <blaschke@fortiss.org>
parent 7b9b4f54
No related branches found
No related tags found
1 merge request!210Setting up Metric extraction plugin for AF3 : Issue 4310
...@@ -67,6 +67,7 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor { ...@@ -67,6 +67,7 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor {
/** Action for generating the set of . */ /** Action for generating the set of . */
protected class MetricExtractionAction extends Action { protected class MetricExtractionAction extends Action {
/** */
private final FileProject fp; private final FileProject fp;
/** Constructor. */ /** Constructor. */
public MetricExtractionAction(FileProject fp) { public MetricExtractionAction(FileProject fp) {
......
...@@ -38,10 +38,26 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie ...@@ -38,10 +38,26 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie
* Number of totalElements in whole tree * Number of totalElements in whole tree
* Average SubTree Size * 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} */ /** {@inheritDoc} */
@Override @Override
public Map<String, Double> apply(IHierarchicElement ele) { public void apply(IHierarchicElement ele) {
Map<String, Double> sizes = new HashMap<String, Double>(); Map<String, Double> sizes = new HashMap<String, Double>();
sizes.put("numberOfPorts", (double)ele.getConnectors().size()); sizes.put("numberOfPorts", (double)ele.getConnectors().size());
sizes.put("numberOfChildren", (double)ele.getContainedElements().size()); sizes.put("numberOfChildren", (double)ele.getContainedElements().size());
...@@ -63,7 +79,7 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie ...@@ -63,7 +79,7 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie
for(IHierarchicElement child : ele.getContainedElements()) { for(IHierarchicElement child : ele.getContainedElements()) {
apply(child); apply(child);
} }
return sizes; this.sizes = sizes;
} }
/** /**
......
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.ext.quality.service; package org.fortiss.tooling.ext.quality.service;
import java.util.Map;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.service.base.IEObjectAware; import org.fortiss.tooling.kernel.service.base.IEObjectAware;
...@@ -30,5 +28,5 @@ 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> { public interface IModelQualityProvider<C extends EObject> extends IEObjectAware<EObject> {
/** Applies the IMetricProvider to the given model element. */ /** Applies the IMetricProvider to the given model element. */
Map<String, Double> apply(C element); void apply(C element);
} }
...@@ -24,7 +24,6 @@ import java.io.IOException; ...@@ -24,7 +24,6 @@ import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -36,6 +35,7 @@ import org.fortiss.tooling.base.model.element.IHierarchicElement; ...@@ -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.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;
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;
...@@ -47,6 +47,7 @@ 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<?>> public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityProvider<?>>
implements IIntrospectiveKernelService, IModelQualityService { implements IIntrospectiveKernelService, IModelQualityService {
/** The singleton instance. */ /** The singleton instance. */
private static final ModelQualityService INSTANCE = new ModelQualityService(); private static final ModelQualityService INSTANCE = new ModelQualityService();
...@@ -89,7 +90,6 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr ...@@ -89,7 +90,6 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
} }
/** Get all suitable {@link IModelQualityProvider} for the given input. */ /** Get all suitable {@link IModelQualityProvider} for the given input. */
@SuppressWarnings("unused")
private List<IModelQualityProvider<?>> getAllMetricProviders(EObject input) { private List<IModelQualityProvider<?>> getAllMetricProviders(EObject input) {
List<IModelQualityProvider<?>> providers = new ArrayList<>(); List<IModelQualityProvider<?>> providers = new ArrayList<>();
for(Entry<Class<?>, List<IModelQualityProvider<?>>> migEntry : handlerMap.entrySet()) { for(Entry<Class<?>, List<IModelQualityProvider<?>>> migEntry : handlerMap.entrySet()) {
...@@ -102,18 +102,27 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr ...@@ -102,18 +102,27 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
} }
/** /**
* @param modelElement * @param fp
* @return * @return
*/ */
public List<IModelQualityProvider<? extends EObject>> public List<IModelQualityProvider<? extends EObject>> performMetricAnalysis(FileProject fp) {
performMetricAnalysis(FileProject modelElement) {
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) {
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()); // List<IModelQualityProvider<?>> handlers = getRegisteredHandlers(modelElement.getClass());
Map<String, Double> qualityData = new HashMap<String, Double>(); // Map<String, Double> qualityData = new HashMap<String, Double>();
List<IModelQualityProvider<?>> hierarchicHandlers =
getRegisteredHandlers(IHierarchicElement.class); // getRegisteredHandlers(IHierarchicElement.class);
List<IModelQualityProvider<?>> hierarchicHandlers2 = getRegisteredHandlers(EObject.class); // List<IModelQualityProvider<?>> hierarchicHandlers2 = getAllMetricProviders(fp);
// if(handlers == null) { // if(handlers == null) {
// return null; // return null;
// } // }
......
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