/* * 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.gses.apservice; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import ru.codeinside.adm.database.Service; import ru.codeinside.gses.manager.ManagerService; import ru.codeinside.gses.webui.containers.LazyLoadingContainer; import ru.codeinside.gses.webui.containers.LazyLoadingQuery; import ru.codeinside.gses.webui.utils.Components; import com.vaadin.data.Item; import com.vaadin.data.util.PropertysetItem; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; public class ApServiceQuery implements LazyLoadingQuery { private static final long serialVersionUID = 1L; final SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm"); String[] sortProps = {}; boolean[] sortAsc = {}; private final ApServiceForm procedureForm; private LazyLoadingContainer container; public ApServiceQuery(ApServiceForm procedureForm) { this.procedureForm = procedureForm; } @Override public int size() { int apServiceCount; if (container != null) { apServiceCount = ManagerService.get().getApServiceCount(container.sender); } else { apServiceCount = ManagerService.get().getApServiceCount(null); } return apServiceCount; } @Override public List<Item> loadItems(int start, int count) { ArrayList<Item> items = new ArrayList<Item>(); List<Service> apServices; if (container != null){ apServices = ManagerService.get().getApServices(start, count, sortProps, sortAsc, container.sender); } else { apServices = ManagerService.get().getApServices(start, count, sortProps, sortAsc, null); } for (Service service : apServices) { items.add(createItem(service)); } return items; } @Override public Item loadSingleResult(String id) { final Service service = ManagerService.get().getApService(id); return createItem(service); } PropertysetItem createItem(final Service s) { ClickListener l = new ClickListener() { private static final long serialVersionUID = -1469916073974570914L; @Override public void buttonClick(ClickEvent event) { procedureForm.showForm(s); } }; PropertysetItem item = new PropertysetItem(); item.addItemProperty("id", Components.buttonProperty(s.getId().toString(), l)); item.addItemProperty("name", Components.stringProperty(s.getName())); item.addItemProperty("dateCreated", Components.stringProperty(formatter.format(s.getDateCreated()))); return item; } @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; } @Override public void setLazyLoadingContainer(LazyLoadingContainer container) { this.container = container; } }