package net.techreadiness.plugin.persistence.dao;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import net.techreadiness.persistence.dao.BaseDAOImpl;
import net.techreadiness.plugin.persistence.domain.SnapshotWindowDO;
import net.techreadiness.plugin.service.reports.ReportsService;
import org.springframework.stereotype.Repository;
@Repository
public class SnapshotWindowDaoImpl extends BaseDAOImpl<SnapshotWindowDO> implements SnapshotWindowDao {
@Override
public SnapshotWindowDO findByScopeAndName(Long scopeId, String window) {
TypedQuery<SnapshotWindowDO> query = em.createQuery(
"select swdo from SnapshotWindowDO swdo where swdo.scope.scopeId = :scopeId and swdo.name = :window ",
SnapshotWindowDO.class);
query.setParameter("scopeId", scopeId);
query.setParameter("window", window);
return getSingleResult(query);
}
@Override
public List<SnapshotWindowDO> findUnexecutedSnapshots() {
TypedQuery<SnapshotWindowDO> query = em.createQuery(
"select swdo from SnapshotWindowDO swdo where swdo.executeDate is null", SnapshotWindowDO.class);
return getResultList(query);
}
@Override
public List<SnapshotWindowDO> findActiveSnapshots(Long scopeId) {
TypedQuery<SnapshotWindowDO> query = em.createQuery(
"select swdo from SnapshotWindowDO swdo where swdo.executeDate is not null " + " and (swdo.name = '"
+ ReportsService.DEFAULT_SNAPSHOT_WINDOW + "'" + " or swdo.visible = 1) "
+ " and swdo.scope.scopeId = :scopeId " + " order by swdo.snapshotWindowId desc ",
SnapshotWindowDO.class);
query.setParameter("scopeId", scopeId);
return getResultList(query);
}
@Override
public void delete(Long snapshotWindowId) {
Query query = em.createNativeQuery("call readiness.snapshot_delete(:snapshotWindowId)");
query.setParameter("snapshotWindowId", snapshotWindowId);
query.executeUpdate();
}
}