package ru.csu.stan.java.cfg.automaton; import ru.csu.stan.java.cfg.automaton.base.ContextBase; import ru.csu.stan.java.cfg.jaxb.Project; import ru.csu.stan.java.classgen.automaton.IContext; import ru.csu.stan.java.classgen.handlers.NodeAttributes; import ru.csu.stan.java.classgen.util.CompilationUnit; /** * Состояние анализа имени пакета в файле. * * @author mzubov * */ public class PackageContext extends ContextBase { private CompilationUnit compilationUnit; private String currentPackage; PackageContext(ContextBase previousState, CompilationUnit compilationUnit) { super(previousState); this.compilationUnit = compilationUnit; } @Override public IContext<Project> getNextState(IContext<Project> context, String eventName) { return this; } @Override public void processTag(String name, NodeAttributes attrs) { if ("package".equals(name)) currentPackage = ""; if ("member_select".equals(name) || "identifier".equals(name)) currentPackage = attrs.getNameAttribute() + '.' + currentPackage; } @Override public void finish(String eventName) { if ("package".equals(eventName)) compilationUnit.setPackageName(currentPackage.substring(0, currentPackage.length()-1)); } @Override public ContextBase getPreviousState(String eventName) { if ("package".equals(eventName)) return getUpperState(); else return this; } }