/** * generateCondition method * * @param context - ConditionGeneratorContext * @param lConditionName - String * @param value - Object */ public void generateCondition( ConditionGeneratorContext context, String conditionName, Object value) { String[] conditionNames = conditionName.split("[,]"); int paramNumber = context.nextValueId(); String paramId = "c" + paramNumber; String lValue = String.valueOf(value).replace('*', '%').toLowerCase(); if (addToRight) { if (!lValue.endsWith("%")) { lValue = lValue + "%"; } } if (addToLeft) { if (!lValue.startsWith("%")) { lValue = "%" + lValue; } } StringBuilder hqlPart = new StringBuilder("("); for (int i = 0, m = conditionNames.length; i < m; i++) { String lConditionName = conditionNames[i]; lConditionName = lConditionName.trim(); hqlPart.append("LOWER(" + lConditionName + ") LIKE :" + paramId); context.addValue(paramId, lValue); if ((i + 1) < m) { hqlPart.append(" OR "); } } hqlPart.append(")"); context.addWherePartCondition(conditionName, hqlPart.toString()); }
/** * generateCondition method * * @param context - ConditionGeneratorContext * @param conditionName - String * @param value - Object */ public void generateCondition( ConditionGeneratorContext context, String conditionName, Object value) { int paramNumber = context.nextValueId(); String paramId = "c" + paramNumber; context.addWherePartCondition( conditionName, MessageFormat.format("{0}({1}) in :{2}", "str", conditionName, paramId)); context.addValue(paramId, value); }
/** * Generate condition. example: <code> * exists ( select lv from LocalizedValue lv join lv.messages lvm where lvm.message like '%' and lv.id = c.name.id ) * </code> * * @param context - ConditionGeneratorContext * @param conditionName - String * @param value - Object */ public void generateCondition( ConditionGeneratorContext context, String conditionName, Object value) { Assert.isTrue( context.getEntitiesInQuery().size() == 1, "More than one entity as query result!"); int paramNumber = context.nextValueId(); String paramId = "c" + paramNumber; value = value + "%"; String selectedEntityAlias = context.getEntitiesInQuery().get(0).getAlias(); StringBuilder condition = new StringBuilder(); condition.append("exists ( "); condition .append("select lv from LocalizedValue lv join lv.messages lvm where lvm.message like :") .append(paramId); condition.append(" and lv.id = ").append(conditionName).append(".id"); condition.append(" ) "); context.addWherePartCondition(conditionName, condition.toString()); context.addValue(paramId, value); }