/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.model.dao;
import java.net.URI;
import java.util.List;
import com.emc.storageos.db.client.constraint.NamedElementQueryResultList.NamedElement;
import com.emc.storageos.db.client.model.ActionableEvent;
import com.google.common.collect.Lists;
public class ActionableEventFinder extends TenantResourceFinder<ActionableEvent> {
protected static final String RESOURCE_COLUMN_NAME = "resource";
protected static final String AFFECTED_RESOURCES_COLUMN_NAME = "affectedResources";
public ActionableEventFinder(DBClientWrapper client) {
super(ActionableEvent.class, client);
}
public List<ActionableEvent> findPendingByResource(URI resourceId) {
List<NamedElement> events = findIdsByResource(resourceId);
List<ActionableEvent> result = Lists.newArrayList();
for (ActionableEvent event : findByIds(toURIs(events))) {
if (event != null && event.getEventStatus() != null
&& (event.getEventStatus().equalsIgnoreCase(ActionableEvent.Status.pending.name().toString())
|| event.getEventStatus().equalsIgnoreCase(ActionableEvent.Status.failed.name().toString()))) {
result.add(event);
}
}
return result;
}
public List<NamedElement> findIdsByResource(URI resourceId) {
return client.findBy(ActionableEvent.class, RESOURCE_COLUMN_NAME, resourceId);
}
public List<ActionableEvent> findPendingByAffectedResources(URI affectedResourceId) {
List<NamedElement> events = findIdsByAffectedResources(affectedResourceId);
List<ActionableEvent> result = Lists.newArrayList();
for (ActionableEvent event : findByIds(toURIs(events))) {
if (event != null && event.getEventStatus() != null
&& (event.getEventStatus().equalsIgnoreCase(ActionableEvent.Status.pending.name().toString())
|| event.getEventStatus().equalsIgnoreCase(ActionableEvent.Status.failed.name().toString()))) {
result.add(event);
}
}
return result;
}
public List<NamedElement> findIdsByAffectedResources(URI affectedResourceId) {
return client.findBy(ActionableEvent.class, AFFECTED_RESOURCES_COLUMN_NAME, affectedResourceId);
}
}