Merge branch 'RED-9760-anyheadline-4.1' into 'release/4.348.x'
RED-9760: Changed anyHeadlineContains to act like in the previous version See merge request redactmanager/redaction-service!473
This commit is contained in:
commit
0ef4087b36
@ -1,10 +1,12 @@
|
|||||||
package com.iqser.red.service.redaction.v1.server.model.document.nodes;
|
package com.iqser.red.service.redaction.v1.server.model.document.nodes;
|
||||||
|
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity;
|
import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.document.DocumentTree;
|
import com.iqser.red.service.redaction.v1.server.model.document.DocumentTree;
|
||||||
@ -33,7 +35,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = true)
|
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = true)
|
||||||
public class Section extends AbstractSemanticNode {
|
public class Section extends AbstractSemanticNode {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NodeType getType() {
|
public NodeType getType() {
|
||||||
|
|
||||||
@ -60,7 +61,6 @@ public class Section extends AbstractSemanticNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|
||||||
@ -85,7 +85,14 @@ public class Section extends AbstractSemanticNode {
|
|||||||
*/
|
*/
|
||||||
public boolean anyHeadlineContainsString(String value) {
|
public boolean anyHeadlineContainsString(String value) {
|
||||||
|
|
||||||
return streamAllSubNodesOfType(NodeType.HEADLINE).anyMatch(h -> h.containsString(value)) || getHeadline().containsString(value);
|
boolean found = streamAllSubNodesOfType(NodeType.HEADLINE).anyMatch(h -> h.containsString(value)) || getHeadline().containsString(value);
|
||||||
|
if (!found) {
|
||||||
|
List<Headline> previousHeadlines = new ArrayList<>();
|
||||||
|
headlinesByPreviousSibling(this, previousHeadlines);
|
||||||
|
return previousHeadlines.stream()
|
||||||
|
.anyMatch(headline -> headline.containsString(value));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -97,8 +104,37 @@ public class Section extends AbstractSemanticNode {
|
|||||||
*/
|
*/
|
||||||
public boolean anyHeadlineContainsStringIgnoreCase(String value) {
|
public boolean anyHeadlineContainsStringIgnoreCase(String value) {
|
||||||
|
|
||||||
return streamAllSubNodesOfType(NodeType.HEADLINE).anyMatch(h -> h.containsStringIgnoreCase(value)) || getHeadline().containsStringIgnoreCase(value);
|
boolean found = streamAllSubNodesOfType(NodeType.HEADLINE).anyMatch(h -> h.containsStringIgnoreCase(value)) || getHeadline().containsStringIgnoreCase(value);
|
||||||
|
if (!found) {
|
||||||
|
List<Headline> previousHeadlines = new ArrayList<>();
|
||||||
|
headlinesByPreviousSibling(this, previousHeadlines);
|
||||||
|
return previousHeadlines.stream()
|
||||||
|
.anyMatch(headline -> headline.containsStringIgnoreCase(value));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void headlinesByPreviousSibling(SemanticNode section, List<Headline> found) {
|
||||||
|
|
||||||
|
if (section.getPreviousSibling()
|
||||||
|
.isPresent() && section.getPreviousSibling()
|
||||||
|
.get() instanceof Section previousSection) {
|
||||||
|
|
||||||
|
var subnodes = previousSection.streamAllSubNodes()
|
||||||
|
.toList();
|
||||||
|
if (subnodes.size() == 1 && subnodes.get(0) instanceof Headline previousHeadline) {
|
||||||
|
found.add(previousHeadline);
|
||||||
|
headlinesByPreviousSibling(previousSection, found);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (section.getPreviousSibling()
|
||||||
|
.isPresent() && section.getPreviousSibling()
|
||||||
|
.get() instanceof Headline previousHeadline) {
|
||||||
|
found.add(previousHeadline);
|
||||||
|
headlinesByPreviousSibling(previousHeadline, found);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user