Example usage for org.hibernate.criterion DetachedCriteria add

List of usage examples for org.hibernate.criterion DetachedCriteria add

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria add.

Prototype

public DetachedCriteria add(Criterion criterion) 

Source Link

Document

Add a restriction

Usage

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

protected DetachedCriteria translateFilterToCriteria(FilterCriteria filterCriteria) {
    Class filterClass = filterCriteria == null ? null : filterCriteria.getFilterClass();
    Class persistentClass;//from  ww w  . j  a va2s .co m
    if (filterClass == null) {
        persistentClass = RepoResource.class;
        //persistentClass = RepoOlapUnit.class;    
    } else {
        persistentClass = getPersistentClassMappings().getImplementationClass(filterClass);
    }

    DetachedCriteria criteria;
    if (persistentClass == null) {
        criteria = null;
    } else {
        criteria = DetachedCriteria.forClass(persistentClass);
        criteria.createAlias("parent", "parent");
        criteria.add(Restrictions.eq("parent.hidden", Boolean.FALSE));
        if (filterCriteria != null) {
            List filterElements = filterCriteria.getFilterElements();
            if (!filterElements.isEmpty()) {
                Conjunction conjunction = Restrictions.conjunction();
                HibernateFilter filter = new HibernateFilter(conjunction, this);
                for (Iterator it = filterElements.iterator(); it.hasNext();) {
                    FilterElement filterElement = (FilterElement) it.next();
                    filterElement.apply(filter);
                }
                criteria.add(conjunction);
            }
        }
    }

    return criteria;
}

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

protected DetachedCriteria resourceNameCriteria(Class persistentClass, RepoFolder folder, String name) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentClass);
    criteria.add(Restrictions.naturalId().set("name", name).set("parent", folder));
    return criteria;
}

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

@Transactional(propagation = Propagation.REQUIRED)
public int getFoldersCount(final String parentURI) {
    return (Integer) executeCallback(new DaoCallback() {
        public Object execute() {
            DetachedCriteria criteria = DetachedCriteria.forClass(RepoFolder.class);
            criteria.add(Restrictions.eq("hidden", Boolean.FALSE));
            criteria.setProjection(Projections.rowCount());
            if (parentURI != null && !Folder.SEPARATOR.equals(parentURI)) {
                criteria.add(Restrictions.or(
                        (parentURI.contains("%")) ? Restrictions.eq("URI", parentURI)
                                : Restrictions.like("URI", parentURI),
                        Restrictions.like("URI", parentURI + "/%")));
            }//  w w w  .ja  v  a2 s  . c o m
            return new BasicTransformer().transformToCount(getHibernateTemplate().findByCriteria(criteria));
        }
    });
}

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

protected List loadAllSubfolders(ExecutionContext context, String parentURI) {
    DetachedCriteria criteria = DetachedCriteria.forClass(RepoFolder.class);
    criteria.add(Restrictions.eq("hidden", Boolean.FALSE));

    if (parentURI != null && !Folder.SEPARATOR.equals(parentURI)) {
        criteria.add(Restrictions.or((parentURI.indexOf("%") == -1) ? Restrictions.eq("URI", parentURI)
                : Restrictions.like("URI", parentURI), Restrictions.like("URI", parentURI + "/%")));
    }//from w w w .  j av  a  2  s .c  o m

    criteria.getExecutableCriteria(getSession()).setCacheable(true);
    List repoFolders = getHibernateTemplate().findByCriteria(criteria);
    List folders = new ArrayList(repoFolders.size());
    for (Iterator iter = repoFolders.iterator(); iter.hasNext();) {
        RepoFolder repoFolder = (RepoFolder) iter.next();
        Folder folder = repoFolder.toClient();
        folders.add(folder);
    }

    SortingUtils.sortFoldersByURI(getCollator(context), folders);

    return folders;
}

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

