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());
}