package com.plectix.simulator.util; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import com.plectix.simulator.interfaces.ConnectedComponentInterface; import com.plectix.simulator.staticanalysis.Agent; import com.plectix.simulator.staticanalysis.LinkRank; import com.plectix.simulator.staticanalysis.LinkStatus; import com.plectix.simulator.staticanalysis.Site; public class Converter { public static String toString(Site site) { StringBuffer sb = new StringBuffer(); sb.append(site.getName()); if (!site.getInternalState().hasDefaultName()) { sb.append("~" + site.getInternalState().getName()); } if (site.getLinkState().getStatusLinkRank() == LinkRank.SEMI_LINK) { sb.append("!_"); } else if (site.getLinkIndex() != -1) { sb.append("!" + site.getLinkIndex()); } else if (site.getLinkState().getStatusLink() == LinkStatus.WILDCARD) { sb.append("?"); } return sb.toString(); } public static String toString(Agent agent) { StringBuffer sb = new StringBuffer(); sb.append(agent.getName()); sb.append("("); boolean first = true; TreeMap<String, Site> sites = new TreeMap<String, Site>(); for (Site site : agent.getSites()) { sites.put(site.getName(), site); } for (Site site : sites.values()) { if (!first) { sb.append(", "); } else { first = false; } sb.append(toString(site)); } sb.append(")"); return sb.toString(); } public static String toString(ConnectedComponentInterface c) { StringBuffer sb = new StringBuffer(); if (c == null) return "null"; boolean first = true; Map<String, List<Agent>> agents = new TreeMap<String, List<Agent>>(); Agent empty = new Agent(); List<Agent> list; String agentString; for (Agent agent : c.getAgents()) { if (empty.equalz(agent)) { return ""; } agentString = toString(agent).intern(); list = agents.get(agentString); if (list == null) { list = new ArrayList<Agent>(); agents.put(agentString, list); } list.add(agent); } for (List<Agent> agentList : agents.values()) { for (Agent agent : agentList) { if (!first) { sb.append(", "); } else { first = false; } sb.append(toString(agent)); } } return sb.toString(); } }