@Transactional(propagation = Propagation.REQUIRED)
public List<ResourceLookup> getDependentResources(ExecutionContext context, String uri,
        SearchCriteriaFactory searchCriteriaFactory, int current, int max) {

    final Resource resource = getResource(context, uri);

    if (resource == null) {
        throw new JSException("jsexception.resource.does.not.exist");
    }//from w w w.j  a v  a  2  s.  co  m

    if (resource instanceof ReportDataSource) {
        //ReportDataSource can have dependent ReportUnit items
        final ReportDataSource dataSource = (ReportDataSource) resource;
        RepoResource repoDS = findByURI(RepoResource.class, uri, true);
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        //TODO GetDependentResourcesIds query can be updated to handle ReportUnit objects too
        org.hibernate.Query query = session.getNamedQuery("GetDependentResourcesIds");
        query.setEntity("dependency", repoDS).setFirstResult(current);
        if (max > 0) {
            query.setMaxResults(max);
        }
        List<Long> depRes = query.list();
        List<ResourceLookup> depResLookup = getResourcesByIdList(depRes);
        return depResLookup;
        //TODO delete if code above proves to work fine
        //            SearchFilter filter = new SearchFilter() {
        //                public void applyRestrictions(String type, ExecutionContext context, SearchCriteria criteria) {
        //                    DetachedCriteria dsCriteria = criteria.createCriteria("dataSource", "ds");
        //                    dsCriteria.add(Restrictions.eq("ds.name", dataSource.getName()));
        //
        //                    DetachedCriteria dsParent = dsCriteria.createCriteria("parent", "dsParent");
        //                    dsParent.add(Restrictions.eq("dsParent.URI", dataSource.getParentFolder()));
        //
        //                    // will use it later on for sorting
        //                    DetachedCriteria folderCriteria = criteria.createCriteria("parent", "f");
        //                }
        //            };
        //
        //            SearchSorter sorter = new SearchSorter() {
        //                public void applyOrder(String type, ExecutionContext context, SearchCriteria criteria) {
        //                    criteria.addOrder(Order.asc("f.URI"));
        //                    criteria.addOrder(Order.asc("name"));
        //                    // by default we retrieving only id's and to be able sort  we had to add property to select clause
        //                    criteria.addProjection(Projections.property("f.URI"));
        //                    criteria.addProjection(Projections.property("name"));
        //                }
        //            };
        //            SearchCriteriaFactory criteriaFactory = searchCriteriaFactory.newFactory(ReportUnit.class.getName());
        //            List<ResourceLookup> resources = getResources(
        //                    context,
        //                    criteriaFactory,
        //                    Arrays.asList(filter),
        //                    sorter,
        //                    new BasicTransformerFactory(),
        //                    current, max);
        //
        //            return resources;

        //TODO: replace 'exist' with right solution, it's hardcoded fix for CE version
    } else if (resource instanceof ReportUnit && exist("com.jaspersoft.ji.adhoc.DashboardResource")) {
        //ReportUnit can have dependent DashboardResource items
        final RepoResource repoResource = getRepoResource(resource);
        SearchFilter filter = new SearchFilter() {
            public void applyRestrictions(String type, ExecutionContext context, SearchCriteria criteria) {
                DetachedCriteria resourcesCriteria = criteria.createCriteria("resources", "res");
                resourcesCriteria.add(Restrictions.eq("res.id", repoResource.getId()));
            }
        };

        SearchSorter sorter = new SearchSorter() {
            @Override
            protected void addOrder(String type, ExecutionContext context, SearchCriteria criteria) {
                criteria.addOrder(Order.asc("name")).addOrder(Order.asc("id"));
            }

            @Override
            protected void addProjection(String type, ExecutionContext context, SearchCriteria criteria) {
            }
        };

        SearchCriteriaFactory criteriaFactory = searchCriteriaFactory
                .newFactory("com.jaspersoft.ji.adhoc.DashboardResource");
        List<ResourceLookup> resources = getResources(context, criteriaFactory, Arrays.asList(filter), sorter,
                new BasicTransformerFactory(), current, max);

        return resources;
    } else {
        return null; //unsupported resource
    }

}

