Esempio n. 1
0
  /**
   * 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());
  }
Esempio n. 2
0
 /**
  * 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);
  }