@Override
  public String fullTextSearch(String text) {

    boolean fullTextSearch = false;
    StringBuffer buffer = new StringBuffer(BaseNLS.constants().label_filtered() + " ");

    if (text == null || (text != null && text.equals(""))) {
      setSearchCriterions(null);
    } else {

      String locale = NLS.constants().locale();

      PriseMedicamentRegimeRequest request = (PriseMedicamentRegimeRequest) getContext();
      newRequest = false;

      ImogJunctionProxy junction = request.create(ImogConjunctionProxy.class);
      List<ImogCriterionProxy> criterias = new ArrayList<ImogCriterionProxy>();

      ImogJunctionProxy disJunction = request.create(ImogDisjunctionProxy.class);
      List<ImogCriterionProxy> criterionList = new ArrayList<ImogCriterionProxy>();

      // Search field Designation
      BasicCriteriaProxy medicament_designationCrit = request.create(BasicCriteriaProxy.class);
      medicament_designationCrit.setField("medicament.designation");
      medicament_designationCrit.setOperation(CriteriaConstants.STRING_OPERATOR_CONTAINS);
      medicament_designationCrit.setValue(text);
      buffer.append(
          "("
              + NLS.constants().medicament_field_designation()
              + ": "
              + text
              + ") "
              + SYMBOL_OR
              + " ");
      criterionList.add(medicament_designationCrit);

      disJunction.setCriterions(criterionList);
      criterias.add(disJunction);
      fullTextSearch = true;

      if (ProfileUtil.isAdmin()) {
        BasicCriteriaProxy isDeletedCrit = request.create(BasicCriteriaProxy.class);
        isDeletedCrit.setField("deleted");
        isDeletedCrit.setOperation(CriteriaConstants.OPERATOR_ISNULL);
        isDeletedCrit.setValue(text);
        criterias.add(isDeletedCrit);
      }
      junction.setCriterions(criterias);

      // add FilterCriteria if exists
      if (isFiltered && filterCriteria != null)
        setSearchCriterions(mergeFilterCriteriaAndFullTextSearchCriterion(request, junction));
      else setSearchCriterions(junction);
    }
    if (fullTextSearch) {
      String message = buffer.toString();
      int lastSymbolIndex = message.lastIndexOf(SYMBOL_OR);
      return message.substring(0, lastSymbolIndex);
    } else return null;
  }