protected void cloneMetadataAttributes(MetadataElement sourceRoot, MetadataElement destRoot) { for (int i = 0; i < sourceRoot.getNumAttributes(); i++) { MetadataAttribute sourceAttribute = sourceRoot.getAttributeAt(i); destRoot.addAttribute(sourceAttribute.createDeepClone()); } }
/** * Adds an attribute from src to dest * * @param src the source element * @param tag the name of the attribute * @param dest the destination element * @param desc the description */ private static void addAbstractedAttribute(MetadataElement src, String tag, MetadataElement dest, String desc) { final MetadataAttribute attrib = src.getAttribute(tag); if (attrib != null) { MetadataAttribute copiedAttrib = attrib.createDeepClone(); copiedAttrib.setReadOnly(false); copiedAttrib.setDescription(desc); dest.addAttribute(copiedAttrib); } }
/** * Copies all metadata elements and attributes of the source element to the target element. * The copied elements and attributes are deeply cloned. * * @param source the source element. * @param target the target element. * * @throws NullPointerException if the source or the target element is {@code null}. */ public static void copyMetadata(MetadataElement source, MetadataElement target) { Assert.notNull(source, "source"); Assert.notNull(target, "target"); for (final MetadataElement element : source.getElements()) { target.addElement(element.createDeepClone()); } for (final MetadataAttribute attribute : source.getAttributes()) { target.addAttribute(attribute.createDeepClone()); } }
public MetadataElement createDeepClone() { MetadataElement clone = new MetadataElement(getName()); clone.setDescription(getDescription()); MetadataAttribute[] attributes = getAttributes(); for (MetadataAttribute attribute : attributes) { clone.addAttribute(attribute.createDeepClone()); } MetadataElement[] elements = getElements(); for (MetadataElement element : elements) { clone.addElement(element.createDeepClone()); } return clone; }