/** * determine type by first type attribute present in object, then add attribute according to * attribute order in template. */ public RpslObjectBuilder addAttributeSorted(final RpslAttribute newAttribute) { final ObjectType objectType = getType(); final ObjectTemplate objectTemplate = ObjectTemplate.getTemplate(objectType); final EnumSet<AttributeType> attributesAfter = getAttributeTypesAfter(objectTemplate, newAttribute.getType()); for (int i = 0; i < attributes.size(); i++) { if (attributesAfter.contains(attributes.get(i).getType())) { attributes.add(i, newAttribute); return this; } } attributes.add(newAttribute); return this; }
/** * determine type by first type attribute present in object, then sort attributes according to * attribute order in template. This sort is guaranteed to be <i>stable</i>: equal elements will * not be reordered as a result of the sort. */ public RpslObjectBuilder sort() { final ObjectType objectType = getType(); Collections.sort( attributes, ObjectTemplate.getTemplate(objectType).getAttributeTypeComparator()); return this; }