From source file:com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl.java

License:Open Source License

private DetachedCriteria createTenantSearchCriteria(String tenantId, boolean isCaseSensitive) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentTenantClass());

    criteria.add(
            isCaseSensitive ? Restrictions.eq("tenantId", tenantId) : Restrictions.ilike("tenantId", tenantId));
    criteria.getExecutableCriteria(getSession()).setCacheable(true);

    return criteria;
}

From source file:com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl.java

License:Open Source License

protected RepoTenant getRepoTenantByAlias(String tenantAlias, boolean required) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentTenantClass());
    criteria.add(Restrictions.eq("tenantAlias", tenantAlias));
    criteria.getExecutableCriteria(getSession()).setCacheable(true);
    List tenantList = getHibernateTemplate().findByCriteria(criteria);
    RepoTenant tenant;//from  w ww  .  j  av  a  2 s .  co m
    if (tenantList.isEmpty()) {
        if (required) {
            throw new JSException("Tenant not found with Tenant Alias \"" + tenantAlias + "\"");//TODO i18n
        }

        log.debug("Tenant not found with Tenant Alias \"" + tenantAlias + "\"");
        tenant = null;
    } else {
        tenant = (RepoTenant) tenantList.get(0);
    }
    return tenant;
}

From source file:com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl.java

License:Open Source License

protected RepoTenant getRepoTenantBasedOnTenantUri(ExecutionContext context, String tenantUri) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentTenantClass());
    criteria.add(Restrictions.eq("tenantUri", tenantUri));
    criteria.getExecutableCriteria(getSession()).setCacheable(true);
    List tenantList = getHibernateTemplate().findByCriteria(criteria);
    RepoTenant tenant = null;//from w w w. ja v a 2  s.co m
    if (tenantList.isEmpty()) {
        log.debug("Tenant not found with Tenant Name \"" + tenantUri + "\"");
    } else {
        tenant = (RepoTenant) tenantList.get(0);
    }
    return tenant;
}

From source file:com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl.java

License:Open Source License

private DetachedCriteria createSubTenantsCriteria(RepoTenant parentTenant, String text, int depth) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentTenantClass());
    String value = "/%";

    if ("/".equals(parentTenant.getTenantUri())) {
        /* Excluding root parent from sub list. */
        criteria.add(Restrictions.ne("tenantId", parentTenant.getTenantId()));
    } else {//from ww w.  ja  v a2  s  .  c o m
        value = parentTenant.getTenantUri() + value;
    }

    criteria.add(Restrictions.like("tenantUri", value));

    if (depth > 0) {
        StringBuilder boundary = new StringBuilder(value);
        for (; depth > 0; depth--) {
            boundary.append("/%");
        }
        criteria.add(Restrictions.not(Restrictions.like("tenantUri", boundary.toString())));
    }

    if (text != null) {
        text = databaseCharactersEscapeResolver.getEscapedText(text.trim());
        if (text.length() > 0) {
            Disjunction disjunction = Restrictions.disjunction();

            disjunction.add(new IlikeEscapeAwareExpression("tenantId", text, MatchMode.ANYWHERE));
            disjunction.add(new IlikeEscapeAwareExpression("tenantAlias", text, MatchMode.ANYWHERE));
            disjunction.add(new IlikeEscapeAwareExpression("tenantName", text, MatchMode.ANYWHERE));
            disjunction.add(new IlikeEscapeAwareExpression("tenantDesc", text, MatchMode.ANYWHERE));

            criteria.add(disjunction);
        }
    }
    return criteria;
}

From source file:com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl.java

License:Open Source License

public boolean isMultiTenantEnvironment(ExecutionContext context) {
    DetachedCriteria criteria = DetachedCriteria.forClass(persistentTenantClass());
    criteria.add(Restrictions.ne("tenantUri", "/"));
    criteria.getExecutableCriteria(getSession()).setCacheable(true);
    List tenantList = getHibernateTemplate().findByCriteria(criteria);
    return tenantList.size() > 1;
}