org.hibernate.Query#setParameterList ( )源码实例Demo

下面列出了org.hibernate.Query#setParameterList ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: sakai   文件: MessageForumsMessageManagerImpl.java
/**
 * FOR SYNOPTIC TOOL:
 * 		Returns the count of discussion forum messages grouped by site
 */
public List findDiscussionForumMessageCountsForAllSitesByPermissionLevelName(final List siteList, final List roleList) {
	if (siteList == null) {
        log.error("findDiscussionForumMessageCountsForAllSitesByPermissionLevelName failed with null site list.");
        throw new IllegalArgumentException("Null Argument");
	}	
    
	HibernateCallback<List> hcb = session -> {
        Query q = session.getNamedQuery("findDiscussionForumMessageCountsForAllSitesByPermissionLevelName");
         q.setParameterList("siteList", siteList);
         q.setParameterList("roleList", roleList);
         q.setString("userId", getCurrentUser());
         q.setString("customTypeUuid", typeManager.getCustomLevelType());
        return q.list();
    };

    return getHibernateTemplate().execute(hcb);
}
 
源代码2 项目: sakai   文件: PrivacyManagerImpl.java
private List<PrivacyRecord> getPrivacyByContextAndTypeAndUserIds(final String contextId, final String recordType, final List userIds)
{
	if(contextId == null || recordType == null || userIds == null)
	{
		throw new IllegalArgumentException("Null Argument in getPrivacyByContextAndTypeAndUserIds");
	}

 HibernateCallback<List<PrivacyRecord>> hcb = session -> {
  Query q = session.getNamedQuery(QUERY_BY_CONTEXT__TYPE_IDLIST);
  q.setString(CONTEXT_ID, contextId);
  q.setString(RECORD_TYPE, recordType);
  q.setParameterList("userIds", userIds);
  return q.list();
 };
	
	return getHibernateTemplate().execute(hcb);
}
 
源代码3 项目: sakai   文件: SakaiPersonManagerImpl.java
private List<SakaiPerson> listSakaiPersons(final Collection<String> userIds, final Type recordType)
{
	final HibernateCallback hcb = new HibernateCallback()
	{
		public Object doInHibernate(Session session) throws HibernateException
		{
			Query q = session.getNamedQuery(HQL_FIND_SAKAI_PERSONS_BY_AGENTS_AND_TYPE);
			q.setParameterList(AGENT_UUID_COLLECTION, userIds);
			q.setParameter(TYPE_UUID, recordType.getUuid(), StringType.INSTANCE);
			// q.setCacheable(false);
			return q.list();
		}
	};
	List hb =  (List) getHibernateTemplate().execute(hcb);
	if (photoService.overRidesDefault()) {
		return getDiskPhotosForList(hb);
	} else {
		return hb;
	}
}
 
源代码4 项目: sakai   文件: PrivacyManagerImpl.java
private List<PrivacyRecord> getPrivacyByContextAndTypeAndUserIds(final String contextId, final String recordType, final List userIds)
{
	if(contextId == null || recordType == null || userIds == null)
	{
		throw new IllegalArgumentException("Null Argument in getPrivacyByContextAndTypeAndUserIds");
	}

 HibernateCallback<List<PrivacyRecord>> hcb = session -> {
  Query q = session.getNamedQuery(QUERY_BY_CONTEXT__TYPE_IDLIST);
  q.setString(CONTEXT_ID, contextId);
  q.setString(RECORD_TYPE, recordType);
  q.setParameterList("userIds", userIds);
  return q.list();
 };
	
	return getHibernateTemplate().execute(hcb);
}
 
源代码5 项目: sakai   文件: MessageForumsMessageManagerImpl.java
/**
 * FOR SYNOPTIC TOOL:
 * 		Returns the count of discussion forum messages grouped by site for sites with
 * 		Forum topics that don't have membership items in the db
 */
