protected void doSearch() {
   Filter filter = featureLayer.filter();
   String s = searchText.getText().getText();
   if (!StringUtils.isBlank(s)) {
     if (!s.contains("*") && !s.contains("?")) {
       s = s + "*";
     }
     for (PropertyDescriptor prop : fs.getSchema().getDescriptors()) {
       if (String.class.isAssignableFrom(prop.getType().getBinding())) {
         PropertyIsLike isLike = ff.like(ff.property(prop.getName()), s, "*", "?", "\\");
         filter = filter == Filter.INCLUDE ? isLike : ff.or(filter, isLike);
       }
     }
   }
   viewer.setSelection(StructuredSelection.EMPTY);
   log.info("FILTER: " + filter);
   //        FeatureCollection filtered = features.subCollection( filter );
   //        log.info( "RESULT: "  + filtered.size() );
   contentProvider.filter(filter);
 }