/**
* Apply ignoreWord/spam filters to all referers in website.
*/
public void applyRefererFilters(WebsiteData website) throws RollerException {
if (null == website) throw new RollerException("website is null");
if (null == website.getBlacklist()) return;
try {
Session session = ((HibernatePersistenceStrategy)strategy).getSession();
Criteria criteria = session.createCriteria(RefererData.class);
String[] blacklist = StringUtils.split(
StringUtils.deleteWhitespace(website.getBlacklist()),",");
if (blacklist.length == 0) return;
Junction or = Expression.disjunction();
for (int i=0; i<blacklist.length; i++) {
String ignoreWord = blacklist[i].trim();
or.add(Expression.ilike("refererUrl","%"+ignoreWord+"%"));
}
criteria.add(Expression.conjunction()
.add(Expression.disjunction().add(Expression.isNull("excerpt")).add(Expression.eq("excerpt", "")))
.add(Expression.eq("website",website))
.add(or)
);
Iterator referer = criteria.list().iterator();
while (referer.hasNext()) {
this.strategy.remove((RefererData) referer.next());
}
} catch (HibernateException e) {
throw new RollerException(e);
}
}