public List<Object []> findDiscussionForumMessageCountsForTopicsWithMissingPermsForAllSites(final List<String> siteList) {
	if (siteList == null) {
        log.error("findDiscussionForumMessageCountsForTopicsWithMissingPermsForAllSites failed with null site list.");
        throw new IllegalArgumentException("Null Argument");
	}	
    
	HibernateCallback<List<Object[]>> hcb = session -> {
        Query q = session.getNamedQuery("findDiscussionForumMessageCountsForTopicsWithMissingPermsForAllSites");
         q.setParameterList("siteList", siteList);
         q.setString("userId", getCurrentUser());
        return q.list();
    };

    return getHibernateTemplate().execute(hcb);
}
 
源代码6 项目: sakai   文件: AnonymousManagerImpl.java
/**
 * Gets a list of AnonymousMapping objects from the database for the specified users in the specified site.
 */
private List<AnonymousMapping> findMappingsBySiteAndUsers(final String siteId, final List<String> userIds)
{
	if (CollectionUtils.isEmpty(userIds))
	{
		return Collections.emptyList();
	}

	HibernateCallback<List<AnonymousMapping>> hcb = new HibernateCallback<List<AnonymousMapping>>()
	{ 
		public List<AnonymousMapping> doInHibernate(Session session) throws HibernateException
		{
			List<AnonymousMapping> mappings = new ArrayList<>();
			// be mindful of Oracle's 1000 in clause limit
			int minUser = 0;
			int maxUser = Math.min(userIds.size(), MAX_IN_CLAUSE_SIZE);
			while (minUser < userIds.size())
			{
				Query q = session.getNamedQuery(QUERY_BY_SITE_AND_USERS);
				q.setParameter("siteId", siteId, StringType.INSTANCE);
				q.setParameterList("userIds", userIds.subList(minUser, maxUser));
				mappings.addAll(q.list());
				minUser += MAX_IN_CLAUSE_SIZE;
				maxUser = Math.min(userIds.size(), minUser + MAX_IN_CLAUSE_SIZE);
			}
			return mappings;
		}
	};

	return getHibernateTemplate().execute(hcb);
}
 
源代码7 项目: olat   文件: GenericDaoImpl.java
@SuppressWarnings("unchecked")
private <K> List<K> getQueryList(String queryName, Map<String, Object> queryParameters) {
    Query query = getNamedQuery(queryName);
    for (String key : queryParameters.keySet()) {
        /** TODO: REVIEW PUBLISH PERFORMANCE (used general solution when parameter is collection): bb/11.03.2012 **/
        if (queryParameters.get(key) instanceof Collection) {
            if (!((Collection<T>) queryParameters.get(key)).isEmpty()) {
                query.setParameterList(key, ((Collection<T>) queryParameters.get(key)));
            }
        } else {
            query.setParameter(key, queryParameters.get(key));
        }
    }
    return query.list();
}
 
源代码8 项目: sakai   文件: AnonymousManagerImpl.java
/**
 * Gets a list of AnonymousMapping objects from the database for the specified users in the specified site.
 */
private List<AnonymousMapping> findMappingsBySiteAndUsers(final String siteId, final List<String> userIds)
{
	if (CollectionUtils.isEmpty(userIds))
	{
		return Collections.emptyList();
	}

	HibernateCallback<List<AnonymousMapping>> hcb = new HibernateCallback<List<AnonymousMapping>>()
	{ 
		public List<AnonymousMapping> doInHibernate(Session session) throws HibernateException
		{
			List<AnonymousMapping> mappings = new ArrayList<>();
			// be mindful of Oracle's 1000 in clause limit
			int minUser = 0;
			int maxUser = Math.min(userIds.size(), MAX_IN_CLAUSE_SIZE);
			while (minUser < userIds.size())
			{
				Query q = session.getNamedQuery(QUERY_BY_SITE_AND_USERS);
				q.setParameter("siteId", siteId, StringType.INSTANCE);
				q.setParameterList("userIds", userIds.subList(minUser, maxUser));
				mappings.addAll(q.list());
				minUser += MAX_IN_CLAUSE_SIZE;
				maxUser = Math.min(userIds.size(), minUser + MAX_IN_CLAUSE_SIZE);
			}
			return mappings;
		}
	};

	return getHibernateTemplate().execute(hcb);
}
 
