parent
4843869e6f
commit
a8c886d40e
@ -0,0 +1,56 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; |
||||||
|
|
||||||
|
import java.util.HashSet; |
||||||
|
import java.util.Set; |
||||||
|
|
||||||
|
import com.vaadin.server.SerializablePredicate; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
public class PersonFilter implements SerializablePredicate<Person> { |
||||||
|
|
||||||
|
private static final long serialVersionUID = -8481035921020651601L; |
||||||
|
private Set<Integer> selectedPersons = null; |
||||||
|
private Set<GroupDef> selectedGroups = null; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean test(Person t) { |
||||||
|
if (selectedGroups == null && selectedPersons == null) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (personSelected(t) == false) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
// if (personInGroup(t) == false) {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
private boolean personInGroup(Person t) { |
||||||
|
return selectedGroups != null; |
||||||
|
} |
||||||
|
|
||||||
|
private boolean personSelected(Person t) { |
||||||
|
if (selectedPersons != null) { |
||||||
|
if (selectedPersons.contains(t.getId()) == false) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public void setSelected(Set<Person> selected) { |
||||||
|
if (selected == null) { |
||||||
|
selectedPersons = null; |
||||||
|
return; |
||||||
|
} |
||||||
|
selectedPersons = new HashSet<>(); |
||||||
|
for (Person p : selected) { |
||||||
|
selectedPersons.add(p.getId()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,69 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; |
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse; |
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue; |
||||||
|
|
||||||
|
import java.util.Collections; |
||||||
|
import java.util.HashSet; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Set; |
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.AbstractDatabaseTest; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
class PersonFilterTest { |
||||||
|
|
||||||
|
private PersonFilter filter; |
||||||
|
private List<Person> persons; |
||||||
|
|
||||||
|
@BeforeEach |
||||||
|
void setUp() throws Exception { |
||||||
|
filter = new PersonFilter(); |
||||||
|
persons = AbstractDatabaseTest.createPersons(5); |
||||||
|
assertEquals(5, persons.size()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testNoFilterSet() { |
||||||
|
allAccepted(); |
||||||
|
|
||||||
|
assertTrue(filter.test(null)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testSelectionFilter() { |
||||||
|
Set<Person> selected = new HashSet<>(persons.subList(2, 4)); |
||||||
|
filter.setSelected(selected); |
||||||
|
assertFalse(filter.test(persons.get(0))); |
||||||
|
assertFalse(filter.test(persons.get(1))); |
||||||
|
assertFalse(filter.test(persons.get(4))); |
||||||
|
assertTrue(filter.test(persons.get(2))); |
||||||
|
assertTrue(filter.test(persons.get(3))); |
||||||
|
|
||||||
|
filter.setSelected(null); |
||||||
|
testNoFilterSet(); |
||||||
|
|
||||||
|
filter.setSelected(Collections.emptySet()); |
||||||
|
allFiltered(); |
||||||
|
|
||||||
|
filter.setSelected(new HashSet<>(persons)); |
||||||
|
allAccepted(); |
||||||
|
} |
||||||
|
|
||||||
|
public void allAccepted() { |
||||||
|
for (Person p : persons) { |
||||||
|
assertTrue(filter.test(p)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void allFiltered() { |
||||||
|
for (Person p : persons) { |
||||||
|
assertFalse(filter.test(p)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue