Resolve DM-285 #141

Merged
kilian.schuettler1 merged 2 commits from DM-285 into master 2023-09-25 17:27:02 +02:00
12 changed files with 110 additions and 73 deletions

View File

@ -17,9 +17,9 @@ import com.iqser.red.service.persistence.management.v1.processor.service.Compone
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.external.resource.ComponentLogResource;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.Component;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides;
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest;
@ -50,7 +50,7 @@ public class ComponentLogController implements ComponentLogResource {
public void addOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody ComponentsOverrides componentsOverrides) {
var componentLog = componentLogService.getComponentLog(dossierId, fileId);
var allComponents = componentLog.getComponents();
var allComponents = componentLog.getComponentLogEntries();
componentOverrideService.addOverrides(dossierId, fileId, componentsOverrides);
@ -69,7 +69,7 @@ public class ComponentLogController implements ComponentLogResource {
public void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody RevertOverrideRequest revertOverrideRequest) {
var componentLog = componentLogService.getComponentLog(dossierId, fileId);
var allComponents = componentLog.getComponents();
var allComponents = componentLog.getComponentLogEntries();
componentOverrideService.revertOverrides(dossierId, fileId, revertOverrideRequest);
@ -77,9 +77,9 @@ public class ComponentLogController implements ComponentLogResource {
}
private void auditOverride(String dossierId, String fileId, String componentName, String overrideValue, List<Component> allComponents) {
private void auditOverride(String dossierId, String fileId, String componentName, String overrideValue, List<ComponentLogEntry> allComponentLogEntries) {
Optional<Component> component = allComponents.stream().filter(c -> c.getName().equals(componentName)).findFirst();
Optional<ComponentLogEntry> component = allComponentLogEntries.stream().filter(c -> c.getName().equals(componentName)).findFirst();
String originalValue = getOriginalValue(component);
String value = getValue(component);
auditPersistenceService.audit(AuditRequest.builder()
@ -105,9 +105,9 @@ public class ComponentLogController implements ComponentLogResource {
}
private void auditOverrideRevert(String dossierId, String fileId, String componentNameToRevert, List<Component> allComponents) {
private void auditOverrideRevert(String dossierId, String fileId, String componentNameToRevert, List<ComponentLogEntry> allComponentLogEntries) {
Optional<Component> component = allComponents.stream().filter(c -> c.getName().equals(componentNameToRevert)).findFirst();
Optional<ComponentLogEntry> component = allComponentLogEntries.stream().filter(c -> c.getName().equals(componentNameToRevert)).findFirst();
String originalValue = getOriginalValue(component);
String value = getValue(component);
auditPersistenceService.audit(AuditRequest.builder()
@ -133,17 +133,21 @@ public class ComponentLogController implements ComponentLogResource {
}
private String getValue(Optional<Component> component) {
private String getValue(Optional<ComponentLogEntry> component) {
return component.map(Component::getComponentValues).stream().map(a -> a.stream().map(ComponentValue::getValue).collect(Collectors.joining(", "))).findFirst().orElse("");
return component.map(ComponentLogEntry::getComponentValues)
.stream()
.map(a -> a.stream().map(ComponentLogEntryValue::getValue).collect(Collectors.joining(", ")))
.findFirst()
.orElse("");
}
private static String getOriginalValue(Optional<Component> component) {
private static String getOriginalValue(Optional<ComponentLogEntry> component) {
return component.map(Component::getComponentValues)
return component.map(ComponentLogEntry::getComponentValues)
.stream()
.map(a -> a.stream().map(ComponentValue::getOriginalValue).collect(Collectors.joining(", ")))
.map(a -> a.stream().map(ComponentLogEntryValue::getOriginalValue).collect(Collectors.joining(", ")))
.findFirst()
.orElse("");
}

View File

@ -17,10 +17,12 @@ import org.springframework.web.bind.annotation.RestController;
import com.iqser.red.persistence.service.v1.external.api.impl.controller.DossierTemplateController;
import com.iqser.red.persistence.service.v1.external.api.impl.controller.StatusController;
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.Component;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.EntityReference;
import com.iqser.red.service.persistence.service.v2.api.external.model.Entity;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntityReference;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue;
import com.iqser.red.service.persistence.service.v2.api.external.model.Component;
import com.iqser.red.service.persistence.service.v2.api.external.model.ComponentValue;
import com.iqser.red.service.persistence.service.v2.api.external.model.EntityReference;
import com.iqser.red.service.persistence.service.v2.api.external.model.FileComponents;
import com.iqser.red.service.persistence.service.v2.api.external.model.FileComponentsList;
import com.iqser.red.service.persistence.service.v2.api.external.resource.ComponentResource;
@ -48,14 +50,17 @@ public class ComponentControllerV2 implements ComponentResource {
var componentLog = componentLogService.getComponentLog(dossierId, fileId, true);
Map<String, List<String>> basicComponent = componentLog.getComponents()
Map<String, List<String>> basicComponent = componentLog.getComponentLogEntries()
.stream()
.collect(Collectors.toMap(Component::getName, component -> component.getComponentValues().stream().map(ComponentValue::getValue).toList()));
.collect(Collectors.toMap(ComponentLogEntry::getName,
componentLogEntry -> componentLogEntry.getComponentValues().stream().map(ComponentLogEntryValue::getValue).toList()));
Map<String, List<com.iqser.red.service.persistence.service.v2.api.external.model.Component>> componentsDetails = Collections.emptyMap();
Map<String, Component> componentsDetails = Collections.emptyMap();
if (includeDetails) {
componentsDetails = componentLog.getComponents().stream().collect(Collectors.toMap(Component::getName, this::toComponentList));
componentsDetails = componentLog.getComponentLogEntries()
.stream()
.collect(Collectors.toMap(ComponentLogEntry::getName, entry -> Component.builder().name(entry.getName()).componentValues(toComponentList(entry)).build()));
}
return FileComponents.builder()
@ -68,31 +73,31 @@ public class ComponentControllerV2 implements ComponentResource {
}
private List<com.iqser.red.service.persistence.service.v2.api.external.model.Component> toComponentList(Component component) {
private List<ComponentValue> toComponentList(ComponentLogEntry componentLogEntry) {
return component.getComponentValues().stream().map(entry -> convert(entry, component.getName())).toList();
return componentLogEntry.getComponentValues().stream().map(this::convert).toList();
}
private com.iqser.red.service.persistence.service.v2.api.external.model.Component convert(ComponentValue componentValue, String name) {
private ComponentValue convert(ComponentLogEntryValue componentValue) {
return com.iqser.red.service.persistence.service.v2.api.external.model.Component.builder()
.name(name)
.componentRule(componentValue.getComponentRuleId())
.entityReferences(componentValue.getEntityReferences().stream().map(this::convertComponentEntityReference).toList())
.originalValues(List.of(componentValue.getOriginalValue()))
.values(List.of(componentValue.getValue()))
return ComponentValue.builder()
.valueDescription(componentValue.getValueDescription())
.componentRuleId(componentValue.getComponentRuleId())
.entityReferences(componentValue.getComponentLogEntityReferences().stream().map(this::convertComponentEntityReference).toList())
.originalValue(componentValue.getOriginalValue())
.value(componentValue.getValue())
.build();
}
private Entity convertComponentEntityReference(EntityReference entityReference) {
private EntityReference convertComponentEntityReference(ComponentLogEntityReference componentLogEntityReference) {
return Entity.builder()
.id(entityReference.getId())
.entityRule(entityReference.getEntityRuleId())
.type(entityReference.getType())
.pages(Set.of(entityReference.getPage()))
return EntityReference.builder()
.id(componentLogEntityReference.getId())
.entityRule(componentLogEntityReference.getEntityRuleId())
.type(componentLogEntityReference.getType())
.pages(Set.of(componentLogEntityReference.getPage()))
.build();
}

View File

@ -1,14 +1,14 @@
package com.iqser.red.service.persistence.service.v2.api.external.model;
import java.util.List;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@ -18,13 +18,6 @@ public class Component {
@JacksonXmlCData
private String name;
@JacksonXmlCData
private List<String> values;
@JacksonXmlCData
private List<String> originalValues;
@JacksonXmlCData
private String componentRule;
@Builder.Default
private List<Entity> entityReferences = new ArrayList<>();
private List<ComponentValue> componentValues;
}

View File

@ -0,0 +1,30 @@
package com.iqser.red.service.persistence.service.v2.api.external.model;
import java.util.List;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ComponentValue {
@JacksonXmlCData
String value;
@JacksonXmlCData
String originalValue;
@JacksonXmlCData
String valueDescription;
@JacksonXmlCData
String componentRuleId;
@JacksonXmlCData
List<EntityReference> entityReferences;
}

View File

@ -1,19 +1,20 @@
package com.iqser.red.service.persistence.service.v2.api.external.model;
import java.util.HashSet;
import java.util.Set;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashSet;
import java.util.Set;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Entity {
public class EntityReference {
private String id;
@JacksonXmlCData
@ -25,4 +26,5 @@ public class Entity {
@Builder.Default
private Set<Integer> pages = new HashSet<>();
}

View File

@ -1,15 +1,16 @@
package com.iqser.red.service.persistence.service.v2.api.external.model;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@ -28,6 +29,6 @@ public class FileComponents {
@Builder.Default
@JacksonXmlCData
private Map<String, List<Component>> componentDetails = new HashMap<>();
private Map<String, Component> componentDetails = new HashMap<>();
}

View File

@ -5,8 +5,8 @@ import java.util.Objects;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.Component;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides;
import lombok.RequiredArgsConstructor;
@ -31,12 +31,12 @@ public class ComponentLogService {
return componentLog;
}
List<Component> overriddenComponents = componentLog.getComponents()
List<ComponentLogEntry> overriddenComponentLogEntries = componentLog.getComponentLogEntries()
.stream()
.map(component -> applyOverride(component, componentsOverrides.getComponentOverrides().get(component.getName())))
.map(componentLogEntry -> applyOverride(componentLogEntry, componentsOverrides.getComponentOverrides().get(componentLogEntry.getName())))
.toList();
componentLog.setComponents(overriddenComponents);
componentLog.setComponentLogEntries(overriddenComponentLogEntries);
return componentLog;
}
@ -49,13 +49,13 @@ public class ComponentLogService {
}
private Component applyOverride(Component component, String override) {
private ComponentLogEntry applyOverride(ComponentLogEntry componentLogEntry, String override) {
if (Objects.isNull(override)) {
return component;
return componentLogEntry;
}
component.getComponentValues().forEach(componentValue -> componentValue.setValue(override));
return component;
componentLogEntry.getComponentValues().forEach(componentValue -> componentValue.setValue(override));
return componentLogEntry;
}
}

View File

@ -17,6 +17,6 @@ public class ComponentLog {
int analysisNumber;
long componentRulesVersion = -1;
List<Component> components = new ArrayList<>();
List<ComponentLogEntry> componentLogEntries = new ArrayList<>();
}

View File

@ -12,7 +12,7 @@ import lombok.experimental.FieldDefaults;
@AllArgsConstructor
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class EntityReference {
public class ComponentLogEntityReference {
String id;
String type;

View File

@ -12,9 +12,9 @@ import lombok.experimental.FieldDefaults;
@AllArgsConstructor
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class Component {
public class ComponentLogEntry {
String name;
List<ComponentValue> componentValues;
List<ComponentLogEntryValue> componentValues;
}

View File

@ -14,13 +14,13 @@ import lombok.experimental.FieldDefaults;
@AllArgsConstructor
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ComponentValue {
public class ComponentLogEntryValue {
String value;
String originalValue;
String valueDescription;
String componentRuleId;
List<EntityReference> entityReferences;
List<ComponentLogEntityReference> componentLogEntityReferences;
}

View File

@ -32,12 +32,14 @@ public class EntityLogEntry {
boolean imported;
List<Integer> containingNodeId;
String closestHeadline;
String section;
float[] color;
@Builder.Default
List<Position> positions = new ArrayList<>();
int sectionNumber;
String textBefore;
String textAfter;