@Nullable protected RememberMeToken loadRememberMeToken(User user, String rememberMeToken) { EntityManager em = persistence.getEntityManager(); TypedQuery<RememberMeToken> query = em.createQuery( "select rt from sec$RememberMeToken rt where rt.token = :token and rt.user.id = :userId", RememberMeToken.class); query.setParameter("token", rememberMeToken); query.setParameter("userId", user.getId()); return query.getFirstResult(); }
@Nullable protected UserSetting findUserSettings(ClientType clientType, String name) { EntityManager em = persistence.getEntityManager(); TypedQuery<UserSetting> q = em.createQuery( "select s from sec$UserSetting s where s.user.id = ?1 and s.name =?2 and s.clientType = ?3", UserSetting.class); q.setParameter(1, userSessionSource.getUserSession().getUser().getId()); q.setParameter(2, name); q.setParameter(3, clientType == null ? null : clientType.getId()); return q.getFirstResult(); }
private Config getConfigInstance(String name) { EntityManager em = persistence.getEntityManager(); TypedQuery<Config> query = em.createQuery("select c from sys$Config c where c.name = ?1", Config.class); query.setParameter(1, name); query.setView(null); List<Config> list = query.getResultList(); if (list.isEmpty()) return null; else return list.get(0); } }
protected User loadSubstitutedUser(User substitutedUser, UserSession currentSession, EntityManager em) { TypedQuery<User> query = em.createQuery( "select su from sec$User su where " + "su in (select s.substitutedUser from sec$User u join u.substitutions s " + "where u.id = ?1 and s.substitutedUser.id = ?2)", User.class ); query.setParameter(1, currentSession.getUser().getId()); query.setParameter(2, substitutedUser.getId()); List<User> list = query.getResultList(); if (list.isEmpty()) { throw new NoResultException("User not found"); } return list.get(0); }
protected EntityStatistics getEntityStatisticsInstance(String name, EntityManager em) { TypedQuery<EntityStatistics> q = em.createQuery("select s from sys$EntityStatistics s where s.name = ?1", EntityStatistics.class); q.setParameter(1, name); List<EntityStatistics> list = q.getResultList(); EntityStatistics es; if (list.isEmpty()) { es = metadata.create(EntityStatistics.class); es.setName(name); em.persist(es); } else { es = list.get(0); } return es; }
@Nullable protected String getAccessTokenValueByRefreshTokenValueFromDatabase(String refreshTokenValue) { String accessTokenValue; try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); accessTokenValue = em.createQuery("select e.tokenValue from sys$AccessToken e where e.refreshTokenValue = :refreshTokenValue", String.class) .setParameter("refreshTokenValue", refreshTokenValue) .getFirstResult(); tx.commit(); return accessTokenValue; } }
protected List<FtsQueue> loadQueuedItems() { boolean useServerId = !ftsConfig.getIndexingHosts().isEmpty(); int maxSize = ftsConfig.getIndexingBatchSize(); return persistence.callInTransaction(em -> { String queryString = format("select q from sys$FtsQueue q where q.fake = false and %s order by q.createTs", (useServerId ? "q.indexingHost = ?1" : "q.indexingHost is null")); TypedQuery<FtsQueue> query = em.createQuery(queryString, FtsQueue.class); if (useServerId) query.setParameter(1, serverId); query.setMaxResults(maxSize); return query.getResultList(); }); }
protected Set<String> getRefreshTokenValuesByUserLoginFromDatabase(String userLogin) { try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); List<String> result = em.createQuery("select e.tokenValue from sys$RefreshToken e where e.userLogin = :userLogin", String.class) .setParameter("userLogin", userLogin) .getResultList(); tx.commit(); return new HashSet<>(result); } }
protected Set<String> getAccessTokenValuesByUserLoginFromDatabase(String userLogin) { try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); List<String> result = em.createQuery("select e.tokenValue from sys$AccessToken e where e.userLogin = :userLogin", String.class) .setParameter("userLogin", userLogin) .getResultList(); tx.commit(); return new HashSet<>(result); } }
protected void compileConstraints(UserSession session, Group group) { EntityManager em = persistence.getEntityManager(); TypedQuery<Constraint> q = em.createQuery("select c from sec$GroupHierarchy h join h.parent.constraints c " + "where h.group.id = ?1", Constraint.class); q.setParameter(1, group.getId()); List<Constraint> constraints = q.getResultList(); List<Constraint> list = new ArrayList<>(constraints); list.addAll(group.getConstraints()); for (Constraint constraint : list) { if (Boolean.TRUE.equals(constraint.getIsActive())) { session.addConstraint(constraint); } } }
@Nullable protected AccessToken getAccessTokenByTokenValueFromDatabase(String accessTokenValue) { AccessToken accessToken; try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); accessToken = em.createQuery("select e from sys$AccessToken e where e.tokenValue = :tokenValue", AccessToken.class) .setParameter("tokenValue", accessTokenValue) .setViewName(View.LOCAL) .getFirstResult(); tx.commit(); return accessToken; } }
@Nullable protected RefreshToken getRefreshTokenByTokenValueFromDatabase(String refreshTokenValue) { RefreshToken refreshToken; try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); refreshToken = em.createQuery("select e from sys$RefreshToken e where e.tokenValue = :tokenValue", RefreshToken.class) .setParameter("tokenValue", refreshTokenValue) .setViewName(View.LOCAL) .getFirstResult(); tx.commit(); return refreshToken; } }
@Nullable protected AccessToken getAccessTokenByAuthenticationKeyFromDatabase(String authenticationKey) { AccessToken accessToken; try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); accessToken = em.createQuery("select e from sys$AccessToken e where e.authenticationKey = :authenticationKey", AccessToken.class) .setParameter("authenticationKey", authenticationKey) .setViewName(View.LOCAL) .getFirstResult(); tx.commit(); return accessToken; } }
@Override public EntitySnapshot getLastEntitySnapshot(MetaClass metaClass, Object referenceId) { if (referenceId instanceof Entity) { throw new IllegalArgumentException(format("Reference id can not be an entity: %s", referenceId.getClass())); } MetaClass originalMetaClass = extendedEntities.getOriginalOrThisMetaClass(metaClass); View view = metadata.getViewRepository().getView(EntitySnapshot.class, "entitySnapshot.browse"); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); TypedQuery<EntitySnapshot> query = em.createQuery( format("select e from sys$EntitySnapshot e where e.entityMetaClass = :metaClass and" + " e.entity.%s = :entityId order by e.snapshotDate desc", referenceToEntitySupport.getReferenceIdPropertyName(originalMetaClass)), EntitySnapshot.class) .setParameter("metaClass", originalMetaClass.getName()) .setParameter("entityId", referenceId) .setMaxResults(1) .setView(view); return query.getFirstResult(); } finally { tx.close(); } }
protected List<CategoryAttributeValue> reloadCategoryAttributeValuesWithChildren(List<CategoryAttributeValue> categoryAttributeValues) { EntityManager em = persistence.getEntityManager(); View categoryAttributeValueLocalView = viewRepository.getView(CategoryAttributeValue.class, View.LOCAL); View categoryAttributeLocalView = viewRepository.getView(CategoryAttribute.class, View.LOCAL); View view = new View(categoryAttributeValueLocalView, null, false) .addProperty("categoryAttribute", new View(categoryAttributeLocalView, null, false).addProperty("category")) .addProperty("childValues", categoryAttributeValueLocalView); List<UUID> ids = categoryAttributeValues.stream() .map(BaseUuidEntity::getId) .collect(Collectors.toList()); return em.createQuery("select cav from sys$CategoryAttributeValue cav where cav.id in :ids", CategoryAttributeValue.class) .setParameter("ids", ids) .setView(view) .getResultList(); }
protected User findUser(EntityManager em) { UUID currentUserId = auditInfoProvider.getCurrentUserId(); if (AppContext.isStarted() && currentUserId != null) return em.getReference(User.class, currentUserId); else { String login = serverConfig.getJmxUserLogin(); TypedQuery<User> query = em.createQuery("select u from sec$User u where u.loginLowerCase = ?1", User.class); query.setParameter(1, login); User user = query.getFirstResult(); if (user != null) return user; else throw new RuntimeException("The user '" + login + "' specified in cuba.jmxUserLogin does not exist"); } }
@Override public void deleteScreenSettings(ClientType clientType, Set<String> screens) { try (Transaction tx = persistence.createTransaction()) { EntityManager em = persistence.getEntityManager(); TypedQuery<UserSetting> selectQuery = em.createQuery( "select e from sec$UserSetting e where e.user.id = ?1 and e.clientType=?2", UserSetting.class); selectQuery.setParameter(1, userSessionSource.getUserSession().getUser().getId()); selectQuery.setParameter(2, clientType.getId()); List<UserSetting> userSettings = selectQuery.getResultList(); for (UserSetting userSetting : userSettings) { if (screens.contains(userSetting.getName())) { em.remove(userSetting); } } tx.commit(); } }
@Override public List<EntitySnapshot> getSnapshots(MetaClass metaClass, Object id) { metaClass = extendedEntities.getOriginalOrThisMetaClass(metaClass); Entity entity = dataManager.load(new LoadContext<>(metaClass).setId(id).setView(View.LOCAL)); checkCompositePrimaryKey(entity); List<EntitySnapshot> resultList = null; View view = metadata.getViewRepository().getView(EntitySnapshot.class, "entitySnapshot.browse"); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); TypedQuery<EntitySnapshot> query = em.createQuery(format( "select s from sys$EntitySnapshot s where s.entity.%s = :entityId and s.entityMetaClass = :metaClass " + "order by s.snapshotDate desc", referenceToEntitySupport.getReferenceIdPropertyName(metaClass)), EntitySnapshot.class); query.setParameter("entityId", referenceToEntitySupport.getReferenceId(entity)); query.setParameter("metaClass", metaClass.getName()); query.setView(view); resultList = query.getResultList(); tx.commit(); } finally { tx.end(); } return resultList; }
@Override public List<SearchFolder> loadSearchFolders() { log.debug("Loading SearchFolders"); StopWatch stopWatch = new Slf4JStopWatch("SearchFolders"); stopWatch.start(); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); MetaClass effectiveMetaClass = metadata.getExtendedEntities().getEffectiveMetaClass(SearchFolder.class); TypedQuery<SearchFolder> q = em.createQuery("select f from "+ effectiveMetaClass.getName() +" f " + "left join f.user u on u.id = ?1 " + "where (u.id = ?1 or u is null) " + "order by f.sortOrder, f.name", SearchFolder.class); q.setViewName("searchFolders"); q.setParameter(1, userSessionSource.currentOrSubstitutedUserId()); List<SearchFolder> list = q.getResultList(); tx.commit(); return list; } finally { tx.end(); stopWatch.stop(); } }
@Override public void onBeforeUpdate(Group entity, EntityManager entityManager) { if (!persistence.getTools().getDirtyFields(entity).contains("parent")) return; EntityManager em = persistence.getEntityManager(); for (GroupHierarchy oldHierarchy : entity.getHierarchyList()) { em.remove(oldHierarchy); } createNewHierarchy(entity, entity.getParent()); TypedQuery<GroupHierarchy> q = em.createQuery( "select h from sec$GroupHierarchy h join fetch h.group " + "where h.parent.id = ?1", GroupHierarchy.class); q.setParameter(1, entity.getId()); List<GroupHierarchy> list = q.getResultList(); for (GroupHierarchy hierarchy : list) { Group dependentGroup = hierarchy.getGroup(); for (GroupHierarchy depHierarchy : dependentGroup.getHierarchyList()) { em.remove(depHierarchy); } em.remove(hierarchy); createNewHierarchy(dependentGroup, dependentGroup.getParent()); } } }