@Override public int count() { Query query = entityManager().createQuery( "SELECT COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e"); return ((Number) query.getSingleResult()).intValue(); }
@Override public Map<String, Integer> countByStatus() { Query query = entityManager().createQuery( "SELECT e.status, COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e GROUP BY e.status"); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); return results.stream().collect(Collectors.toMap( result -> (String) result[0], result -> ((Number) result[1]).intValue())); }
@Override public Map<AnyType, Integer> countByType() { Query query = entityManager().createQuery( "SELECT e.type, COUNT(e) AS countByType FROM " + anyUtils().anyClass().getSimpleName() + " e " + "GROUP BY e.type ORDER BY countByType DESC"); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); Map<AnyType, Integer> countByRealm = new LinkedHashMap<>(results.size()); for (Object[] result : results) { countByRealm.put((AnyType) result[0], ((Number) result[1]).intValue()); } return Collections.unmodifiableMap(countByRealm); }
@Override public List<User> findBySecurityQuestion(final SecurityQuestion securityQuestion) { TypedQuery<User> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.securityQuestion = :securityQuestion", User.class); query.setParameter("securityQuestion", securityQuestion); return query.getResultList(); }
@Override public int count() { Query query = entityManager().createQuery( "SELECT COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e"); return ((Number) query.getSingleResult()).intValue(); }
@Override public Map<String, Integer> countByRealm(final AnyType anyType) { Query query = entityManager().createQuery( "SELECT e.realm, COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e " + "WHERE e.type=:type GROUP BY e.realm"); query.setParameter("type", anyType); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); return results.stream().collect(Collectors.toMap( result -> ((Realm) result[0]).getFullPath(), result -> ((Number) result[1]).intValue())); }
@Transactional(readOnly = true) @Override public List<Group> findOwnedByGroup(final String groupKey) { Group owner = find(groupKey); if (owner == null) { return Collections.<Group>emptyList(); } TypedQuery<Group> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.groupOwner=:owner", Group.class); query.setParameter("owner", owner); return query.getResultList(); }
@SuppressWarnings("unchecked") @Override public List<A> findByResource(final ExternalResource resource) { Query query = entityManager().createQuery("SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e " + "WHERE :resource MEMBER OF e.resources"); query.setParameter("resource", resource); return query.getResultList(); }
@Override public int count() { Query query = entityManager().createQuery( "SELECT COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e"); return ((Number) query.getSingleResult()).intValue(); }
@Override public User findByUsername(final String username) { TypedQuery<User> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.username = :username", User.class); query.setParameter("username", username); User result = null; try { result = query.getSingleResult(); } catch (NoResultException e) { LOG.debug("No user found with username {}", username, e); } return result; }
@Override public Map<String, Integer> countByRealm() { Query query = entityManager().createQuery( "SELECT e.realm, COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e GROUP BY e.realm"); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); return results.stream().collect(Collectors.toMap( result -> ((Realm) result[0]).getFullPath(), result -> ((Number) result[1]).intValue())); }
@Override public Map<String, Integer> countByRealm() { Query query = entityManager().createQuery( "SELECT e.realm, COUNT(e) FROM " + anyUtils().anyClass().getSimpleName() + " e GROUP BY e.realm"); @SuppressWarnings("unchecked") List<Object[]> results = query.getResultList(); return results.stream().collect(Collectors.toMap( result -> ((Realm) result[0]).getFullPath(), result -> ((Number) result[1]).intValue())); }
@Override public AnyObject findByName(final String name) { TypedQuery<AnyObject> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.name = :name", AnyObject.class); query.setParameter("name", name); AnyObject result = null; try { result = query.getSingleResult(); } catch (NoResultException e) { LOG.debug("No any object found with name {}", name, e); } return result; }
@Override public Group findByName(final String name) { TypedQuery<Group> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.name = :name", Group.class); query.setParameter("name", name); Group result = null; try { result = query.getSingleResult(); } catch (NoResultException e) { LOG.debug("No group found with name {}", name, e); } return result; }
@Transactional(readOnly = true) @Override @SuppressWarnings("unchecked") public A find(final String key) { return (A) entityManager().find(anyUtils().anyClass(), key); }
@Override public User findByToken(final String token) { TypedQuery<User> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.token LIKE :token", User.class); query.setParameter("token", token); User result = null; try { result = query.getSingleResult(); } catch (NoResultException e) { LOG.debug("No user found with token {}", token, e); } return result; }
@Transactional(readOnly = true) @Override public List<Group> findOwnedByUser(final String userKey) { User owner = userDAO.find(userKey); if (owner == null) { return Collections.<Group>emptyList(); } StringBuilder queryString = new StringBuilder("SELECT e FROM ").append(anyUtils().anyClass().getSimpleName()). append(" e WHERE e.userOwner=:owner "); userDAO.findAllGroupKeys(owner).forEach(groupKey -> { queryString.append("OR e.groupOwner.id='").append(groupKey).append("' "); }); TypedQuery<Group> query = entityManager().createQuery(queryString.toString(), Group.class); query.setParameter("owner", owner); return query.getResultList(); }
@Override public List<User> findAll(final int page, final int itemsPerPage) { TypedQuery<User> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e ORDER BY e.id", User.class); query.setFirstResult(itemsPerPage * (page <= 0 ? 0 : page - 1)); query.setMaxResults(itemsPerPage); return query.getResultList(); }
@Override public List<Group> findAll(final int page, final int itemsPerPage) { TypedQuery<Group> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e ORDER BY e.id", Group.class); query.setFirstResult(itemsPerPage * (page <= 0 ? 0 : page - 1)); query.setMaxResults(itemsPerPage); return query.getResultList(); }
@Override public List<AnyObject> findAll(final int page, final int itemsPerPage) { TypedQuery<AnyObject> query = entityManager().createQuery( "SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e ORDER BY e.id", AnyObject.class); query.setFirstResult(itemsPerPage * (page <= 0 ? 0 : page - 1)); query.setMaxResults(itemsPerPage); return query.getResultList(); }