Untitled
unknown
java
a year ago
2.0 kB
9
Indexable
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;
}
}
Editor is loading...
Leave a Comment