package org.ovirt.engine.core.dao; import java.sql.Timestamp; import java.util.Collection; import java.util.Date; import java.util.LinkedList; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfoStatus; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.GuidUtils; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class StorageDomainOvfInfoImpl extends DefaultGenericDao<StorageDomainOvfInfo, Guid> implements StorageDomainOvfInfoDao{ public StorageDomainOvfInfoImpl() { super("StorageDomainOvfInfo"); } @Override public void updateOvfUpdatedInfo(Collection<Guid> ids, StorageDomainOvfInfoStatus status, StorageDomainOvfInfoStatus exceptStatus) { getCallsHandler().executeModification("UpdateOvfUpdatedInfo", getCustomMapSqlParameterSource() .addValue("storage_domains_ids", StringUtils.join(ids, ',')) .addValue("status", status.getValue()) .addValue("except_status", exceptStatus.getValue())); } @Override public List<Guid> loadStorageDomainIdsForOvfIds(Collection<Guid> ovfIds) { return getCallsHandler().executeReadList("LoadStorageDomainsForOvfIds", createGuidMapper(), getCustomMapSqlParameterSource().addValue("ovfs_ids", StringUtils.join(ovfIds, ","))); } private static final RowMapper<StorageDomainOvfInfo> storageDomainInfoRowMapper = (resultSet, i) -> { StorageDomainOvfInfo toReturn = new StorageDomainOvfInfo(); toReturn.setStorageDomainId(getGuid(resultSet, "storage_domain_id")); toReturn.setStatus(StorageDomainOvfInfoStatus.forValue(resultSet.getInt("status"))); toReturn.setOvfDiskId(getGuid(resultSet, "ovf_disk_id")); Timestamp timestamp = resultSet.getTimestamp("last_updated"); if (timestamp != null) { toReturn.setLastUpdated(new Date(timestamp.getTime())); } String storedOvfs = resultSet.getString("stored_ovfs_ids"); if (storedOvfs != null && !storedOvfs.isEmpty()) { toReturn.setStoredOvfIds(GuidUtils.getGuidListFromString(resultSet.getString("stored_ovfs_ids"))); } else { toReturn.setStoredOvfIds(new LinkedList<>()); } return toReturn; }; @Override protected MapSqlParameterSource createFullParametersMapper(StorageDomainOvfInfo entity) { return createIdParameterMapper(entity.getId()).addValue("storage_domain_id", entity.getStorageDomainId()) .addValue("status", entity.getStatus().getValue()) .addValue("last_updated", entity.getLastUpdated()) .addValue("stored_ovfs_ids", StringUtils.join(entity.getStoredOvfIds(), ',')); } public List<StorageDomainOvfInfo> getAllForDomain(Guid guid) { return getCallsHandler().executeReadList("LoadStorageDomainInfoByDomainId", storageDomainInfoRowMapper, getCustomMapSqlParameterSource().addValue("storage_domain_id", guid)); } @Override public StorageDomainOvfInfo get(Guid guid) { return getCallsHandler().executeRead("LoadStorageDomainInfoByDiskId", storageDomainInfoRowMapper, getCustomMapSqlParameterSource().addValue("disk_id", guid)); } @Override public List<StorageDomainOvfInfo> getAll() { throw new UnsupportedOperationException(); } @Override protected MapSqlParameterSource createIdParameterMapper(Guid guid) { return getCustomMapSqlParameterSource().addValue("ovf_disk_id", guid); } @Override protected RowMapper<StorageDomainOvfInfo> createEntityRowMapper() { return storageDomainInfoRowMapper; } }