package net.techreadiness.plugin.action.task.snapshot.edit; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import net.techreadiness.persistence.criteriaquery.Criteria; import net.techreadiness.persistence.criteriaquery.CriteriaQuery; import net.techreadiness.persistence.criteriaquery.QueryResult; import net.techreadiness.plugin.persistence.domain.SnapshotWindowDO; import net.techreadiness.plugin.service.object.SnapshotWindow; import net.techreadiness.service.common.DataGrid; import net.techreadiness.service.common.DataGridItemProviderImpl; import net.techreadiness.service.object.mapping.MappingService; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @Component @org.springframework.context.annotation.Scope("prototype") @Transactional(readOnly = true) public class SnapshotWindowsByIdItemProviderImpl extends DataGridItemProviderImpl<SnapshotWindow> implements SnapshotWindowsByIdItemProvider, Serializable { private static final long serialVersionUID = 1L; private List<SnapshotWindow> snapshotWindows; @Inject MappingService mappingService; @Inject CriteriaQuery<SnapshotWindowDO> criteriaQuery; @Override public List<SnapshotWindow> getPage(DataGrid<SnapshotWindow> grid) { Criteria criteria = createCriteria(grid); StringBuilder sb = new StringBuilder("select sw.* from readiness.snapshot_window sw "); List<Long> iDs = new ArrayList<>(); for (SnapshotWindow sw : snapshotWindows) { iDs.add(sw.getId()); } sb.append(" where sw.snapshot_window_id in(:ids)"); criteria.getParameters().putAll("ids", iDs); criteriaQuery.setBaseSubSelect(sb.toString()); QueryResult<SnapshotWindowDO> result = criteriaQuery.getData(criteria, SnapshotWindowDO.class); setTotalNumberOfItems(result.getTotalRowCount()); return mappingService.mapFromDOList(result.getRows()); } @Override public void setSnapshotWindows(List<SnapshotWindow> snapshots) { snapshotWindows = snapshots; } }