package org.vaadin.viritin.testdomain; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; /** * * @author Matti Tahvonen */ public class Service { static final Random r = new Random(0); static final List<Group> groups = Arrays.asList(new Group("Athletes"), new Group("Nerds"), new Group("Collegues"), new Group("Students"), new Group("Hunting club members")); public static Person getPerson() { Person p = new Person(123, "Matti", "Meikäläinen", 6); p.getGroups().add(groups.get(1)); return p; } public static List<Group> getAvailableGroups() { return new ArrayList<>(groups); } public static List<Person> getListOfPersons(int total) { List<Person> l = new ArrayList<>(total); for (int i = 0; i < total; i++) { Person p = new Person(); p.setId(i + 1); p.setFirstName("First" + i); p.setLastName("Lastname" + i); p.setAge(r.nextInt(100)); l.add(p); } return l; } private static final long COUNT = 1000; private static List<Person> pagedBase; private static final Logger logger = Logger.getLogger(Service.class.getName()); public static List<Person> findAll(long start, long maxResults) { System.err.println("findAll " + start + " " + maxResults); if (pagedBase == null) { pagedBase = getListOfPersons((int) COUNT); } int end = (int) (start + maxResults); if (end > pagedBase.size()) { end = pagedBase.size(); } return pagedBase.subList((int) start, end); } public static long count() { logger.log(Level.INFO, "count"); if (pagedBase == null) { pagedBase = getListOfPersons((int) COUNT); } Logger.getAnonymousLogger().entering(Service.class.getName(), "count"); return COUNT; } public static long countByFirstName(String filter) { logger.log(Level.INFO, "countByFirstName " + filter); if (pagedBase == null) { pagedBase = getListOfPersons((int) COUNT); } return pagedBase.stream().filter(p->p.getFirstName().contains(filter)).count(); } public static List<Person> findByFirstName(String filter, long start, long maxResults) { System.err.println("findByFirstName " + filter + " " + start + " " + maxResults); if (pagedBase == null) { pagedBase = getListOfPersons((int) COUNT); } List<Person> filtered = pagedBase.stream().filter(p->p.getFirstName().contains(filter)).collect(Collectors.toList()); int end = (int) (start + maxResults); if (end > filtered.size()) { end = filtered.size(); } return filtered.subList((int) start, end); } }