package org.ovirt.engine.core.dao;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.FileTypeExtension;
import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainType;
import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
import org.ovirt.engine.core.common.businessentities.VDSStatus;
import org.ovirt.engine.core.compat.Guid;
/**
* <code>RepoFileMetaDataDao</code> defines a type for performing CRUD operations on instances of
* {@link RepoFileMetaData}.
*
*/
public interface RepoFileMetaDataDAO extends DAO {
/**
* Remove repository file list from cache table, of domain with the specified id.
*
* @param id - The domain id.
* @param filetype - The file Extension, which should be removed.
*/
void removeRepoDomainFileList(Guid id, FileTypeExtension filetype);
/**
* Add repository file to cache table.
*
* @param map - The repository file meta data to insert.
*/
public void addRepoFileMap(RepoFileMetaData map);
/**
* Returns a list of repository files with specific file extension from storage domain id with specific status. If
* no repository found, will return an empty list.
*/
public List<RepoFileMetaData> getRepoListForStorageDomainAndStoragePool(Guid storagePoolId, Guid storageDomainId,
FileTypeExtension fileType);
/**
* Returns a list of repository files with specific file extension from storage domain id.<BR/>
* If no repository found, will return an empty list.
*/
public List<RepoFileMetaData> getRepoListForStorageDomain(Guid storageDomainId,
FileTypeExtension fileType);
/**
* Returns list of the oldest last refreshed repository files,
* for each storage pool, storage domain and file type in all System,
* which meets the same storage domain status, type and SPM status.
*/
public List<RepoFileMetaData> getAllRepoFilesForAllStoragePools(StorageDomainType storageDomainType,
StoragePoolStatus storagePoolStatus, StorageDomainStatus storageDomainStatus,
VDSStatus vdsStatus);
}