private static Configuration getConfiguration(IProject project) { Configuration configuration = null; if (!configurations.isEmpty()) { System.out.println("1"); for (Configuration tempConfiguration : configurations) { if (tempConfiguration.getProject().equals(project)) configuration = tempConfiguration; } } if (configuration == null) { System.out.println("2"); configuration = loadConfiguration(project); } if (configuration == null) { System.out.println("3"); configuration = new Configuration(project); LinkedList<String> smellIdList = new LinkedList<String>(); if (allSmells == null) getAllModelSmells(); double[] limits = new double[allSmells.size()]; for (ModelSmell smell : allSmells) { smellIdList.add(smell.getId()); System.out.println("add: " + smell.getId()); if (smell.getFinderClass() instanceof MetricBasedModelSmellFinderClass) { limits[allSmells.indexOf(smell)] = 1.0; // ((MetricBasedModelSmellFinderClass)smell.getFinderClass()).setLimit(1.0); } } configuration.setSelection(smellIdList); configuration.setLimits(limits); } configurations.add(configuration); return configuration; }
/** * For a given smell ID this method returns the limit set in the configuration. If it <br> * - is not a metric based smell or the limit was not set. It return 0.0. * * @param project - target project * @param smellID - the id of the given smell * @return limit set in the projects configuration or 0.0 */ public static Double getLimit(IProject project, String smellID) { System.out.println("=========>>> EMFModelSmells, getLimit"); System.out.println("=========>>> EMFModelSmells, id: " + smellID); Configuration config = getConfiguration(project); Double limit = config.getLimit(smellID); System.out.println("===>>> EMF Model Smells: limit: " + limit); return limit; }
/** * Return the <i>ModelSmell</i> objects for the smells which are active on the <br> * - given project. * * @param project - target project * @return - all model smell active for the given project */ public static LinkedList<ModelSmell> getSelectedModelSmells(IProject project) { System.out.println("===>>> EMFModelSmells - getSelectedModelSmlls"); Configuration config = getConfiguration(project); return config.getSelectedModelSmells(); }
/** * Sets the configured data for a project by manipulating the <br> * - <i>Configuration</i> object for this project currently <br> * - held by EMF Smells. <br> * - Also sets the limits for metric based smells. * * @param project - target project * @param selection - array determening the selection of smells * @param limits - limits for the smells */ public static void setConfiguration(IProject project, boolean[] selection, double[] limits) { System.out.println("===>>> EMFModelSmells, setConfiguiration"); Configuration configuration = getConfiguration(project); configuration.setSelection(selection); configuration.setLimits(limits); }
/** * Sets the configured data for a project by manipulating the <br> * - <i>Configuration</i> object for this project currently <br> * - held by EMF Smells. * * @param project - target project * @param selection - array determening the selection of smells */ public static void setConfiguration(IProject project, boolean[] selection) { System.out.println("===>>> EMFModelSmells, setConfiguration(2)"); Configuration configuration = getConfiguration(project); configuration.setSelection(selection); }