Skip to content
This repository has been archived by the owner on Jan 8, 2019. It is now read-only.

Commit

Permalink
check if the message field contains highlighting information
Browse files Browse the repository at this point in the history
guard against an exception if it isn't highlighted.
fixes #827
  • Loading branch information
bernd authored and kroepke committed Jul 4, 2014
1 parent d108304 commit 639492f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 7 deletions.
5 changes: 3 additions & 2 deletions app/models/api/results/HighlightedField.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class HighlightedField {
private final MessageResult messageResult;
Expand Down Expand Up @@ -32,8 +33,8 @@ public HighlightedField(final MessageResult messageResult, final String field) {
this.field = field;
}

public List<FieldChunk> getChunks() {
final String message = (String) messageResult.getFields().get(field);
public List<FieldChunk> getChunks(final Map<String, Object> fields) {
final String message = (String) fields.get(field);
final List<FieldChunk> list = new ArrayList<>();
final List<HighlightRange> rangesList = messageResult.getHighlightRanges().get(field);

Expand Down
4 changes: 2 additions & 2 deletions app/models/api/results/MessageResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ public Map<String, List<HighlightRange>> getHighlightRanges() {
return highlightRanges;
}

public boolean hasHighlightedFields() {
return highlightRanges != null;
public boolean hasHighlightedField(String field) {
return highlightRanges != null && highlightRanges.containsKey(field);
}

public HighlightedField getHighlightedField(String field) {
Expand Down
13 changes: 10 additions & 3 deletions app/views/search/results.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -377,9 +377,9 @@ <h2>
class="result-td-36cd38f49b9afa08222c0dc9ebfe35eb">@r.getFields.get("source")</td>
<td @if(!(selectedFields.contains("message") || search.getOrder.getField.equals("message"))) { style="display: none;" }
class="messages-message result-td-78e731027d8fd50ed642340b7c9a63b3">
@if(r.hasHighlightedFields) {
@if(r.hasHighlightedField("message")) {
@* Need to use map{} here because a for() loop would produce unwanted newlines and thus extra spaces in the message. *@
@{r.getHighlightedField("message").getChunks.map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}}
@{r.getHighlightedField("message").getChunks(r.getFields).map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}}
} else {
@r.getFields.get("message")
}
Expand All @@ -389,7 +389,14 @@ <h2>
@if(!f.isStandardSelected) {
<td class="result-td-@f.getHash()"
@if(!(selectedFields.contains(f.getName) || search.getOrder.getField.equals(f.getName))) { style="display: none;" }
>@r.getFormattedFields.get(f.getName)</td>
>
@if(r.hasHighlightedField(f.getName)) {
@* Need to use map{} here because a for() loop would produce unwanted newlines and thus extra spaces in the message. *@
@{r.getHighlightedField(f.getName).getChunks(r.getFormattedFields).map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}}
} else {
@r.getFormattedFields.get(f.getName)
}
</td>
}
}
</tr>
Expand Down

0 comments on commit 639492f

Please # to comment.