package org.ovirt.engine.ui.uicommonweb.models.storage;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.core.common.interfaces.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
@SuppressWarnings("unused")
public class StorageIsoListModel extends SearchableListModel implements IFrontendMultipleQueryAsyncCallback
{
public Iterable getItems()
{
return items;
}
public void setItems(Iterable value)
{
if (items != value)
{
EntityModel lastSelectedItem = (EntityModel)getSelectedItem();
java.util.ArrayList<EntityModel> lastSelectedItems = (java.util.ArrayList<EntityModel>)getSelectedItems();
ItemsChanging(value, items);
items = value;
getItemsChangedEvent().raise(this, EventArgs.Empty);
OnPropertyChanged(new PropertyChangedEventArgs("Items"));
selectedItem = null;
if (getSelectedItems() != null)
{
getSelectedItems().clear();
}
if (lastSelectedItem != null)
{
EntityModel newSelectedItem = null;
java.util.ArrayList<EntityModel> newItems = (java.util.ArrayList<EntityModel>)value;
if (newItems != null)
{
for (EntityModel newItem : newItems)
{
// Search for selected item
if (newItem.getHashName().equals(lastSelectedItem.getHashName()))
{
newSelectedItem = newItem;
break;
}
else
{
// Search for selected items
for (EntityModel item : lastSelectedItems)
{
if (newItem.getHashName().equals(item.getHashName()))
{
selectedItems.add(newItem);
}
}
}
}
}
if (newSelectedItem != null)
{
selectedItem = newSelectedItem;
selectedItems.add(newSelectedItem);
}
}
OnSelectedItemChanged();
}
}
public StorageIsoListModel()
{
setTitle("Images");
setIsTimerDisabled(true);
}
@Override
protected void OnEntityChanged()
{
super.OnEntityChanged();
if (getIsAvailable())
{
getSearchCommand().Execute();
}
}
@Override
public void setEntity(Object value)
{
if (value == null || !value.equals(getEntity())) {
super.setEntity(value);
}
}
@Override
public void Search()
{
if (getEntity() != null)
{
super.Search();
}
else
{
setItems(null);
}
}
@Override
protected void SyncSearch()
{
if (getEntity() == null)
{
return;
}
super.SyncSearch();
if (getProgress() != null)
{
return;
}
storage_domains storageDomain = (storage_domains)getEntity();
GetAllIsoImagesListParameters tempVar = new GetAllIsoImagesListParameters();
tempVar.setStorageDomainId(storageDomain.getid());
tempVar.setForceRefresh(true);
tempVar.setRefresh(getIsQueryFirstTime());
GetAllIsoImagesListParameters parameters = tempVar;
StartProgress(null);
Frontend.RunMultipleQueries(new java.util.ArrayList<VdcQueryType>(java.util.Arrays.asList(new VdcQueryType[] { VdcQueryType.GetAllIsoImagesList, VdcQueryType.GetAllFloppyImagesList })), new java.util.ArrayList<VdcQueryParametersBase>(java.util.Arrays.asList(new VdcQueryParametersBase[] { parameters, parameters })), this);
}
@Override
protected void AsyncSearch()
{
super.AsyncSearch();
SyncSearch();
}
public void Executed(FrontendMultipleQueryAsyncResult result)
{
StopProgress();
java.util.ArrayList<EntityModel> items = new java.util.ArrayList<EntityModel>();
VdcQueryReturnValue isoReturnValue = result.getReturnValues().get(0);
java.util.ArrayList<RepoFileMetaData> isoImages = isoReturnValue.getSucceeded() ? (java.util.ArrayList<RepoFileMetaData>)isoReturnValue.getReturnValue() : new java.util.ArrayList<RepoFileMetaData>();
for (RepoFileMetaData item : isoImages)
{
EntityModel model = new EntityModel();
model.setHashName(item.getRepoFileName());
model.setTitle(item.getRepoFileName());
model.setEntity("CD/DVD");
items.add(model);
}
VdcQueryReturnValue floppyReturnValue = result.getReturnValues().get(1);
java.util.ArrayList<RepoFileMetaData> floppyImages = floppyReturnValue.getSucceeded() ? (java.util.ArrayList<RepoFileMetaData>)floppyReturnValue.getReturnValue() : new java.util.ArrayList<RepoFileMetaData>();
for (RepoFileMetaData item : floppyImages)
{
EntityModel model = new EntityModel();
model.setHashName(item.getRepoFileName());
model.setTitle(item.getRepoFileName());
model.setEntity("Floppy");
items.add(model);
}
UpdateIsoModels(items);
setIsEmpty(items.isEmpty());
}
private void UpdateIsoModels(java.util.ArrayList<EntityModel> items)
{
java.util.ArrayList<EntityModel> newItems = new java.util.ArrayList<EntityModel>();
if (getItems() != null)
{
java.util.ArrayList<EntityModel> oldItems = Linq.ToList((Iterable<EntityModel>)getItems());
for (EntityModel newItem : items)
{
boolean isItemUpdated = false;
for (EntityModel item : oldItems)
{
if (newItem.getHashName().equals(item.getHashName()))
{
item.setTitle(newItem.getTitle());
item.setEntity(newItem.getEntity());
newItems.add(item);
isItemUpdated = true;
break;
}
}
if (!isItemUpdated)
{
newItems.add(newItem);
}
}
}
setItems(newItems.isEmpty() ? items : newItems);
}
@Override
protected String getListName() {
return "StorageIsoListModel";
}
}