package kr.ac.snu.selab.soot.analyzer;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import kr.ac.snu.selab.soot.graph.MetaInfo;
import kr.ac.snu.selab.soot.util.XMLWriter;
import org.apache.log4j.Logger;
public class RoleRepository {
private static Logger log = Logger.getLogger(RoleRepository.class);
private Set<MetaInfo> callers;
private Set<MetaInfo> creators;
private Set<MetaInfo> injectors;
private Set<MetaInfo> stores;
public RoleRepository() {
callers = new HashSet<MetaInfo>();
creators = new HashSet<MetaInfo>();
injectors = new HashSet<MetaInfo>();
stores = new HashSet<MetaInfo>();
}
public Set<MetaInfo> callers() {
return callers;
}
public Set<MetaInfo> creators() {
return creators;
}
public Set<MetaInfo> injectors() {
return injectors;
}
public Set<MetaInfo> stores() {
return stores;
}
public void addCaller(MetaInfo metaInfo) {
callers.add(metaInfo);
}
public void addCreator(MetaInfo metaInfo) {
creators.add(metaInfo);
}
public void addInjector(MetaInfo metaInfo) {
injectors.add(metaInfo);
}
public void addStore(MetaInfo metaInfo) {
stores.add(metaInfo);
}
public void writeXML(XMLWriter writer) {
try {
writer.startElement("Roles");
writer.startElement("Creators");
for (MetaInfo metaInfo : creators()) {
writer.simpleElement("Creator", metaInfo.getElement().toString());
}
writer.endElement();
writer.startElement("Injectors");
for (MetaInfo metaInfo : injectors()) {
writer.simpleElement("Inejctor", metaInfo.getElement().toString());
}
writer.endElement();
writer.startElement("Stores");
for (MetaInfo metaInfo : stores()) {
writer.simpleElement("Store", metaInfo.getElement().toString());
}
writer.endElement();
writer.startElement("Callers");
for (MetaInfo metaInfo : callers()) {
writer.simpleElement("Caller", metaInfo.getElement().toString());
}
writer.endElement();
writer.endElement();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}