public void replaceMetadataValue(DCValue oldValue, DCValue newValue) { // check both dcvalues are for the same field if (oldValue.hasSameFieldAs(newValue)) { String schema = oldValue.schema; String element = oldValue.element; String qualifier = oldValue.qualifier; // Save all metadata for this field DCValue[] dcvalues = getMetadata(schema, element, qualifier, Item.ANY); clearMetadata(schema, element, qualifier, Item.ANY); for (DCValue dcvalue : dcvalues) { if (dcvalue.equals(oldValue)) { addMetadata( schema, element, qualifier, newValue.language, newValue.value, newValue.authority, newValue.confidence); } else { addMetadata( schema, element, qualifier, dcvalue.language, dcvalue.value, dcvalue.authority, dcvalue.confidence); } } } }