package com.onaro.sanscreen.client.view.reservations.functions; import com.onaro.client.leekui.runtime.OnaroAdapterUtils; import com.onaro.client.swing.table.functional.IFunction; import com.onaro.sanscreen.client.view.common.functions.AbstractContextAwareBulkFunction; import com.onaro.sanscreen.client.view.refresh.RefreshUtils; import com.onaro.sanscreen.server.interfaces.ServerInterfacesUtils; import com.onaro.sanscreen.server.interfaces.data.Context; import com.onaro.sanscreen.server.interfaces.data.reservation.ReservationEligibility; import com.onaro.sanscreen.server.interfaces.remote.ReservationRemote; import com.onaro.sanscreen.server.reservation.query.data.Reservation; import org.eclipse.core.runtime.IAdaptable; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * This is a bulk function to load the preference column data for storage main view. */ public class GetStoragePreferenceBulkFunction extends AbstractContextAwareBulkFunction { private Set selectedHosts; private Long tierId; private Reservation.Type reservationType; public GetStoragePreferenceBulkFunction(Set selectedHosts, Long tierId, Reservation.Type reservationType){ this.selectedHosts = selectedHosts; this.tierId = tierId; this.reservationType = reservationType; } public interface IGetStoragePreferenceBulkFunction extends IFunction { } @Override protected void evaluate(Collection inputs, Context context, Map outputMap) throws InterruptedException, InvocationTargetException { Map storageReservationEligibilityMap; try { ReservationRemote remote = ServerInterfacesUtils.getReservationRemote(); switch(reservationType){ case PATH: storageReservationEligibilityMap = remote.getStorageEligibilityForPathReservation(selectedHosts, tierId); break; case STORAGE_POOL: storageReservationEligibilityMap = remote.getStorageEligibilityForStoragePoolReservation(selectedHosts, tierId); break; default : //just initialize an empty map. This case is currently never used storageReservationEligibilityMap = new HashMap(); } } catch (Exception e) { throw new InvocationTargetException(e); } OnaroAdapterUtils.getAdaptableToValueMap(inputs, Long.class, storageReservationEligibilityMap, outputMap); } @Override protected RefreshUtils.MethodDescriptor getMethodCalled() { return new RefreshUtils.MethodDescriptor(ReservationRemote.class, "getStorageEligibilityForPathReservation", Set.class); //$NON-NLS-1$ } }