1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.dao;
20
21 import java.time.OffsetDateTime;
22 import javax.persistence.Query;
23 import org.apache.syncope.core.persistence.api.dao.BatchDAO;
24 import org.apache.syncope.core.persistence.api.entity.Batch;
25 import org.apache.syncope.core.persistence.jpa.entity.JPABatch;
26 import org.springframework.transaction.annotation.Transactional;
27
28 @Transactional(rollbackFor = Throwable.class)
29 public class JPABatchDAO extends AbstractDAO<Batch> implements BatchDAO {
30
31 @Transactional(readOnly = true)
32 @Override
33 public Batch find(final String key) {
34 return entityManager().find(JPABatch.class, key);
35 }
36
37 @Override
38 public Batch save(final Batch batch) {
39 return entityManager().merge(batch);
40 }
41
42 @Override
43 public void delete(final String key) {
44 Batch batch = find(key);
45 if (batch == null) {
46 return;
47 }
48
49 entityManager().remove(batch);
50 }
51
52 @Override
53 public int deleteExpired() {
54 Query query = entityManager().createQuery(
55 "DELETE FROM " + JPABatch.class.getSimpleName() + " e WHERE e.expiryTime < :now");
56 query.setParameter("now", OffsetDateTime.now());
57 return query.executeUpdate();
58 }
59 }