源代码9 项目: sakai   文件: PermissionLevelManagerImpl.java
private List queryWithParameterList(Query query, String queryParamName, List fullList) {
    // sql has a limit for the size of a parameter list, so we may need to cycle
    // through with sublists
    List queryResultList = new ArrayList();

    if (fullList.size() < MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
        query.setParameterList(queryParamName, fullList);
        queryResultList = query.list();

    } else {
        // if there are more than MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST, we need to do multiple queries
        int begIndex = 0;
        int endIndex = 0;

        while (begIndex < fullList.size()) {
            endIndex = begIndex + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST;
            if (endIndex > fullList.size()) {
                endIndex = fullList.size();
            }
            List tempSubList = new ArrayList();
            tempSubList.addAll(fullList.subList(begIndex, endIndex));

            query.setParameterList(queryParamName, tempSubList);

            queryResultList.addAll(query.list());
            begIndex = endIndex;
            
        }
    }

    return queryResultList;
}
 
源代码10 项目: sakai   文件: AssessmentGradingFacadeQueries.java
private Map<Long, Set<ItemGradingAttachment>> getItemGradingAttachmentMap(final Set itemGradingIds) {

        final HibernateCallback<List<ItemGradingAttachment>> hcb = session -> {
            Query q = session.createQuery(
                    "from ItemGradingAttachment a where a.itemGrading.itemGradingId in (:itemGradingIds)");
            q.setParameterList("itemGradingIds", itemGradingIds);
            return q.list();
        };
        Set<ItemGradingAttachment> itemGradingAttachmentList = new HashSet<>(getHibernateTemplate().execute(hcb));
        return processItemGradingAttachment(itemGradingAttachmentList);
    }
 
源代码11 项目: sakai   文件: MessageForumsMessageManagerImpl.java
/**
 * FOR SYNOPTIC TOOL:
 * 		Returns the count of discussion forum messages grouped by topics within a site
 * 		Used by sites that are grouped
 */
public List findDiscussionForumReadMessageCountsForGroupedSitesByTopic(final List siteList, final List roleList) {
    
	HibernateCallback<List> hcb = session -> {
        Query q = session.getNamedQuery("findDiscussionForumReadMessageCountsForGroupedSitesByTopic");
        q.setParameterList("siteList", siteList);
        q.setParameterList("roleList", roleList);
        q.setString("userId", getCurrentUser());
        q.setString("customTypeUuid", typeManager.getCustomLevelType());
        return q.list();
    };
    
    return getHibernateTemplate().execute(hcb);
}
 
源代码12 项目: spacewalk   文件: ActionFactory.java
/**
 * Delete the server actions associated with the given set of parent actions.
 * @param parentActions Set of parent actions.
 */
public static void deleteServerActionsByParent(Set parentActions) {
    Session session = HibernateFactory.getSession();

    Query serverActionsToDelete =
            session.getNamedQuery("ServerAction.deleteByParentActions");
    serverActionsToDelete.setParameterList("actions", parentActions);
    serverActionsToDelete.executeUpdate();
}
 
源代码13 项目: sakai   文件: PermissionLevelManagerImpl.java
private List queryWithParameterList(Query query, String queryParamName, List fullList) {
    // sql has a limit for the size of a parameter list, so we may need to cycle
    // through with sublists
    List queryResultList = new ArrayList();

    if (fullList.size() < MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
        query.setParameterList(queryParamName, fullList);
        queryResultList = query.list();

    } else {
        // if there are more than MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST, we need to do multiple queries
        int begIndex = 0;
        int endIndex = 0;

        while (begIndex < fullList.size()) {
            endIndex = begIndex + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST;
            if (endIndex > fullList.size()) {
                endIndex = fullList.size();
            }
            List tempSubList = new ArrayList();
            tempSubList.addAll(fullList.subList(begIndex, endIndex));

            query.setParameterList(queryParamName, tempSubList);

            queryResultList.addAll(query.list());
            begIndex = endIndex;
            
        }
    }

    return queryResultList;
}
 
源代码14 项目: Knowage-Server   文件: RoleDAOHibImpl.java
/**
 * Gets all the Authorizations for product Types
 *
 * @return The authorizations
 * @throws EMFUserError
 *             the EMF user error
 */
