package org.ovirt.engine.core.bll;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Inject;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.core.common.businessentities.EventSubscriber;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.dao.EventDao;
public class GetEventSubscribersBySubscriberIdGroupedQuery<P extends IdQueryParameters>
extends QueriesCommandBase<P> {
@Inject
private EventDao eventDao;
public GetEventSubscribersBySubscriberIdGroupedQuery(P parameters) {
super(parameters);
}
@Override
protected void executeQueryCommand() {
List<EventSubscriber> list = eventDao.getAllForSubscriber(getParameters().getId());
if (list.size() > 0) {
HashMap<String, EventSubscriber> dic = new HashMap<>();
for (EventSubscriber ev : list) {
if (dic.containsKey(ev.getEventUpName())) {
dic.get(ev.getEventUpName()).setTagName(
dic.get(ev.getEventUpName()).getTagName() + ", " + ev.getTagName());
} else {
dic.put(ev.getEventUpName(), ev);
}
}
ArrayList<EventSubscriber> groupedList = new ArrayList<>(dic.values());
for (EventSubscriber event : groupedList) {
event.setTagName(StringUtils.strip(event.getTagName(), ", "));
}
getQueryReturnValue().setReturnValue(groupedList);
} else {
getQueryReturnValue().setReturnValue(list);
}
}
}