package org.ovirt.engine.api.restapi.resource;
import java.util.HashMap;
import org.ovirt.engine.api.model.Hook;
import org.ovirt.engine.api.model.Hooks;
import org.ovirt.engine.api.model.Host;
import org.ovirt.engine.api.resource.HostHookResource;
import org.ovirt.engine.api.resource.HostHooksResource;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
public class BackendHostHooksResource extends AbstractBackendCollectionResource<Hook, Object> implements HostHooksResource {
public BackendHostHooksResource(String hostId) {
super(Hook.class, Object.class);
this.hostId = hostId;
}
private String hostId;
@Override
public Hooks list() {
@SuppressWarnings("unchecked")
HashMap<String, HashMap<String, HashMap<String, String>>> hooksMap =
getEntity(HashMap.class, VdcQueryType.GetVdsHooksById,
new IdQueryParameters(asGuid(hostId)), null);
return mapCollection(hooksMap);
}
private Hooks mapCollection(HashMap<String, HashMap<String, HashMap<String, String>>> hooksMap) {
Hooks hooks = getMapper(HashMap.class, Hooks.class).map(hooksMap, null);
for (Hook hook : hooks.getHooks()) {
addLinks(hook);
}
return hooks;
}
@Override
public HostHookResource getHookResource(String id) {
return inject(new BackendHostHookResource(id, this));
}
@Override
protected Hook addParents(Hook model) {
Host host = new Host();
host.setId(hostId);
model.setHost(host);
return super.addParents(model);
}
}