"catalog.search.distributedSearch.searchTimeout");
}
message = Val.chkStr(message);
if(!"".equals(message)) {
AtomEntry ae = new AtomFeedWriter(this.getPrintWriter()).new AtomEntry();
ae.setId(event.getSearchStatus().getRid());
ae.setTitle(ae.getId() + " " + message);
ResourceLink link = new ResourceLink();
link.setLabel(this.getMessageBroker().retrieveMessage(
"catalog.search.distributedSearch.linkLabel"));
link.setUrl(this.getRestUrl() + "&rid=" + event.getSearchStatus().getRid());
ae.addResourceLink(link);
if(event.getSource() instanceof SearchThread) {
SearchThread searchThread = (SearchThread) event.getSource();
ASearchEngine engine = searchThread.getSearchEngine();
try {
ae.setSummary(engine.getKeyAbstract());
} catch (SearchException e) {
LOG.log(Level.FINE,"Could not get summary", e.getMessage());
e.printStackTrace();
}
}
StringBuffer bCustomXml = new StringBuffer();
bCustomXml
.append("<gpt:distributedSearch>")
.append("<gpt:hits>").append(results).append("</gpt:hits>");
if (event.getSearchStatus().getStatusType().equals(
SearchStatus.STATUSTYPE_COMPLETED)) {
long time = System.currentTimeMillis()- event.getSearchStatus()
.getStartTimestamp().getTime();
bCustomXml.append("<gpt:msTime>").append(time).append("</gpt:msTime>");
} else if (event.getSearchStatus().getStatusType().equals(
SearchStatus.STATUSTYPE_FAILED) ||
event.getSearchStatus().getStatusType().equals(
SearchStatus.STATUSTYPE_SEARCH_TIMEOUT)) {
bCustomXml.append("<gpt:error>")
.append(Val.escapeXml(message))
.append("</gpt:error>");
}
bCustomXml.append("</gpt:distributedSearch>");
ae.setCustomElements(bCustomXml.toString());
PrintWriter writer = this.getPrintWriter();
synchronized(writer) {
try {
ae.WriteTo(writer);
writer.flush();
} catch(Exception e) {
LOG.log(Level.INFO, "Error while flushing writer", e);
}
}