protected Map<Locale, List<Serializable>> getMergedFieldValuesMap( Field newField, String[] newFieldsDisplayValues, Field existingField, String[] existingFieldsDisplayValues) { Set<Locale> availableLocales = getMergedAvailableLocales( newField.getAvailableLocales(), existingField.getAvailableLocales()); for (Locale locale : availableLocales) { List<Serializable> newFieldValues = getFieldValues(newField, locale); List<Serializable> existingFieldValues = getFieldValues(existingField, locale); List<Serializable> defaultFieldValues = getFieldValues(newField, newField.getDefaultLocale()); List<Serializable> mergedLocaleValues = getMergedFieldValues( newField.getName(), newFieldValues, newFieldsDisplayValues, existingFieldValues, existingFieldsDisplayValues, defaultFieldValues); existingField.setValues(locale, mergedLocaleValues); } return existingField.getValuesMap(); }
protected void appendField(Element element, Field field) { Element dynamicElementElement = element.addElement("dynamic-element"); dynamicElementElement.addAttribute( "default-language-id", LocaleUtil.toLanguageId(field.getDefaultLocale())); dynamicElementElement.addAttribute("name", field.getName()); for (Locale locale : field.getAvailableLocales()) { List<Serializable> values = field.getValues(locale); for (Serializable value : values) { Element dynamicContentElement = dynamicElementElement.addElement("dynamic-content"); dynamicContentElement.addAttribute("language-id", LocaleUtil.toLanguageId(locale)); updateField(dynamicContentElement, value); } } }