All pastes #249126 Raw Edit

Untitled

public text v1 · immutable
#249126 ·published 2006-11-15 13:01 UTC
rendered paste body
    public List<DevPlanTemplate> listDevPlanTemplates(
            DevPlanTemplateFilter filter) {
        Criteria c = getSession().createCriteria(DevPlanTemplate.class);

        c.setFetchMode("auditInfo", FetchMode.JOIN)
                .setFetchMode("auditInfo.auditLog", FetchMode.JOIN)
                .setFetchMode("metaData", FetchMode.JOIN)
                .setFetchMode("metaData.publishedIn",FetchMode.JOIN)
                .setFetchMode("pages", FetchMode.JOIN);

        if (!filter.getAllTemplates()) {
            c.add(Restrictions.isNotNull("published")).add(
                    Restrictions.isNull("retired"));
        }
 
        Criteria mdCrit = c.createCriteria("metaData");
        Criteria orderCriteria;
        // -- horrendous solution but, as of now atleast, criteria does not
        // support ordering by childproperties
        if (filter.getOrderBy().startsWith("metaData.")) {
            filter.setOrderBy(filter.getOrderBy().substring(9,
                    filter.getOrderBy().length()));
            orderCriteria = mdCrit;
        } else {
            orderCriteria = c;
        }

        if ("asc".equals(filter.getOrder())) {
            orderCriteria.addOrder(Order.asc(filter.getOrderBy()));
        } else {
            orderCriteria.addOrder(Order.desc(filter.getOrderBy()));
        }

        if (StringUtils.hasText(filter.getSchoolType())) {
            mdCrit.add(Restrictions.eq("schoolType", filter.getSchoolType()));
        }
        
        String free = "%Unikum%";
        
//        DevPlanTemplate tmp = new DevPlanTemplate();
//        tmp.setTitle(free);
//        tmp.setDescription(free);
//        TemplateMetaData mdTmp = new TemplateMetaData();
//        mdTmp.setCreator(free);
//        mdTmp.setPublishedIn(new Principal(free));
//        tmp.setMetaData(mdTmp);
//        Example ex = Example.create(tmp).enableLike().ignoreCase();
//        Example ex2 = Example.create(mdTmp).enableLike().ignoreCase();
////        c.add(Restrictions.disjunction().add(ex));
////        mdCrit.add(ex2);
//        c.add(Restrictions.or(ex, ex2));
        
        Property title = Property.forName("title");
        Property desc = Property.forName("description");
        Property mdCreator = Property.forName("metaData.creator");
        Property creator = Property.forName("creator");
        Property mdPub = Property.forName("metaData.publishedIn.name");
        Property pub = Property.forName("publishedIn.name");
        
        c.add(Restrictions.disjunction().add(title.like(free)).add(desc.like(free)));
        mdCrit.add(Restrictions.disjunction().add(creator.like(free)).add(pub.like(free)));
        //c.add(mdCreator.like(free));
        //mdCrit.add(pub.like(free));
        //c.add(mdPub.like(free));
        
        //mdCrit.add(Restrictions.or(Restrictions.ilike("creator", free), Restrictions.ilike("publishedIn.name", free)));
//        c.add(Restrictions.or(Restrictions.ilike("title", free), Restrictions.ilike("description", free)));
//        c.add(Restrictions.or(Restrictions.ilike("metaData.creator", free), Restrictions.ilike("metaData.publishedIn", free)));
//        
        c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        
        return filter.filter(c.list());
    }