@Override public String[] unparse(LoadContext context, CDOMObject obj) { Changes<ChangeProf> changes = context.getObjectContext().getListChanges(obj, ListKey.CHANGEPROF); Collection<ChangeProf> added = changes.getAdded(); if (added == null || added.isEmpty()) { // Zero indicates no Token return null; } HashMapToList<CDOMGroupRef<WeaponProf>, CDOMReference<WeaponProf>> m = new HashMapToList<CDOMGroupRef<WeaponProf>, CDOMReference<WeaponProf>>(); for (ChangeProf cp : added) { CDOMReference<WeaponProf> source = cp.getSource(); CDOMGroupRef<WeaponProf> result = cp.getResult(); m.addToListFor(result, source); } SortedSet<CDOMReference<WeaponProf>> set = new TreeSet<CDOMReference<WeaponProf>>(ReferenceUtilities.REFERENCE_SORTER); Set<String> returnSet = new TreeSet<String>(); for (CDOMGroupRef<WeaponProf> result : m.getKeySet()) { StringBuilder sb = new StringBuilder(); boolean needComma = false; set.clear(); set.addAll(m.getListFor(result)); for (CDOMReference<WeaponProf> source : set) { if (needComma) { sb.append(Constants.COMMA); } needComma = true; String sourceLst = source.getLSTformat(false); if (sourceLst.startsWith(Constants.LST_TYPE_EQUAL)) { sb.append(Constants.LST_TYPE_DOT); sb.append(sourceLst.substring(5)); } else { sb.append(sourceLst); } } sb.append(Constants.EQUALS).append(result.getLSTformat(false).substring(5)); returnSet.add(sb.toString()); } return new String[] {StringUtil.join(returnSet, Constants.PIPE)}; }