package org.batfish.datamodel.answers; import java.io.Serializable; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import org.batfish.common.Warning; import org.batfish.common.Warnings; public class ConvertConfigurationAnswerElement implements AnswerElement, Serializable { /** * */ private static final long serialVersionUID = 1L; private Set<String> _failed; private SortedMap<String, SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>>> _undefinedReferences; private SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>> _unusedStructures; private String _version; private SortedMap<String, Warnings> _warnings; public ConvertConfigurationAnswerElement() { _failed = new TreeSet<>(); _warnings = new TreeMap<>(); _undefinedReferences = new TreeMap<>(); _unusedStructures = new TreeMap<>(); } public Set<String> getFailed() { return _failed; } public SortedMap<String, SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>>> getUndefinedReferences() { return _undefinedReferences; } public SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>> getUnusedStructures() { return _unusedStructures; } public String getVersion() { return _version; } public SortedMap<String, Warnings> getWarnings() { return _warnings; } @Override public String prettyPrint() { StringBuilder sb = new StringBuilder( "Results from converting vendor configurations\n"); _warnings.forEach((name, warnings) -> { sb.append("\n " + name + "[Conversion warnings]\n"); for (Warning warning : warnings.getRedFlagWarnings()) { sb.append(" RedFlag " + warning.getTag() + " : " + warning.getText() + "\n"); } for (Warning warning : warnings.getUnimplementedWarnings()) { sb.append(" Unimplemented " + warning.getTag() + " : " + warning.getText() + "\n"); } for (Warning warning : warnings.getPedanticWarnings()) { sb.append(" Pedantic " + warning.getTag() + " : " + warning.getText() + "\n"); } }); _undefinedReferences.forEach((hostname, byType) -> { sb.append("\n " + hostname + "[Undefined references]\n"); byType.forEach((type, byName) -> { sb.append(" " + type + ":\n"); byName.forEach((name, byUsage) -> { sb.append(" " + name + ":\n"); byUsage.forEach((usage, lines) -> { sb.append(" " + usage + ": lines " + lines.toString() + "\n"); }); }); }); }); _unusedStructures.forEach((hostname, byType) -> { sb.append("\n " + hostname + "[Unused structures]\n"); byType.forEach((structureType, byName) -> { byName.forEach((name, lines) -> { sb.append(" " + structureType + ": " + name + ":" + lines.toString() + "\n"); }); }); }); return sb.toString(); } public void setFailed(Set<String> failed) { _failed = failed; } public void setUndefinedReferences( SortedMap<String, SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>>> undefinedReferences) { _undefinedReferences = undefinedReferences; } public void setUnusedStructures( SortedMap<String, SortedMap<String, SortedMap<String, SortedSet<Integer>>>> unusedStructures) { _unusedStructures = unusedStructures; } public void setVersion(String version) { _version = version; } public void setWarnings(SortedMap<String, Warnings> warnings) { _warnings = warnings; } }