private List<Event> retrieveGrouped(List<String> eventActions, User user, Date startTime, Date stopTime, Set<Integer> appIds, Set<Integer> teamIds, Set<Integer> vulnIds, Set<Integer> defectIds) {
Criteria criteria = getEventCriteria(eventActions, user, startTime, stopTime, appIds, teamIds, vulnIds, defectIds);
criteria.setProjection(Projections.projectionList()
.add(Projections.count("id").as("groupCount"))
.add(Projections.groupProperty("eventAction").as("eventAction"))
.add(Projections.groupProperty("scan").as("scan"))
.add(Projections.groupProperty("deletedScanId").as("deletedScanId"))
.add(Projections.min("date"), "date")
.add(Projections.groupProperty("application"), "application")
.add(Projections.groupProperty("user"), "user")
);
criteria.setResultTransformer(Transformers.aliasToBean(Event.class));
List<Event> events = criteria.list();
for (Event event : events) {
EventAction eventAction = event.getEventActionEnum();
EventAction groupedEventAction = eventAction.getGroupedEventAction();
String groupedEventActionString = groupedEventAction.name();
event.setEventAction(groupedEventActionString);
}
return events;
}