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