@Override
public List<SbiAuthorizations> loadAllAuthorizationsByProductTypes(List<Integer> productTypesIds) throws EMFUserError {
	List functs = new ArrayList();
	logger.debug("IN");
	Session aSession = null;
	Transaction tx = null;
	try {
		aSession = getSession();
		tx = aSession.beginTransaction();

		String hql = "select f from SbiAuthorizations f where f.productType.productTypeId IN (:PRODUCT_TYPES)";

		Query hqlQuery = aSession.createQuery(hql);
		hqlQuery.setParameterList("PRODUCT_TYPES", productTypesIds);
		functs = hqlQuery.list();
		tx.commit();
	} catch (HibernateException he) {
		logException(he);
		if (tx != null)
			tx.rollback();
		throw new EMFUserError(EMFErrorSeverity.ERROR, 100);
	} finally {
		if (aSession != null) {
			if (aSession.isOpen())
				aSession.close();
		}
	}
	logger.debug("OUT");
	return functs;
}
 
源代码15 项目: sakai   文件: MessageForumsForumManagerImpl.java
public int getNumModTopicCurrentUserHasModPermForWithPermissionLevelName(final List membershipList)
{
	if (membershipList == null) {
           log.error("getNumModTopicCurrentUserHasModPermForWithPermissionLevelName failed with membershipList: null");
           throw new IllegalArgumentException("Null Argument");
       }

       log.debug("getNumModTopicCurrentUserHasModPermForWithPermissionLevelName executing with membershipItems: " + membershipList);

       // hibernate will not like an empty list so return 0
       if (membershipList.isEmpty()) return 0;

       HibernateCallback<Number> hcb = session -> {
              Query q = null;
              if ("mysql".equals(serverConfigurationService.getString("[email protected]"))) {
                  q = session.createSQLQuery("select straight_join count(*) as NBR " +
                          "from MFR_AREA_T area " +
                          "inner join MFR_OPEN_FORUM_T openforum on openforum.surrogateKey=area.ID inner " +
                          "join MFR_TOPIC_T topic on topic.of_surrogateKey=openforum.ID " +
                          "inner join MFR_MEMBERSHIP_ITEM_T membership on topic.ID=membership.t_surrogateKey, " +
                          "MFR_PERMISSION_LEVEL_T permission " +
                          "where area.CONTEXT_ID = :contextId " +
                          "and topic.MODERATED = true " +
                          "and (membership.NAME in ( :membershipList ) " +
                          "and permission.MODERATE_POSTINGS = true " +
                          "and permission.TYPE_UUID <> :customTypeUuid " +
                          "and permission.NAME=membership.PERMISSION_LEVEL_NAME)");
              } else {
                  q = session.getNamedQuery(QUERY_GET_NUM_MOD_TOPICS_WITH_MOD_PERM_BY_PERM_LEVEL_NAME);
              }
              q.setParameterList("membershipList", membershipList);
              q.setString("contextId", getContextId());
              q.setString("customTypeUuid", typeManager.getCustomLevelType());
              return (Number) q.uniqueResult();
          };

       return getHibernateTemplate().execute(hcb).intValue();
}
 
源代码16 项目: sakai   文件: StatsManagerImpl.java
public int getResourceStatsRowCount(
		final String siteId,
		final String resourceAction, final List<String> resourceIds,
		final Date iDate, final Date fDate,
		final List<String> userIds,
		final boolean inverseUserSelection,
		final List<String> totalsBy) {

	StatsSqlBuilder sqlBuilder = new StatsSqlBuilder(getDbVendor(),
			Q_TYPE_RESOURCE, totalsBy, 
			siteId, (Set<String>)null, null, showAnonymousAccessEvents, resourceAction, resourceIds, 
			iDate, fDate, userIds, inverseUserSelection, null, true);
	final String hql = sqlBuilder.getHQL();

	HibernateCallback<Integer> hcb = session -> {
           Query q = session.createQuery(hql);
           if(siteId != null){
               q.setString("siteid", siteId);
           }
           if(userIds != null && !userIds.isEmpty()) {
               if(userIds.size() <= 1000) {
                   q.setParameterList("users", userIds);
               }else{
                   int nUsers = userIds.size();
                   int blockId = 0, startIndex = 0;
                   int blocks = (int) (nUsers / 1000);
                   blocks = (blocks*1000 == nUsers) ? blocks : blocks+1;
                   for(int i=0; i<blocks-1; i++) {
                       q.setParameterList("users"+blockId, userIds.subList(startIndex, startIndex+1000));
                       blockId++;
                       startIndex += 1000;
                   }
                   q.setParameterList("users"+blockId, userIds.subList(startIndex, nUsers));
               }
           }
           if(resourceAction != null)
               q.setString("action", resourceAction);
           if(resourceIds != null && !resourceIds.isEmpty())
               q.setParameterList("resources", resourceIds);
           if(iDate != null)
               q.setDate("idate", iDate);
           if(fDate != null){
               // adjust final date
               Calendar c = Calendar.getInstance();
               c.setTime(fDate);
               c.add(Calendar.DAY_OF_YEAR, 1);
               Date fDate2 = c.getTime();
               q.setDate("fdate", fDate2);
           }
           log.debug("getEventStatsRowCount(): " + q.getQueryString());
           Integer rowCount = q.list().size();
           if(!inverseUserSelection){
               return rowCount;
           }else{
               return getSiteUsers(siteId).size() - rowCount;
           }
       };
	return getHibernateTemplate().execute(hcb);
}
 
