@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { // Make sure to escape any problematic characters here String sourceType = ClientUtils.escapeQueryChars(config.getSourceTypeField()); String baseQuery = groupRequest.getQuery(); String adjustedQuery = baseQuery + " -" + MetaAlertConstants.METAALERT_FIELD + ":[* TO *]" + " -" + sourceType + ":" + MetaAlertConstants.METAALERT_TYPE; LOG.debug("MetaAlert group adjusted query: {}", adjustedQuery); groupRequest.setQuery(adjustedQuery); return solrSearchDao.group(groupRequest); } }
@Override public Document updateMetaAlertStatus(String metaAlertGuid, MetaAlertStatus status) throws IOException { Document metaAlert = retrieveLatestDao .getLatest(metaAlertGuid, MetaAlertConstants.METAALERT_TYPE); if (metaAlert == null) { throw new IOException(String.format("Unable to update meta alert status. Meta alert with guid %s cannot be found.", metaAlertGuid)); } String currentStatus = (String) metaAlert.getDocument().get(MetaAlertConstants.STATUS_FIELD); boolean metaAlertUpdated = !status.getStatusString().equals(currentStatus); if (metaAlertUpdated) { List<GetRequest> getRequests = new ArrayList<>(); @SuppressWarnings("unchecked") List<Map<String, Object>> currentAlerts = (List<Map<String, Object>>) metaAlert.getDocument() .get(MetaAlertConstants.ALERT_FIELD); currentAlerts.stream() .forEach(currentAlert -> getRequests.add(new GetRequest((String) currentAlert.get(GUID), (String) currentAlert.get(config.getSourceTypeField())))); Iterable<Document> alerts = retrieveLatestDao.getAllLatest(getRequests); Map<Document, Optional<String>> updates = buildStatusChangeUpdates(metaAlert, alerts, status); update(updates); } return metaAlert; }
MetaAlertConstants.STATUS_FIELD + ":" + MetaAlertStatus.ACTIVE.getStatusString(); String metaalertTypeClause = config.getSourceTypeField() + ":" + MetaAlertConstants.METAALERT_TYPE; if (fieldList.contains("*") || fieldList.contains(config.getSourceTypeField())) { List<String> metaalertGuids = new ArrayList<>(); for (SearchResult result : results.getResults()) { if (result.getSource().get(config.getSourceTypeField()) .equals(MetaAlertConstants.METAALERT_TYPE)) {
metaAlert.getDocument().put(getConfig().getSourceTypeField(), MetaAlertConstants.METAALERT_TYPE);
.put(getConfig().getSourceTypeField(), MetaAlertConstants.METAALERT_TYPE);
String guidClause = Constants.GUID + ":" + guid; String fullClause = "{!parent which=" + activeClause + "}" + guidClause; String metaalertTypeClause = config.getSourceTypeField() + ":" + MetaAlertConstants.METAALERT_TYPE; SolrQuery solrQuery = new SolrQuery() .setQuery(fullClause)
@SuppressWarnings("unchecked") @Override public Document createMetaAlert(MetaAlertCreateRequest request) throws InvalidCreateException, IOException { List<GetRequest> alertRequests = request.getAlerts(); if (alertRequests.isEmpty()) { return null; } // Retrieve the documents going into the meta alert and build it Iterable<Document> alerts = indexDao.getAllLatest(alertRequests); Document metaAlert = buildCreateDocument(alerts, request.getGroups(), MetaAlertConstants.ALERT_FIELD); metaAlert.getDocument() .put(getConfig().getSourceTypeField(), MetaAlertConstants.METAALERT_TYPE); return metaAlert; }