package org.incha.core; import java.util.LinkedList; import java.util.List; import org.incha.core.jswingripples.JRipplesICModuleInterface; import org.incha.core.jswingripples.JRipplesModuleInterface; import org.incha.core.jswingripples.analysis.JRipplesModuleAnalysisDefaultImpactSetConnections; import org.incha.core.jswingripples.eig.JSwingRipplesEIG; import org.incha.core.jswingripples.parser.MethodGranularityDependencyBuilder; import org.incha.core.jswingripples.parser.MethodGranularityDependencyBuilderPolymorphic; import org.incha.core.jswingripples.rules.JRipplesModuleICChangePropagation; import org.incha.core.jswingripples.rules.JRipplesModuleICChangePropagationRelaxed; import org.incha.core.jswingripples.rules.JRipplesModuleICConceptLocationRelaxed; import org.incha.core.jswingripples.rules.JRipplesModuleICDefaultConceptLocation; import org.incha.core.jswingripples.rules.JRipplesModuleICImpactAnalysis; import org.incha.core.jswingripples.rules.JRipplesModuleICImpactAnalysisRelaxed; /** * Manages information about the type of Analysis made by JRipples, doesn't include the actual procedures. */ public class ModuleConfiguration { public static final int MODULE_IMPACT_ANALYSIS = 0; public static final int MODULE_IMPACT_ANALYSIS_RELAXED = 1; public static final int MODULE_CHANGE_PROPAGATION_RELAXED = 2; public static final int MODULE_CHANGE_PROPAGATION = 3; public static final int MODULE_CONCEPT_LOCATION = 4; public static final int MODULE_CONCEPT_LOCATION_RELAXED = 5; public static final int MODULE_DEPENDENCY_BUILDER = 0; public static final int MODULE_DEPENDENCY_BUILDER_WITH_POLYMORPHIC = 1; public static final int MODULE_VIEW_HIERARCHY = 0; public static final int MODULE_VIEW_TREE = 1; private int dependencyGraphModule; private int incrementalChange = MODULE_CONCEPT_LOCATION; private int analysis; /** * Default */ public ModuleConfiguration() { super(); } /** * @param type the dependencyGraphModule to set */ public void setDependencyGraphModule(final int type) { this.dependencyGraphModule = type; } /** * @return the dependencyGraphModule */ public int getDependencyGraphModule() { return dependencyGraphModule; } /** * @param moduleImpactAnalysisTitle */ public void setIncrementalChange(final int type) { this.incrementalChange = type; } /** * @return the incremantealChange */ public int getIncrementalChange() { return incrementalChange; } /** * @param typee */ public void setAnalysis(final int type) { this.analysis = type; } /** * @return the analysis */ public int getAnalysis() { return analysis; } public List<JRipplesModuleInterface> buildModules( final JSwingRipplesEIG eig, final JavaProject project) { final List<JRipplesModuleInterface> modules = new LinkedList<JRipplesModuleInterface>(); modules.add(createDependencyBuilderModule(eig)); modules.add(createIncrementalChangeModule(eig)); //analysis if (isAnalysisDefaultImpactSetConnections()) { modules.add(new JRipplesModuleAnalysisDefaultImpactSetConnections(eig)); } return modules; } /** * @return */ public boolean isAnalysisDefaultImpactSetConnections() { return getIncrementalChange() != MODULE_CONCEPT_LOCATION; } /** * @param eig * @return */ public JRipplesICModuleInterface createIncrementalChangeModule( final JSwingRipplesEIG eig) { return createIncrementalChangeModule(getIncrementalChange(), eig); } /** * @param eig * @return */ public JRipplesModuleInterface createDependencyBuilderModule( final JSwingRipplesEIG eig) { return createDependencyBuilderModule(getDependencyGraphModule(), eig); } /** * @param moduleType * @param eig * @return */ public static JRipplesModuleInterface createDependencyBuilderModule( final int moduleType, final JSwingRipplesEIG eig) { if (moduleType == MODULE_DEPENDENCY_BUILDER) { return new MethodGranularityDependencyBuilder(eig); } else { return new MethodGranularityDependencyBuilderPolymorphic(eig); } } /** * @param type * @param eig * @return */ public static JRipplesICModuleInterface createIncrementalChangeModule( final int type, final JSwingRipplesEIG eig) { switch (type) { case MODULE_IMPACT_ANALYSIS: return new JRipplesModuleICImpactAnalysis(eig); case MODULE_IMPACT_ANALYSIS_RELAXED: return new JRipplesModuleICImpactAnalysisRelaxed(eig); case MODULE_CHANGE_PROPAGATION_RELAXED: return new JRipplesModuleICChangePropagationRelaxed(eig); case MODULE_CHANGE_PROPAGATION: return new JRipplesModuleICChangePropagation(eig); case MODULE_CONCEPT_LOCATION: return new JRipplesModuleICDefaultConceptLocation(eig); case MODULE_CONCEPT_LOCATION_RELAXED: return new JRipplesModuleICConceptLocationRelaxed(eig); } return null; } }