Java tutorial
package com.mcparland.john.vaadin_mvn_arch.samples.crud; /* * #%L * vaadin_mvn_arch-ui * %% * Copyright (C) 2014 John McParland * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.mcparland.john.vaadin_mvn_arch.MyUI; import com.mcparland.john.vaadin_mvn_arch.samples.backend.DataService; import com.mcparland.john.vaadin_mvn_arch.samples.backend.data.Product; import com.vaadin.server.Page; /** * This class provides an interface for the logical operations between the CRUD * view, its parts like the product editor form and the data source, including * fetching and saving products. * * Having this separate from the view makes it easier to test various parts of * the system separately, and to e.g. provide alternative views for the same * data. */ public class SampleCrudLogic { private SampleCrudView view; public SampleCrudLogic(SampleCrudView simpleCrudView) { view = simpleCrudView; } public void init() { editProduct(null); // Hide and disable if not admin if (!MyUI.get().getAccessControl().isUserInRole("admin")) { view.setNewProductEnabled(false); } refreshTable(); } public void cancelProduct() { setFragmentParameter(""); view.clearSelection(); view.editProduct(null); } /** * Update the fragment without causing navigator to change view */ private void setFragmentParameter(String productId) { String fragmentParameter; if (productId == null || productId.isEmpty()) { fragmentParameter = ""; } else { fragmentParameter = productId; } Page page = MyUI.get().getPage(); page.setUriFragment("!" + SampleCrudView.VIEW_NAME + "/" + fragmentParameter, false); } public void enter(String productId) { if (productId != null && !productId.isEmpty()) { if (productId.equals("new")) { newProduct(); } else { // Ensure this is selected even if coming directly here from // login try { int pid = Integer.parseInt(productId); Product product = findProduct(pid); view.selectRow(product); } catch (NumberFormatException e) { } } } } private Product findProduct(int productId) { return DataService.get().getProductById(productId); } public void saveProduct(Product product) { view.showSaveNotification(product.getProductName() + " (" + product.getId() + ") updated"); view.clearSelection(); view.editProduct(null); refreshTable(); setFragmentParameter(""); } public void deleteProduct(Product product) { DataService.get().deleteProduct(product.getId()); view.showSaveNotification(product.getProductName() + " (" + product.getId() + ") removed"); view.clearSelection(); view.editProduct(null); refreshTable(); setFragmentParameter(""); } public void editProduct(Product product) { if (product == null) { setFragmentParameter(""); } else { setFragmentParameter(product.getId() + ""); } view.editProduct(product); } private void refreshTable() { Product oldSelection = view.getSelectedRow(); view.showProducts(DataService.get().getAllProducts()); view.selectRow(oldSelection); } public void newProduct() { view.clearSelection(); setFragmentParameter("new"); view.editProduct(new Product()); } public void rowSelected(Product product) { if (MyUI.get().getAccessControl().isUserInRole("admin")) { view.editProduct(product); } } }