public static void appendConditions(DynamicQuery qry, FindQualifiers fq, Name name) {
    String namePredicate = DynamicQuery.PREDICATE_EQUALS;
    if (fq != null && fq.isApproximateMatch()) {
      namePredicate = DynamicQuery.PREDICATE_LIKE;
    }

    qry.WHERE().pad().openParen().pad();

    String nameTerm = ENTITY_ALIAS + ".name";
    String nameValue = name.getValue();
    if (fq != null && fq.isCaseInsensitiveMatch()) {
      nameTerm = "upper(" + ENTITY_ALIAS + ".name)";
      nameValue = name.getValue().toUpperCase();
    }
    // JUDDI-235: wildcards are provided by user (only commenting in case a new interpretation
    // arises)
    // if (fq.isApproximateMatch())
    //	nameValue = nameValue.endsWith(DynamicQuery.WILDCARD)?nameValue:nameValue +
    // DynamicQuery.WILDCARD;

    if (name.getLang() == null || name.getLang().length() == 0) {
      qry.appendGroupedAnd(new DynamicQuery.Parameter(nameTerm, nameValue, namePredicate));
    } else {
      String langValue =
          name.getLang().endsWith(DynamicQuery.WILDCARD)
              ? name.getLang().toUpperCase()
              : name.getLang().toUpperCase() + DynamicQuery.WILDCARD;
      qry.appendGroupedAnd(
          new DynamicQuery.Parameter(nameTerm, nameValue, namePredicate),
          new DynamicQuery.Parameter(
              "upper(" + ENTITY_ALIAS + ".langCode)", langValue, DynamicQuery.PREDICATE_LIKE));
    }

    qry.closeParen().pad();
    if (fq != null && fq.isSignaturePresent()) {
      qry.AND()
          .pad()
          .openParen()
          .pad()
          .append(TModelQuery.SIGNATURE_PRESENT)
          .pad()
          .closeParen()
          .pad();
    }
  }