源代码17 项目: Knowage-Server   文件: DataSetDAOImpl.java
/**
 * @param scope Sent from DatasetResource <br>
 *              Can be: "all", "owned", "enterprise" and "shared", depends on Tab from Workspace/Datasets (MyDataset, Shared, Enterprise, All)
 */
@Override
public List<IDataSet> loadDatasetsByTags(UserProfile user, List<Integer> tagIds, String scope) {
	logger.debug("IN");
	List<IDataSet> toReturn = new ArrayList<>();
	Session session = null;
	Set<Domain> categoryList = null;
	String owner = null;
	String domain = null;
	String[] domains = null;
	try {
		Assert.assertNotNull(user, "UserProfile object cannot be null");

		StringBuffer statement = new StringBuffer("select distinct(dst.dataSet) from SbiDatasetTag dst where dst.dataSet.active = ? ");

		if (scope.equalsIgnoreCase("owned") || scope.equalsIgnoreCase("shared")) {
			owner = user.getUserId().toString();
			if (owner != null) {
				if (scope.equalsIgnoreCase("owned"))
					statement.append("and dst.dataSet.owner = :owner ");
				else
					statement.append("and dst.dataSet.owner != :owner ");
			}
		}

		if (scope.equalsIgnoreCase("enterprise") || scope.equalsIgnoreCase("shared") || scope.equalsIgnoreCase("all")) {
			statement.append("and dst.dataSet.scope.valueCd = :domain ");
			if (scope.equalsIgnoreCase("enterprise"))
				domain = scope.toUpperCase();
			else if (scope.equalsIgnoreCase("shared"))
				domain = "USER";
			else {
				domains = new String[2];
				domains[0] = "USER";
				domains[1] = "ENTERPRISE";
				statement.append("and (dst.dataSet.scope.valueCd = :user or dst.dataSet.scope.valueCd = :enterprise) ");
			}

			categoryList = UserUtilities.getDataSetCategoriesByUser(user);
			if (categoryList != null && !categoryList.isEmpty()) {
				statement.append("and dst.dataSet.category.valueCd in (:categories) ");
			}
		}

		if (!tagIds.isEmpty()) {
			statement.append("and dst.dsTagId.tagId in (:tagIds)");
		}

		session = getSession();
		Query query = session.createQuery(statement.toString());

		// Always get active versions
		query.setBoolean(0, true);

		if (owner != null) {
			query.setString("owner", owner);
		}

		if (domain != null)
			query.setString("domain", domain);

		if (domains != null && domains.length > 0) {
			query.setString("user", domains[0]);
			query.setString("enterprise", domains[1]);
		}

		if (categoryList != null && !categoryList.isEmpty()) {
			Iterator<Domain> it = categoryList.iterator();
			List<String> categoryValues = new ArrayList<>();
			while (it.hasNext()) {
				categoryValues.add(it.next().getValueName());
			}

			query.setParameterList("categories", categoryValues);
		}

		if (!tagIds.isEmpty()) {
			query.setParameterList("tagIds", tagIds);
		}

		toReturn = executeQuery(query, session);
	} catch (Exception e) {
		logger.error("An error has occured while filtering Enterprise Datasets by Tags", e);
		throw new SpagoBIDAOException("An unexpected error has occured while filtering Datasets by Tags", e);
	} finally {
		if (session != null && session.isOpen())
			session.close();
	}

	logger.debug("OUT");
	return toReturn;
}
 
