in log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java [52:93]
public EventModel convert(Event event) {
LOGGER.traceEntry(event.getName());
EventModel model;
if (event.getId() != null) {
model = eventService.getEvent(event.getId()).orElseGet(EventModel::new);
} else {
model = new EventModel();
}
model.setCatalogId(event.getCatalogId());
model.setName(event.getName());
model.setAliases(event.getAliases());
model.setDescription(event.getDescription());
model.setDisplayName(event.getDisplayName());
if (model.getAttributes() == null) {
model.setAttributes(new HashSet<>());
}
Set<EventAttributeModel> eventAttributeModels = model.getAttributes() != null ? model.getAttributes() :
new HashSet<>();
List<EventAttribute> eventAttributes = event.getAttributes() != null ? event.getAttributes() : new ArrayList<>();
if (!eventAttributes.isEmpty()) {
for (EventAttribute eventAttribute : eventAttributes) {
EventAttributeModel eventAttributeModel = model.getAttribute(eventAttribute.getName());
if (eventAttributeModel != null) {
eventAttributeModel.setRequired(eventAttribute.isRequired());
} else {
Optional<AttributeModel> optional = getAttribute(event.getCatalogId(), eventAttribute.getName());
if (optional.isPresent()) {
eventAttributeModel = new EventAttributeModel();
eventAttributeModel.setRequired(eventAttribute.isRequired());
eventAttributeModel.setEvent(model);
eventAttributeModel.setAttribute(optional.get());
eventAttributeModels.add(eventAttributeModel);
} else {
throw new CatalogModificationException("No catalog entry for " + eventAttribute.getName());
}
}
}
}
eventAttributeModels.removeIf(a -> eventAttributes.stream().noneMatch(b -> b.getName().equals(a.getAttribute().getName())));
model.setAttributes(eventAttributeModels);
return LOGGER.traceExit(model);
}