package iri; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FormattingHelper { public String format(Annotation[] as) { List<String> names = new ArrayList<String>(); for (Annotation f : as) { names.add(f.toString()); } return sortAndPrintNames(names); } public String format(Field[] fs) { List<String> names = new ArrayList<String>(); for (Field f : fs) { names.add(f.getName()); } return sortAndPrintNames(names); } public String format(Field f) { return f.getName(); } public String format(Method[] ms) { List<String> list = new ArrayList<String>(); for (Method m : ms) { list.add(format(m)); } return sortAndPrintNames(list); } public String format(Method m) { StringBuilder s = new StringBuilder(); s.append(m.getName()); Class<?>[] ps = m.getParameterTypes(); if (ps == null) { s.append("()"); } else { s.append("("); for (int i = 0; i < ps.length; i++) { if (i > 0) { s.append(","); } s.append(ps[i].getSimpleName()); } s.append(")"); } return s.toString().trim(); } public String format(Constructor<?>[] ms) { List<String> list = new ArrayList<String>(); for (Constructor<?> m : ms) { list.add(format(m)); } return sortAndPrintNames(list); } public String format(Constructor<?> m) { StringBuilder s = new StringBuilder(); s.append(m.getName()); Class<?>[] ps = m.getParameterTypes(); if (ps == null) { s.append("()"); } else { s.append("("); for (int i = 0; i < ps.length; i++) { if (i > 0) { s.append(","); } s.append(ps[i].getSimpleName()); } s.append(")"); } return s.toString().trim(); } public String sortAndPrintNames(List<String> names) { StringBuilder s = new StringBuilder(); Collections.sort(names); s.append(names.size()).append(":"); for (String n : names) { s.append(n).append(" "); } return s.toString().trim(); } }