package ru.csu.stan.java.cfg.util; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * * @author mz * */ public class MethodRegistry { private Map<String, Set<MethodRegistryItem>> registry = new HashMap<String, Set<MethodRegistryItem>>(); private MethodRegistry() {} public static MethodRegistry getInstance(){ return new MethodRegistry(); } public void addMethodToRegistry(String className, MethodRegistryItem method){ if (!registry.containsKey(className)) registry.put(className, new HashSet<MethodRegistryItem>()); registry.get(className).add(method); } public MethodRegistryItem getItem(String className, int id){ if (registry.containsKey(className)) for (MethodRegistryItem item: registry.get(className)) if (item.getId() == id) return item; return null; } public MethodRegistryItem findSame(String className, MethodRegistryItem query){ if (registry.containsKey(className)) for (MethodRegistryItem item: registry.get(className)){ boolean same = true; for (String my: item.getArgs()) same = same && query.getArgs().contains(my); for (String theirs: query.getArgs()) same = same && item.getArgs().contains(theirs); if (item.getName().equals(query.getName()) && same) return item; } return null; } }