Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Niektóre serwisy w przypadku zaawansowanego wyszukiwania wykorzystują zdefiniowane filtry, za pomocą których możemy określić kryteria wyszukiwania.

Przydatne klasy:

  • HibernateFilter - interfejs udostępniający metodę buildCriterion(), która zwraca odpowiednio zbudowane kryterium.
  • SimpleHibernateFilter - implementacja HibernateFilter, dająca możliwość definiowania kryteriów wyszukiwania.
  • GroupHibernateFilter - implementacja HibernateFilter, umożliwiająca grupowanie filtrów za pomocą operatorów logicznych AND i OR.

 

Przykład z jednym filtrem
SimpleHibernateFilter filter = new SimpleHibernateFilter( "userName", "jkowalski" ); //użytkownik o loginie "jkowalski"
 
//LUB
 
SimpleHibernateFilter filter = new SimpleHibernateFilter( "userName", "jkowalski", FilterOperator.NOTEQ ); //użytkownicy, poza użytkownikiem o loginie "jkowalski"

W pierwszym filtrze nie zdefiniowaliśmy operatora, dlatego uwzględniany jest domyślny operator EQ. Filtr ten ogranicza wyszukiwanie do użytkownika o loginie "jkowalski". Drugi filtr nadaje ograniczenie na użytkowników poza użytkownikiem o loginie "jkowalski". Świadczy o tym operator NOTEQ.

 

Przykład z grupowaniem filtrów
//Tworzymy grupę warunków połączonych operatorem logicznym OR
GroupHibernateFilter groupFilter = new GroupHibernateFilter();
groupFilter.setLogicOperator( LogicOperator.OR );
 
SimpleHibernateFilter filter1 = new SimpleHibernateFilter( "userName", "j%", FilterOperator.LIKE );
groupFilter.addFilter(filter1);
SimpleHibernateFilter filter2 = new SimpleHibernateFilter( "firstName", "j%", FilterOperator.LIKE );
groupFilter.addFilter(filter2);
SimpleHibernateFilter filter3 = new SimpleHibernateFilter( "lastName", "j%", FilterOperator.LIKE );
groupFilter.addFilter(filter3);

Powyższy przykład prezentuje filtry połączone warunkiem logicznym OR. Tak skonstruowany filtr wyszuka użytkowników których login lub imię lub nazwisko zaczynają się na literę "j".

 

Przykład złożonego grupowania filtrów
//Tworzymy grupę warunków połączonych operatorem logicznym OR
GroupHibernateFilter mainGroupFilter = new GroupHibernateFilter();
mainGroupFilter.setLogicOperator( LogicOperator.OR );

//Tworzymy grupę warunków połączonych operatorem logicznym AND
GroupHibernateFilter subGroupFilter = new GroupHibernateFilter();
subGroupFilter1.setLogicOperator( LogicOperator.AND );


SimpleHibernateFilter filter1 = new SimpleHibernateFilter( "userName", "j%", FilterOperator.LIKE );
subGroupFilter.addFilter(filter1);
SimpleHibernateFilter filter2 = new SimpleHibernateFilter( "firstName", "k%", FilterOperator.LIKE );
subGroupFilter.addFilter(filter2);


//Tworzymy grupę warunków połączonych operatorem logicznym AND (jeżeli nie zdefiniujemy operatora to domyślnie jest nim AND)
SimpleHibernateFilter filter3 = new SimpleHibernateFilter( "userName", "jkowalski" );
subGroupFilter2.addFilter(filter3);

mainGroupFilter.addFilter( subGroupFilter );
mainGroupFilter.addFilter( filter3 );

W powyższym przykładzie został zdefiniowany złożony filtr grupowy. Wynikiem takiej implementacji będzie następujący warunek:

 ( userName like "j%" AND firstName like "k% ) OR ( userName = "jkowalski" )
  • No labels