IdentityObjectType identityType,
IdentityObjectSearchCriteria criteria) throws IdentityException
{
checkIOType(identityType);
HibernateIdentityObjectType hibernateType = getHibernateIdentityObjectType(ctx, identityType);
List<IdentityObject> results;
Session hibernateSession = getHibernateSession(ctx);
try
{
Query q = null;
if (criteria != null && criteria.isSorted())
{
if (criteria.isAscending())
{
q = hibernateSession.createQuery(HibernateIdentityObject.findIdentityObjectsByTypeOrderedByNameAsc);
}
else
{
q = hibernateSession.createQuery(HibernateIdentityObject.findIdentityObjectsByTypeOrderedByNameDesc);
}
}
else
{
q = hibernateSession.createQuery(HibernateIdentityObject.findIdentityObjectsByType);
}
if (criteria != null && criteria.isPaged())
{
if (criteria.getMaxResults() > 0)
{
q.setMaxResults(criteria.getMaxResults());
}
q.setFirstResult(criteria.getFirstResult());
}
q.setParameter("realm", getRealm(hibernateSession, ctx))
.setParameter("typeName", hibernateType.getName());
if (criteria != null && criteria.getFilter() != null)
{
q.setParameter("nameFilter", criteria.getFilter().replaceAll("\\*", "%"));
}