package org.ovirt.engine.ui.uicommonweb.models.storage; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.action.ExportRepoImageParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; import org.ovirt.engine.core.common.businessentities.storage.StorageType; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; public class ExportRepoImageModel extends ImportExportRepoImageBaseModel { public void init(List<DiskImage> diskImages) { setDiskImages(diskImages); updateStorageDomains(null); } public void setDiskImages(List<DiskImage> diskImages) { ArrayList<EntityModel> entities = new ArrayList<>(); for (DiskImage i : diskImages) { entities.add(new EntityModel(i)); } setEntities(entities); } @Override protected List<StorageDomain> filterStorageDomains(List<StorageDomain> storageDomains) { List<StorageDomain> availableStorageDomains = new ArrayList<>(); // Take only GLANCE domains for (StorageDomain storageDomainItem : storageDomains) { if (storageDomainItem.getStorageType() == StorageType.GLANCE) { availableStorageDomains.add(storageDomainItem); } } // Sorting by name Collections.sort(availableStorageDomains, new NameableComparator()); return availableStorageDomains; } @Override protected String getNoDomainAvailableMessage() { return constants.noExternalImageProviderHasBeenConfiguredMsg(); } @Override public void executeCommand(UICommand command) { super.executeCommand(command); startProgress(); ArrayList<VdcActionParametersBase> actionParameters = new ArrayList<>(); for (EntityModel entity : getEntities()) { actionParameters.add(new ExportRepoImageParameters( ((DiskImage) entity.getEntity()).getId(), // Source getStorageDomain().getSelectedItem().getId()) // Destination ); } Frontend.getInstance().runMultipleAction(VdcActionType.ExportRepoImage, actionParameters, result -> { ImportExportRepoImageBaseModel model = (ImportExportRepoImageBaseModel) result.getState(); model.stopProgress(); model.cancel(); }, this); } @Override public boolean isImportModel() { return false; } }