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 javax.persistence.Query;
22 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
23 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
24 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
25 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
26 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
27
28 public class PGJPAJSONPlainSchemaDAO extends AbstractJPAJSONPlainSchemaDAO {
29
30 public PGJPAJSONPlainSchemaDAO(
31 final AnyUtilsFactory anyUtilsFactory,
32 final PlainAttrDAO plainAttrDAO,
33 final ExternalResourceDAO resourceDAO) {
34
35 super(anyUtilsFactory, plainAttrDAO, resourceDAO);
36 }
37
38 @Override
39 public <T extends PlainAttr<?>> boolean hasAttrs(final PlainSchema schema, final Class<T> reference) {
40 Query query = entityManager().createNativeQuery(
41 "SELECT COUNT(id) FROM " + new SearchSupport(getAnyTypeKind(reference)).table().name
42 + " WHERE plainAttrs::jsonb @> '[{\"schema\":\"" + schema.getKey() + "\"}]'::jsonb");
43
44 return ((Number) query.getSingleResult()).intValue() > 0;
45 }
46 }