/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.adm.ui; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.vaadin.data.Item; import com.vaadin.data.util.PropertysetItem; import ru.codeinside.adm.AdminServiceProvider; import ru.codeinside.adm.database.Employee; import ru.codeinside.gses.webui.containers.LazyLoadingContainer; import ru.codeinside.gses.webui.containers.LazyLoadingQuery; import ru.codeinside.gses.webui.utils.Components; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; public class EmployeeQuery implements LazyLoadingQuery { private static final long serialVersionUID = 1L; final long orgId; final boolean locked; final SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm"); String[] sortProps = {}; boolean[] sortAsc = {}; public EmployeeQuery(long orgId, boolean locked) { this.orgId = orgId; this.locked = locked; } @Override public int size() { return AdminServiceProvider.get().getEmployeesCount(orgId, locked); } @Override public List<Item> loadItems(int start, int count) { return AdminServiceProvider.get().withEmployees(orgId, locked, start, count, sortProps, sortAsc, new Function<List<Employee>, List<Item>>() { public List<Item> apply(List<Employee> employees) { final ArrayList<Item> items = new ArrayList<Item>(); for (Employee employee : employees) { items.add(createItem(employee)); } return items; } }); } @Override public Item loadSingleResult(String login) { return AdminServiceProvider.get().withEmployee(orgId, login, new Function<Employee, Item>() { public Item apply(Employee employee) { return createItem(employee); } }); } PropertysetItem createItem(final Employee employee) { PropertysetItem item = new PropertysetItem(); item.addItemProperty("login", Components.stringProperty(employee.getLogin())); item.addItemProperty("fio", Components.stringProperty(employee.getFio())); item.addItemProperty("roles", Components.stringProperty(Joiner.on(',').join(employee.getRoleNames()))); item.addItemProperty("date", Components.stringProperty(formatter.format(employee.getDate()))); item.addItemProperty("creator", Components.stringProperty(employee.getCreator())); item.addItemProperty("locked", Components.stringProperty(Boolean.toString(employee.isLocked()))); return item; } @Override public void setLazyLoadingContainer(LazyLoadingContainer paramLazyLoadingContainer) { } @Override public void setSorting(Object[] propertyIds, boolean[] ascending) { String[] props = new String[propertyIds.length]; for (int i = 0; i < propertyIds.length; i++) { props[i] = propertyIds[i].toString(); } sortProps = props; sortAsc = ascending; } }