package fr.inria.diversify.codeFragmentProcessor; import fr.inria.diversify.codeFragment.CodeFragmentList; import fr.inria.diversify.codeFragment.CodeFragment; import spoon.processing.AbstractProcessor; import spoon.reflect.declaration.CtElement; import java.util.HashMap; /** * User: Simon * Date: 9/23/13 * Time: 2:23 PM */ public abstract class AbstractCodeFragmentProcessor<E extends CtElement> extends AbstractProcessor<E> { //We should deprecate this in favor of more rapid ways of fetching the fragments protected CodeFragmentList codeFragments; protected HashMap<String, CodeFragmentList> fragmentsByClass; public AbstractCodeFragmentProcessor() { super(); codeFragments = new CodeFragmentList(); fragmentsByClass = new HashMap<>(); } protected void addCf(CodeFragment cf) { codeFragments.add(cf); String[] pos = cf.positionString().split(":"); if ( !fragmentsByClass.containsKey(pos[0]) ) { fragmentsByClass.put(pos[0], new CodeFragmentList()); } fragmentsByClass.get(pos[0]).add(cf); } public CodeFragmentList getCodeFragments() { return codeFragments; } /** * Returns a list of code fragments belonging to a particular class * @return */ public HashMap<String, CodeFragmentList> getCodeFragmentsByClass(){ return fragmentsByClass; } /** * Listener to know the advance in the process. */ private ProcessListener processListener; public ProcessListener getProcessListener() { return processListener; } public void setProcessListener(ProcessListener processListener) { this.processListener = processListener; } }