源代码18 项目: sailfish-core   文件: StatisticsReportingStorage.java
@Override
public Map<Long, List<ActionInfoRow>> generateTestCasesFailedActionsInfo(AggregateReportParameters params) {
    if (params.getTestCaseRunIds() == null || params.getTestCaseRunIds().isEmpty()) {
        return Collections.emptyMap();
    }

    String queryString = "select "
            + "TCR.id, "
            + "AR.rank, "
            + "AR.description, "
            + "AR.failReason, "
            + "A.name, "
            + "M.name, "
            + "S.name, "
            + "AR.tag, "
            + "AR.status, "
            + "AR.hash "
            + "from ActionRun as AR "
            + "join AR.tcRun as TCR "
            + "left join AR.action as A "
            + "left join AR.service as S "
            + "left join AR.msgType as M "

            + "where TCR.id in (:tcrIds) and AR.status = 0 "
            + "order by AR.rank";
    Session session = sessionFactory.openSession();
    try (AutoCloseable ignore = session::close) {
        Query query = session.createQuery(queryString);
        query.setParameterList("ids", params.getTestCaseRunIds());
        @SuppressWarnings("unchecked")
        List<Object[]> resultList = query.list();
        Map<Long, List<ActionInfoRow>> testCaseToActionInfo = new HashMap<>();
        for (Object[] resultRow : resultList) {
            Long tcrId = (Long) resultRow[0];
            long rank = (long) resultRow[1];
            //TODO: Remove escaping after release 3.1, because escaping is executed on save data
            String description = StringEscapeUtils.escapeEcmaScript((String) resultRow[2]);
            String failReason = (String) resultRow[3];
            String actionName = (String) resultRow[4];
            String msgType = (String) resultRow[5];
            String service = (String) resultRow[6];
            String tag = (String) resultRow[7];
            Integer status = (Integer) resultRow[8];
            Integer hash = (Integer) resultRow[9];

            testCaseToActionInfo.computeIfAbsent(tcrId, id -> new ArrayList<>())
                    .add(new ActionInfoRow(rank, description, failReason, actionName, msgType, service, tag, status, hash));
        }
        return testCaseToActionInfo;
    } catch (Exception e) {
        throw new EPSCommonException(e);
    }
}
 
源代码19 项目: sakai   文件: StatsManagerImpl.java
public int getEventStatsRowCount(
		final String siteId,
		final List<String> events,
		final Date iDate, final Date fDate,
		final List<String> userIds,
		final boolean inverseUserSelection,
		final List<String> totalsBy) {
	
	final Set<String> anonymousEvents = eventRegistryService.getAnonymousEventIds();
	StatsSqlBuilder sqlBuilder = new StatsSqlBuilder(getDbVendor(),
			Q_TYPE_EVENT, totalsBy,
			siteId, events, anonymousEvents, showAnonymousAccessEvents, null, null, 
			iDate, fDate, userIds, inverseUserSelection, null, true);
	final String hql = sqlBuilder.getHQL();
	final Map<Integer,Integer> columnMap = sqlBuilder.getHQLColumnMap();

	// DO IT!
	HibernateCallback<Integer> hcb = session -> {
           Query q = session.createQuery(hql);
           if(siteId != null){
               q.setString("siteid", siteId);
           }
           if(events != null && !events.isEmpty()){
               q.setParameterList("events", events);
           }
           if(userIds != null && !userIds.isEmpty()) {
               if(userIds.size() <= 1000) {
                   q.setParameterList("users", userIds);
               }else{
                   int nUsers = userIds.size();
                   int blockId = 0, startIndex = 0;
                   int blocks = (int) (nUsers / 1000);
                   blocks = (blocks*1000 == nUsers) ? blocks : blocks+1;
                   for(int i=0; i<blocks-1; i++) {
                       q.setParameterList("users"+blockId, userIds.subList(startIndex, startIndex+1000));
                       blockId++;
                       startIndex += 1000;
                   }
                   q.setParameterList("users"+blockId, userIds.subList(startIndex, nUsers));
               }
           }
           if(iDate != null)
               q.setDate("idate", iDate);
           if(fDate != null){
               // adjust final date
               Calendar c = Calendar.getInstance();
               c.setTime(fDate);
               c.add(Calendar.DAY_OF_YEAR, 1);
               Date fDate2 = c.getTime();
               q.setDate("fdate", fDate2);
           }
           if(columnMap.containsKey(StatsSqlBuilder.C_USER) && anonymousEvents != null && anonymousEvents.size() > 0){
               q.setParameterList("anonymousEvents", anonymousEvents);
           }
           log.debug("getEventStatsRowCount(): " + q.getQueryString());
           Integer rowCount = q.list().size();
           if(!inverseUserSelection){
               return rowCount;
           }else{
               return getSiteUsers(siteId).size() - rowCount;
           }
       };
	return getHibernateTemplate().execute(hcb);
}
 
