Class FilterComponents

java.lang.Object
io.jmix.ui.component.filter.registration.FilterComponents
All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean

@Component("ui_FilterComponents") public class FilterComponents extends Object implements org.springframework.beans.factory.InitializingBean
Registers UI filter components that should be used by the framework.

For instance, in the spring Configuration class create FilterComponentRegistration bean.

 @Configuration
 public class FilterComponentConfiguration {

      @Bean
      public FilterComponentRegistration registerPropertyFilterComponent() {
          return FilterComponentRegistrationBuilder.create(PropertyFilter.class,
          PropertyFilterCondition.class,
          PropertyFilterConverter.class)
          .build();
      }
 }
 


Note, the order of providing FilterComponentRegistration beans is very important because filter components with the same filter component class or the same model class will be filtered if they have lower priority. For instance, the configuration provides two FilterComponentRegistration with the same UI filter component class:

 @Bean
 @Order(100)
 public FilterComponentRegistration extPropertyFilter() {
      return FilterComponentRegistrationBuilder.create(ExtPropertyFilter.class,
      ExtPropertyFilterCondition.class,
      ExtPropertyFilterConverter.class)
      .build();
 }
 @Bean
 @Order(200)
 public FilterComponentRegistration extPropertyFilter1() {
      return FilterComponentRegistrationBuilder.create(ExtPropertyFilter.class,
      ExtPropertyFilterCondition.class,
      ExtPropertyFilterConverter.class)
      .withEditScreenId("ui_ExtPropertyFilterCondition.edit")
      .build();
 }
 
The second filter component with edit screen id will be filtered as it has a lower priority.

Another example, the configuration provides FilterComponentRegistration that overrides registration from some add-on. In this case, if the component from the add-on has lower priority it will not be registered at all. It means that our filter component registration must provide full information: UI filter component class, model class, converter class and edit screen id (optional).

  • Field Details

    • filterComponentRegistrations

      @Autowired(required=false) protected List<FilterComponentRegistration> filterComponentRegistrations
    • applicationContext

      @Autowired protected org.springframework.context.ApplicationContext applicationContext
    • screenBuilders

      @Autowired protected ScreenBuilders screenBuilders
    • windowConfig

      @Autowired protected WindowConfig windowConfig
    • metadata

      @Autowired protected Metadata metadata
    • registrations

      protected Set<FilterComponentRegistration> registrations
  • Constructor Details

    • FilterComponents

      public FilterComponents()
  • Method Details

    • afterPropertiesSet

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
    • getConverterByComponentClass

      public FilterConverter<? extends FilterComponent,? extends FilterCondition> getConverterByComponentClass(Class<? extends FilterComponent> componentClass, Filter filter)
      Returns a converter class by filter component class.
      Parameters:
      componentClass - UI filter component class
      filter - a filter with which the converter will be used
      Returns:
      a converter class
    • getConverterByModelClass

      public FilterConverter<? extends FilterComponent,? extends FilterCondition> getConverterByModelClass(Class<? extends FilterCondition> modelClass, Filter filter)
      Returns a converter class by model class.
      Parameters:
      modelClass - a model class
      filter - a filter with which the converter will be used
      Returns:
      a converter class
    • getEditScreenId

      public String getEditScreenId(Class<? extends FilterCondition> modelClass)
      Returns a model edit screen id by model class.
      Parameters:
      modelClass - a model class
      Returns:
      a model edit screen id by model class
    • getRegisteredFilterComponentClasses

      public Set<Class<? extends FilterComponent>> getRegisteredFilterComponentClasses()
      Returns:
      a set of registered filter component classes
    • getRegisteredModelClasses

      public Set<Class<? extends FilterCondition>> getRegisteredModelClasses()
      Returns:
      a set of registered model classes
    • getModelClass

      public Class<? extends FilterCondition> getModelClass(Class<? extends FilterComponent> componentClass)
      Returns a model class by UI filter component class.
      Parameters:
      componentClass - a filter component class
      Returns:
      a model class
    • getComponentClass

      public Class<? extends FilterComponent> getComponentClass(Class<? extends FilterCondition> modelClass)
      Returns UI filter component class by model class.
      Parameters:
      modelClass - a model class
      Returns:
      a filter component class
    • registerComponents

      protected void registerComponents()
    • register

      protected void register(FilterComponentRegistration registration)
    • resolveRegistrationByComponentClass

      protected FilterComponentRegistration resolveRegistrationByComponentClass(Class<? extends FilterComponent> componentClass)
    • resolveRegistrationByModelClass

      protected FilterComponentRegistration resolveRegistrationByModelClass(Class<? extends FilterCondition> modelClass)