Untitled
import java.lang.reflect.Method; import java.util.Map; import java.util.function.Consumer; import lombok.extern.slf4j.Slf4j; @Slf4j class FieldProcessingHelpers { private static final Map<String, String> FIELD_MAPPINGS = Map.of( "celex", "ID_CELEX", "eli", "RESOURCE_LEGAL_ELI", "ojNumber", "RESOURCE_LEGAL_NUMBER_NATURAL", "actType", "WORK_HAS_RESOURCE-TYPE", "ojSeries", "OFFICIAL_JOURNAL_ACT_PART_OF_COLLECTION_DOCUMENT", "ojYear", "YEAR" ); void processFields(Work work, EuActDto euActDto) { FIELD_MAPPINGS.forEach((dtoField, xmlField) -> { processField(work, euActDto, dtoField, xmlField); }); } private static void processField(Work work, EuActDto dto, String fieldName, String xmlFieldName) { try { // Construct getter name (e.g., getEli) String getterName = "get" + capitalize(fieldName); Method getterMethod = Work.class.getMethod(getterName); Object source = getterMethod.invoke(work); if (source != null) { String value = extractValue(source); // Construct setter name (e.g., setEli) String setterName = "set" + capitalize(fieldName); Method setterMethod = EuActDto.class.getMethod(setterName, String.class); setterMethod.invoke(dto, value); log.debug("Set {} to '{}'", xmlFieldName, value); } else { log.warn("{} field is missing or invalid.", xmlFieldName); } } catch (Exception e) { log.error("Error processing field: {} for XML field {}", fieldName, xmlFieldName, e); } } private static String capitalize(String str) { return str.substring(0, 1).toUpperCase() + str.substring(1); } private static String extractValue(Object obj) { if (obj instanceof HasValue) { return ((HasValue) obj).getValue(); } else if (obj instanceof HasPrefLabel) { return ((HasPrefLabel) obj).getPrefLabel(); } return null; } }
Leave a Comment