源代码20 项目: Knowage-Server   文件: RoleDAOHibImpl.java
@Override
public Integer insertRoleComplete(Role role) throws EMFUserError {
	Session aSession = null;
	Transaction tx = null;
	Integer roleId = null;
	try {
		aSession = getSession();
		tx = aSession.beginTransaction();

		// if new role is public check there are no other public otherwise unset them
		if (role.getIsPublic() != null && role.getIsPublic() == true) {
			unsetOtherPublicRole(aSession);
		}

		SbiExtRoles hibRole = new SbiExtRoles();

		hibRole.setCode(role.getCode());
		hibRole.setDescr(role.getDescription());
		hibRole.setName(role.getName());
		hibRole.setIsPublic(role.getIsPublic());

		SbiDomains roleType = (SbiDomains) aSession.load(SbiDomains.class, role.getRoleTypeID());
		hibRole.setRoleType(roleType);

		hibRole.setRoleTypeCode(role.getRoleTypeCD());
		HashSet<SbiAuthorizationsRoles> functs = new HashSet<SbiAuthorizationsRoles>();

		updateSbiCommonInfo4Insert(hibRole);
		roleId = (Integer) aSession.save(hibRole);
		aSession.flush();

		// abilitations
		// -----------------------------------------
		// 1 - get Product Types of this tenant
		String tenant = this.getTenant();
		if (tenant == null) {
			throw new SpagoBIRuntimeException("Organization not set!!!");
		}

		// Get corresponding Product Type Id for role's tenant
		Set<Integer> productTypesId = findProductTypesId(aSession, tenant);

		// ------------------------
		// 2 - Get only the authorizations of the product types of the
		// tenant

		String hqlall = "from SbiAuthorizations aut where aut.productType.productTypeId IN (:PRODUCT_TYPES)";
		Query hqlQueryAll = aSession.createQuery(hqlall);
		hqlQueryAll.setParameterList("PRODUCT_TYPES", productTypesId);

		List<SbiAuthorizations> allFunct = hqlQueryAll.list();

		Iterator allFunIt = allFunct.iterator();
		while (allFunIt.hasNext()) {

			SbiAuthorizations functI = (SbiAuthorizations) allFunIt.next();

			if (isAbleTo(role, functI)) {

				SbiAuthorizationsRoles fr = new SbiAuthorizationsRoles();
				SbiAuthorizationsRolesId id = new SbiAuthorizationsRolesId(functI.getId(), hibRole.getExtRoleId());
				fr.setId(id);
				updateSbiCommonInfo4Insert(fr);
				aSession.save(fr);
				functs.add(fr);
			}

		}
		aSession.flush();
		hibRole.setSbiAuthorizationsRoleses(functs);
		aSession.save(hibRole);
		tx.commit();

	} catch (HibernateException he) {
		logException(he);

		if (tx != null)
			tx.rollback();

		throw new EMFUserError(EMFErrorSeverity.ERROR, 100);

	} finally {
		if (aSession != null) {
			if (aSession.isOpen()) {
				aSession.close();
				logger.debug("OUT");
				this.clearCache();
			}
		}
	}
	return roleId;
}