Skip to main content
summaryrefslogtreecommitdiffstats
blob: 70e6c81fc40d9c6a57ecd54f70b36c6955a5a219 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package org.eclipse.emf.refactor.metrics.core;

import java.util.LinkedList;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;

public class MetricLoader {

	public static LinkedList<Metric> loadMetrics() {
		LinkedList<Metric> metrics = new LinkedList<Metric>();
		IConfigurationElement[] rawMetrics = Platform.getExtensionRegistry()
				.getConfigurationElementsFor(ExtensionPointTags.EXTENSION_POINT_NAME);
		for (IConfigurationElement element : rawMetrics) {
			try {
				if (element.getName().equals(ExtensionPointTags.METRIC_TAG)) {
					Metric metric = createMetric(element);
					if (null != metric) {
						metrics.add(metric);
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		java.util.Collections.sort(metrics);
		return metrics;
	}

	private static Metric createMetric(IConfigurationElement rawMetric) {
		try {
			final String name = rawMetric.getAttribute(ExtensionPointTags.METRIC_NAME_TAG);
			final String id = rawMetric.getAttribute(ExtensionPointTags.METRIC_ID_TAG);
			final String description = rawMetric
					.getAttribute(ExtensionPointTags.METRIC_DESCRIPTION_TAG);
			final String metamodel = rawMetric
					.getAttribute(ExtensionPointTags.METRIC_METAMODEL_TAG);
			final String context = rawMetric.getAttribute(ExtensionPointTags.METRIC_CONTEXT_TAG);
			final IMetricCalculator calculateClass = (IMetricCalculator) rawMetric
					.createExecutableExtension(ExtensionPointTags.METRIC_CALCULATE_CLASS_TAG);
			return new Metric(name, description, metamodel, context, calculateClass, id);
		} catch (Throwable e) {
			e.printStackTrace();
			return null;
		}
	}

}

Back to the top