blob: 79fbcce37c917e529df6ce8e2d51c2e44af0afcc [file] [log] [blame]
package org.eclipse.emf.refactor.metrics.configuration.managers;
import java.util.LinkedList;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.refactor.metrics.configuration.core.Configuration;
import org.eclipse.emf.refactor.metrics.core.Metric;
import org.eclipse.emf.refactor.metrics.managers.MetricManager;
/**
* This class is the main controller. It provides Methods needed to coordinate all
* EMFMetrics system tasks.
*
* @author Pawel Stepien
*/
public class ConfigurationManager {
private static LinkedList<Configuration> configurations;
private static LinkedList<Metric> allMetrics = null;
private static ConfigurationManager instance;
private ConfigurationManager() {
configurations = new LinkedList<Configuration>();
allMetrics = MetricManager.getAllMetrics();
System.out.println("ConfigurationManager initialized!");
}
public static ConfigurationManager getInstance() {
if (instance == null) {
instance = new ConfigurationManager();
}
return instance;
}
private static LinkedList<Metric> getAllMetrics() {
if (allMetrics == null)
allMetrics = MetricManager.getAllMetrics();
return allMetrics;
}
/**
* Saves the actual Metric configuration for a given project into a File.
*
* @param project
*/
public static void saveConfiguration(IProject project) {
XMLProjectFileManager.saveConfiguration(getConfiguration(project));
}
private static Configuration loadConfiguration(IProject project) {
return XMLProjectFileManager.loadConfiguration(project);
}
/**
* Returns a LinkedList containing all selected metrics for a given project.
*
* @param project
*
* @return selectedMetrics
*/
public static LinkedList<Metric> getSelectedMetrics(IProject project){
Configuration configuration = getConfiguration(project);
return configuration.getSelectedMetrics();
}
/**
* Saves a metric selection for a given project.
*
* @param project
* @param metrics selection
*/
public static void setConfiguration(IProject project, boolean[] selection){
Configuration configuration = getConfiguration(project);
configuration.setSelection(selection);
}
public static Configuration getConfiguration(IProject project) {
Configuration configuration = null;
if(! configurations.isEmpty()) {
for (Configuration tempConfiguration : configurations) {
if (tempConfiguration.getProject().equals(project))
configuration = tempConfiguration;
}
}
if(configuration == null) {
configuration = loadConfiguration(project);
}
if(configuration == null){
configuration = new Configuration(project);
LinkedList<String> metricIdList = new LinkedList<String>();
if (allMetrics == null) getAllMetrics();
for (Metric metric : allMetrics) {
metricIdList.add(metric.getId());
System.out.println("add: " + metric.getId());
}
configuration.setSelection(metricIdList);
}
configurations.add(configuration);
return configuration;
}
}