diff --git a/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java b/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java index 1b6747e4bdb1887488f1f925721dc39b9b6a1c63..6646b50e6e3da99f4414390d73d25523a15d5eb5 100644 --- a/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java +++ b/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java @@ -21,8 +21,15 @@ import org.s4s.modell.dto.Shop; public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO { private final List<Product> liste = new ArrayList<>(); - private final Product p = new Product(); private final Shop s = new Shop(); + private static ProductDAO search = null; + + public static ProductDAO getInstance() { + if (search == null) { + return new ProductDAOimpl(); + } + return search; + } @Override public List<Product> getProductByName(String typ) throws DAOException { @@ -72,6 +79,7 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO @Override public Product getProductById(int id) throws DAOException { + Product p = new Product(); try (ResultSet set = executeQuery("SELECT *" + " FROM \"ERR\".\"artikel\" a" + " WHERE a.artikelid = ('" + id + "')" @@ -82,14 +90,8 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO String kategorie = set.getString("kategorie"); double price = set.getDouble("preis"); String description = set.getString("beschreibung"); - int shopId = set.getInt("shopid"); - p.setName(name); - p.setId(pId); - p.setTyp(kategorie); - p.setPrice(price); - p.setDescription(description); - p.setShopId(shopId); + p = new Product(name, pId, kategorie, price, description); } } catch (SQLException ex) { throw new DAOException(ex); @@ -99,16 +101,15 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO @Override public Shop getProductOwner(Product product) throws DAOException { - try (ResultSet set = executeQuery("SELECT *" + Shop s = new Shop(); + try (ResultSet set = executeQuery("SELECT s.\"name\", s.\"shopid\"" + " FROM \"ERR\".\"shop\" s, \"ERR\".\"artikel\" a" + " WHERE s.shopid = a.shopid AND a.shopid = ('" + product.getShopId() + "');")) { if (set.next()) { int shopId = set.getInt("shopid"); String name = set.getString("name"); - s.setShopId(shopId); - s.setName(name); - + s = new Shop(shopId, name); } } catch (SQLException ex) { throw new DAOException(ex); @@ -141,12 +142,14 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO @Override public List<Product> getAllProductsFromShop(int id) throws DAOException { - try (ResultSet set = executeQuery("SELECT *" + try (ResultSet set = executeQuery("SELECT a.\"name\", a.\"artikelid\", a.\"kategorie\"," + + " a.\"preis\", a.\"beschreibung\", a.\"shopid\"" + " FROM \"ERR\".\"shop\" s, \"ERR\".\"artikel\" a" - + " WHERE s.shopid = a.shopid AND a.shopid = ('" + id + "');")) { + + " WHERE s.shopid = a.shopid AND a.shopid = ('" + id + "')" + + " AND a.gekauft = 'false';")) { while (set.next()) { String name = set.getString("name"); - int ida = set.getInt("artikelID"); + int ida = set.getInt("artikelid"); String kategorie = set.getString("kategorie"); double price = set.getDouble("preis"); String description = set.getString("beschreibung"); diff --git a/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java b/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java index a6c444c2e79555918793190caf7ada47bb62f36a..05410e8ac7687047c026f97d60038a868e1a5b20 100644 --- a/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java +++ b/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java @@ -30,6 +30,17 @@ public class ShopDAOimpl extends AbstractDatabaseClass implements ShopDAO { private final User user = (User) UI.getCurrent().getSession().getAttribute(Roles.CURRENTUSER); private final Statement statement = JDBCConnection.getInstance().getStatement(); + // Edit Holger + private static final ShopDAO search = null; + + public static ShopDAO getInstance() { + if (search == null) { + return new ShopDAOimpl(); + } + return search; + } + // Edit Ende + @Override public void checkUserShop(String shopName) throws OwnsAlreadyShop, SQLException { boolean test = viewShop(user); @@ -102,13 +113,12 @@ public class ShopDAOimpl extends AbstractDatabaseClass implements ShopDAO { Shop s = new Shop(); try (ResultSet set = executeQuery("SELECT *" + " FROM \"ERR\".\"shop\" s" - + " WHERE s.name = ('" + typ + "');")) { + + " WHERE LOWER(s.name) ILIKE LOWER('%" + typ + "%')");) { while (set.next()) { int shopId = set.getInt("shopid"); String name = set.getString("name"); - s.setShopId(shopId); - s.setName(name); + s = new Shop(shopId, name); list.add(s); } } catch (SQLException ex) { diff --git a/src/main/java/org/s4s/gui/InitView.java b/src/main/java/org/s4s/gui/InitView.java index 23c8e72dc255a2ae3e3725e31553a20fe56bb883..73f63af22b2ec9523213f67038495f72b5f775ee 100644 --- a/src/main/java/org/s4s/gui/InitView.java +++ b/src/main/java/org/s4s/gui/InitView.java @@ -32,7 +32,7 @@ public class InitView extends UI { navi.addView(Views.LOGIN, LoginView.class); navi.addView(Views.WARENKORB, WarenkorbView.class); navi.addView(Views.PASSWORT, PasswortView.class); - // navi.addView(Views.BENUTZERKONTO, BenutzerkontoView.class); + // navi.addView(Views.BENUTZERKONTO, BenutzerkontoView.class); navi.addView(Views.ARTIKELDETAILS, ArtikeldetailsView.class); navi.addView(Views.CHECKOUT, CheckoutView.class); navi.addView(Views.IMPRESSUM, ImpressumView.class); @@ -48,6 +48,7 @@ public class InitView extends UI { navi.addView(Views.TRANSAKTIONSBESTAETIGUNG, TransaktionsBestaetigung.class); navi.addView(Views.MANAGERVIEW, ManagerView.class); navi.addView(Views.SHOPVIEW, ShopView.class); + navi.addView(Views.ARTIKELSHOPVIEW, ArtikelShopView.class); //Test der RegistrierungsView UI.getCurrent().getNavigator().navigateTo(Views.WELCOME); setHeight(100f, Unit.PERCENTAGE); diff --git a/src/main/java/org/s4s/gui/views/ArtikelShopView.java b/src/main/java/org/s4s/gui/views/ArtikelShopView.java new file mode 100644 index 0000000000000000000000000000000000000000..a894ed87f8a1ca5f440099d0215e4988483e50c3 --- /dev/null +++ b/src/main/java/org/s4s/gui/views/ArtikelShopView.java @@ -0,0 +1,94 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.s4s.gui.views; + +import com.vaadin.data.util.BeanContainer; +import com.vaadin.data.util.BeanItem; +import com.vaadin.event.ItemClickEvent; +import com.vaadin.navigator.ViewChangeListener; +import com.vaadin.server.FontAwesome; +import com.vaadin.ui.Button; +import com.vaadin.ui.Notification; +import com.vaadin.ui.Table; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.themes.ValoTheme; +import java.util.HashSet; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.s4s.exceptions.DAOException; +import org.s4s.modell.dto.Product; +import org.s4s.process.control.ProductControl; +import org.s4s.services.util.Views; + +/** + * + * @author Holger + */ +public class ArtikelShopView extends TemplateView { + + private final ProductControl controllerProducts = new ProductControl(); + private Product product = null; + + @Override + public void enter(ViewChangeListener.ViewChangeEvent event) { + if (event.getParameters() != null) { + // split at "/", add each part as a label + String str = event.getParameters(); + int id = Integer.parseInt(str); + + this.setUp(id); + } else { + Notification.show(null, "Kein Shop ausgewählt!", Notification.Type.HUMANIZED_MESSAGE); + UI.getCurrent().getNavigator().navigateTo(Views.WELCOME); + } + } + + public void setUp(int id) { + VerticalLayout layout = new VerticalLayout(); + setSizeFull(); + + Button zurueckButton = new Button("Weitersuchen!"); + + zurueckButton.setIcon(FontAwesome.ARROW_LEFT); + zurueckButton.addStyleName(ValoTheme.BUTTON_LINK); + + zurueckButton.addClickListener((event) -> { + UI.getCurrent().getNavigator().navigateTo(Views.SUCHE); + }); + + BeanContainer<Integer, Product> dataProducts = new BeanContainer<>(Product.class); + Table table = new Table("Products", dataProducts); + dataProducts.setBeanIdProperty("id"); + Set<Product> liste = new HashSet<>(); + try { + liste.addAll(controllerProducts.getAllProductsFromShop(id)); + } catch (DAOException ex) { + Logger.getLogger(SucheView.class.getName()).log(Level.SEVERE, null, ex); + } + dataProducts.removeAllItems(); + dataProducts.addAll(liste); + table.setPageLength(table.size()); + table.setVisibleColumns(new Object[]{"name", "price"}); + table.setColumnHeader("name", "Name"); + table.setColumnHeader("price", "Preis in €"); + layout.addComponent(table); + table.setSizeFull(); + + table.addItemClickListener((ItemClickEvent event) -> { + BeanItem<Product> productBean = dataProducts.getItem(event.getItemId()); + product = productBean.getBean(); + if (event.isDoubleClick()) { + UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELDETAILS + "/" + product.getId()); + } + }); + layout.addComponent(zurueckButton); + + super.setUpFooterAndHeader(layout); + + } +} diff --git a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java index a9bda36f59e57de40ce521dfbb89fe18b5b006fd..0b7002661ce97c60a8959cda8f5e9c991ab7e1d4 100644 --- a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java +++ b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java @@ -1,6 +1,7 @@ package org.s4s.gui.views; import com.vaadin.navigator.ViewChangeListener; +import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -8,6 +9,7 @@ import com.vaadin.ui.Notification; import com.vaadin.ui.Panel; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.themes.ValoTheme; import java.util.logging.Level; import java.util.logging.Logger; import org.s4s.exceptions.DAOException; @@ -15,7 +17,6 @@ import org.s4s.modell.dto.Product; import org.s4s.modell.dto.Shop; import org.s4s.modell.dto.Warenkorb; import org.s4s.process.control.ProductControl; -import org.s4s.services.util.Roles; import org.s4s.services.util.Views; /** @@ -25,9 +26,9 @@ import org.s4s.services.util.Views; public class ArtikeldetailsView extends TemplateView { private final Warenkorb warenkorb = Warenkorb.getInstance(); - private Product product = new Product(); - private Shop shop = new Shop(); - private final ProductControl controller = new ProductControl(); + private Product product = null; + private Shop shop = null; + private final ProductControl controllerProduct = new ProductControl(); private final VerticalLayout verticalLayout = new VerticalLayout(); @Override @@ -36,7 +37,9 @@ public class ArtikeldetailsView extends TemplateView { // split at "/", add each part as a label String str = event.getParameters(); int id = Integer.parseInt(str); - + for (Product p : warenkorb.inhalt()) { + System.out.println(p.getName()); + } this.setUp(id); } else { Notification.show(null, "Kein Artikel ausgewählt!", Notification.Type.HUMANIZED_MESSAGE); @@ -46,8 +49,11 @@ public class ArtikeldetailsView extends TemplateView { public void setUp(int id) { try { - product = controller.getProductById(id); - shop = controller.getProductOwner(product); + this.setSizeFull(); + product = controllerProduct.getProductById(id); + shop = controllerProduct.getProductOwner(product); + System.out.println(shop.getName()); + System.out.println(shop.getShopId()); HorizontalLayout horizontalLayout = new HorizontalLayout(); Panel p = new Panel("Name: " + product.getName()); Panel p1 = new Panel("Beschreibung: " + product.getDescription()); @@ -64,27 +70,40 @@ public class ArtikeldetailsView extends TemplateView { verticalLayout.setComponentAlignment(p3, Alignment.MIDDLE_LEFT); verticalLayout.addComponent(p4); verticalLayout.setComponentAlignment(p4, Alignment.MIDDLE_LEFT); - verticalLayout.addComponent(horizontalLayout); - if (session.getAttribute(Roles.CURRENTUSER) != null) { - System.out.println(session.getAttribute(Roles.CURRENTUSER)); - Button addButton = new Button("Hinzufügen"); + // if (session.getAttribute(Roles.CURRENTUSER) != null) { + Button zurueckButton = new Button("Weitersuchen!"); - addButton.addClickListener((event) -> { - if (warenkorb.contains(product)) { - Notification.show(null, product.getName() + " befindet sich schon in Ihrem Warenkorb!", - Notification.Type.WARNING_MESSAGE); - } else { - warenkorb.add(product); - Notification.show(null, product.getName() + " wurde in den Warenkorb hinzugefügt!", - Notification.Type.WARNING_MESSAGE); - System.out.println(warenkorb.getAnzahl()); - } - }); - verticalLayout.addComponent(addButton); - verticalLayout.setComponentAlignment(addButton, Alignment.TOP_RIGHT); - } + zurueckButton.setIcon(FontAwesome.ARROW_LEFT); + zurueckButton.addStyleName(ValoTheme.BUTTON_LINK); + zurueckButton.addClickListener((event) -> { + UI.getCurrent().getNavigator().navigateTo(Views.SUCHE); + }); + + horizontalLayout.addComponent(zurueckButton); + horizontalLayout.setComponentAlignment(zurueckButton, Alignment.TOP_LEFT); + + Button addButton = new Button("In den Warenkorb legen"); + + addButton.addClickListener((event) -> { + if (warenkorb.contains(product)) { + Notification.show(null, product.getName() + " befindet sich schon in Ihrem Warenkorb!", + Notification.Type.WARNING_MESSAGE); + } else { + warenkorb.add(product); + Notification.show(null, product.getName() + " wurde in den Warenkorb hinzugefügt!", + Notification.Type.WARNING_MESSAGE); + System.out.println(warenkorb.getAnzahl()); + } + }); + horizontalLayout.addComponent(addButton); + horizontalLayout.setComponentAlignment(addButton, Alignment.TOP_RIGHT); + // } + horizontalLayout.setSizeFull(); + verticalLayout.addComponent(horizontalLayout); + verticalLayout.setComponentAlignment(horizontalLayout, Alignment.MIDDLE_CENTER); + verticalLayout.setSizeFull(); this.addComponent(verticalLayout); } catch (DAOException ex) { Logger.getLogger(ArtikeldetailsView.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/s4s/gui/views/LoginView.java b/src/main/java/org/s4s/gui/views/LoginView.java index 9fbe68df5e94c57f572281c01142d9ce6ba8a9c6..8a368588704c4fb8b411f91affe457f8faf18904 100644 --- a/src/main/java/org/s4s/gui/views/LoginView.java +++ b/src/main/java/org/s4s/gui/views/LoginView.java @@ -1,5 +1,6 @@ package org.s4s.gui.views; +import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.server.FontAwesome; import com.vaadin.shared.ui.label.ContentMode; @@ -19,9 +20,12 @@ import org.s4s.services.util.Views; public class LoginView extends TemplateView { private final LoginControl controller = new LoginControl(); + private View preView; @Override public void enter(ViewChangeListener.ViewChangeEvent event) { + String preView = event.getOldView().toString(); + System.out.println(preView.toString()); this.setUp(); } @@ -87,7 +91,6 @@ public class LoginView extends TemplateView { try { controller.getUserByCredentials(login, password); - } catch (NoSuchUserOrPassword ex) { Notification.show("Fehler", "Login oder Passwort falsch", Notification.Type.ERROR_MESSAGE); userLogin.setValue(""); diff --git a/src/main/java/org/s4s/gui/views/SucheView.java b/src/main/java/org/s4s/gui/views/SucheView.java index 51c60f8209f93b5046dc62e7e6c9f6dbd258a013..79b629cca86919df713a9c939cb4ff7619a29e92 100644 --- a/src/main/java/org/s4s/gui/views/SucheView.java +++ b/src/main/java/org/s4s/gui/views/SucheView.java @@ -6,7 +6,6 @@ import com.vaadin.event.ItemClickEvent; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; -import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Notification; import com.vaadin.ui.Table; import com.vaadin.ui.UI; @@ -21,7 +20,6 @@ import org.s4s.modell.dto.Shop; import org.s4s.modell.dto.Warenkorb; import org.s4s.process.control.ProductControl; import org.s4s.process.control.ShopControl; -import org.s4s.services.util.Roles; import org.s4s.services.util.Views; /** @@ -39,8 +37,6 @@ public class SucheView extends TemplateView { private final BeanContainer<Integer, Shop> dataShops = new BeanContainer<>(Shop.class); private final Table tableProducts = new Table("Products", dataProducts); private final Table tableShops = new Table("Shops", dataShops); - private final VerticalLayout layout = new VerticalLayout(); - private final HorizontalLayout searchLayout = new HorizontalLayout(); @Override public void enter(ViewChangeListener.ViewChangeEvent event) { @@ -49,19 +45,21 @@ public class SucheView extends TemplateView { // split at "/", add each part as a label String str = event.getParameters(); str = str.trim(); - productsSearch(str); shopSearch(str); + productsSearch(str); } } public void setUp() { - layout.setSizeFull(); - layout.setMargin(true); - final HorizontalLayout buttonLayout = new HorizontalLayout(); - buttonLayout.addComponent(searchLayout); - buttonLayout.setComponentAlignment(searchLayout, Alignment.TOP_RIGHT); - buttonLayout.setSizeFull(); - addComponent(buttonLayout); + + final VerticalLayout contentLayout = new VerticalLayout(); + super.setUpFooterAndHeader(contentLayout); + + setSizeFull(); + contentLayout.addComponent(tableShops); + contentLayout.setComponentAlignment(tableShops, Alignment.TOP_LEFT); + contentLayout.addComponent(tableProducts); + contentLayout.setComponentAlignment(tableProducts, Alignment.TOP_LEFT); tableProducts.setSizeFull(); tableProducts.setSelectable(true); tableProducts.setWidth("100%"); @@ -70,34 +68,35 @@ public class SucheView extends TemplateView { tableProducts.setVisibleColumns(new Object[]{"name", "price"}); tableProducts.setColumnHeader("name", "Name"); tableProducts.setColumnHeader("price", "Preis in €"); - tableShops.setSizeFull(); + tableShops.setSelectable(true); + tableShops.setPageLength(tableShops.size()); + tableShops.setVisibleColumns(new Object[]{"name"}); + tableShops.setSizeFull(); + // this.addComponent(contentLayout); Button detailButton = new Button("Artikeldetails"); detailButton.addClickListener((event) -> { UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELDETAILS + "/" + product.getId()); }); // searchLayout.addComponent(detailButton); // searchLayout.setComponentAlignment(detailButton, Alignment.MIDDLE_LEFT); + /* Button addButton = new Button("Hinzufügen"); + + addButton.addClickListener((event) -> { + if (this.product == null) { + Notification.show(null, "Bitte Produkt(e) auswählen!", Notification.Type.HUMANIZED_MESSAGE); + } else { + warenkorb.add(product); + Notification.show(null, product.getName() + " wurde in den Warenkorb hinzugefügt!", + Notification.Type.WARNING_MESSAGE); + System.out.println(warenkorb.getAnzahl()); + } - if (session.getAttribute(Roles.CURRENTUSER) != null) { - System.out.println(session.getAttribute(Roles.CURRENTUSER)); - Button addButton = new Button("Hinzufügen"); - - addButton.addClickListener((event) -> { - if (this.product == null) { - Notification.show(null, "Bitte Produkt(e) auswählen!", Notification.Type.HUMANIZED_MESSAGE); - } else { - warenkorb.add(product); - Notification.show(null, product.getName() + " wurde in den Warenkorb hinzugefügt!", - Notification.Type.WARNING_MESSAGE); - System.out.println(warenkorb.getAnzahl()); - } + }); - }); - buttonLayout.addComponent(addButton); - buttonLayout.setComponentAlignment(addButton, Alignment.BOTTOM_LEFT); - } + contentLayout.addComponent(addButton); + contentLayout.setComponentAlignment(addButton, Alignment.BOTTOM_LEFT);*/ tableProducts.addItemClickListener((ItemClickEvent event) -> { BeanItem<Product> productBean = dataProducts.getItem(event.getItemId()); product = productBean.getBean(); @@ -109,43 +108,45 @@ public class SucheView extends TemplateView { tableShops.addItemClickListener((ItemClickEvent event) -> { BeanItem<Shop> shopBean = dataShops.getItem(event.getItemId()); shop = shopBean.getBean(); + Set<Product> list = new HashSet<>(); + int id = shop.getShopId(); + try { + list.addAll(controllerProducts.getAllProductsFromShop(id)); + } catch (DAOException ex) { + Logger.getLogger(SucheView.class.getName()).log(Level.SEVERE, null, ex); + } if (event.isDoubleClick()) { - // UI.getCurrent().getNavigator().navigateTo(Views.SUCHE + "/" + shop.getBesitzer()); + if (list.isEmpty()) { + Notification.show(null, shop.getName() + " besitzt keine Produkte!", Notification.Type.HUMANIZED_MESSAGE); + } else { + UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELSHOPVIEW + "/" + shop.getShopId()); + } } }); - layout.addComponent(buttonLayout); - super.setUpFooterAndHeader(layout); - } private void productsSearch(String str) { // if (dataProducts.size() == 0) { // Notification.show(null, "Keine Produkte gefunden!", Notification.Type.WARNING_MESSAGE); // } else { - tableProducts.setSizeFull();; dataProducts.setBeanIdProperty("id"); + dataProducts.removeAllItems(); Set<Product> liste = new HashSet<>(); addComponent(tableProducts); try { - liste.addAll(controllerProducts.getProductByName(str)); - liste.addAll(controllerProducts.getProductByDescription(str)); if (isInteger(str)) { int tmp = Integer.parseInt(str); // liste.addAll(controllerProducts.getAllProductsFromShop(tmp)); liste.addAll(controllerProducts.getProductListById(tmp)); + } else { + liste.addAll(controllerProducts.getProductByName(str)); + liste.addAll(controllerProducts.getProductByDescription(str)); } } catch (DAOException ex) { Logger.getLogger(SucheView.class.getName()).log(Level.SEVERE, null, ex); } dataProducts.removeAllItems(); dataProducts.addAll(liste); - tableProducts.addItemClickListener((ItemClickEvent event) -> { - BeanItem<Product> productBean = dataProducts.getItem(event.getItemId()); - product = productBean.getBean(); -// if (event.isDoubleClick()) { -// UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELDETAILS + "/" + product.getId()); -// } - }); } private boolean isInteger(String str) { @@ -162,24 +163,15 @@ public class SucheView extends TemplateView { private void shopSearch(String str) { dataShops.setBeanIdProperty("name"); Set<Shop> listeShops = new HashSet<>(); - addComponent(tableShops); try { listeShops.addAll(controllerShops.getShopByName(str)); } catch (DAOException ex) { Logger.getLogger(SucheView.class.getName()).log(Level.SEVERE, null, ex); } - + if (listeShops.isEmpty()) { + tableShops.setVisible(false); + } dataShops.removeAllItems(); dataShops.addAll(listeShops); - tableShops.setPageLength(tableShops.size()); - tableShops.setVisibleColumns(new Object[]{"name"}); - tableShops.addItemClickListener((ItemClickEvent event) -> { - BeanItem<Shop> shopBean = dataShops.getItem(event.getItemId()); - shop = shopBean.getBean(); - if (event.isDoubleClick()) { - - // UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELDETAILS + "/" + product.getId()); - } - }); } } diff --git a/src/main/java/org/s4s/gui/views/WarenkorbView.java b/src/main/java/org/s4s/gui/views/WarenkorbView.java index 75c5ea5c431c710b276d4bc46c3913233a19437b..f2765feb6f36af494761de7676a560ede5fc0bf0 100644 --- a/src/main/java/org/s4s/gui/views/WarenkorbView.java +++ b/src/main/java/org/s4s/gui/views/WarenkorbView.java @@ -35,10 +35,10 @@ public class WarenkorbView extends TemplateView { @Override public void enter(ViewChangeListener.ViewChangeEvent event) { - if (session.getAttribute(Roles.CURRENTUSER) == null) { - UI.getCurrent().getNavigator().navigateTo(Views.LOGIN); - Notification.show(null, "Einloggen, um auf den Warenkorb zuzugreifen!", Notification.Type.WARNING_MESSAGE); - } +// if (session.getAttribute(Roles.CURRENTUSER) == null) { +// UI.getCurrent().getNavigator().navigateTo(Views.LOGIN); +// Notification.show(null, "Einloggen, um auf den Warenkorb zuzugreifen!", Notification.Type.WARNING_MESSAGE); +// } this.setUp(); } @@ -80,7 +80,7 @@ public class WarenkorbView extends TemplateView { table.addGeneratedColumn("Anzahl", (Table source, Object itemId, Object columnId) -> { int a = 0; for (Product p : list) { - a = warenkorb.amount(p); // Nicht fertig, gibt falsche Zahl + } Panel p = new Panel("" + a); return p; @@ -94,6 +94,12 @@ public class WarenkorbView extends TemplateView { } }); + Button clearButton = new Button("Warenkorb leeren!"); + clearButton.addClickListener((Button.ClickEvent event) -> { + warenkorb.clear(); + UI.getCurrent().getNavigator().navigateTo(Views.WARENKORB); + }); + Button removeButton = new Button("Aus Warenkorb entfernen!"); removeButton.addClickListener((Button.ClickEvent event) -> { if (this.product == null) { @@ -107,19 +113,26 @@ public class WarenkorbView extends TemplateView { Button buyButton = new Button("Kaufen!"); buyButton.addClickListener((Button.ClickEvent event) -> { - TransactionControl tr = new TransactionControl(); - try { - tr.createTransactions(); - } catch (DAOException ex) { - Logger.getLogger(WarenkorbView.class.getName()).log(Level.SEVERE, null, ex); - } catch (SQLException ex) { - Logger.getLogger(WarenkorbView.class.getName()).log(Level.SEVERE, null, ex); + if (session.getAttribute(Roles.CURRENTUSER) == null) { + UI.getCurrent().getNavigator().navigateTo(Views.LOGIN); + Notification.show(null, "Einloggen, den Kauf durchzuführen!", Notification.Type.WARNING_MESSAGE); + } else { + TransactionControl tr = new TransactionControl(); + try { + tr.createTransactions(); + } catch (DAOException ex) { + Logger.getLogger(WarenkorbView.class.getName()).log(Level.SEVERE, null, ex); + } catch (SQLException ex) { + Logger.getLogger(WarenkorbView.class.getName()).log(Level.SEVERE, null, ex); + } + UI.getCurrent().getNavigator().navigateTo(Views.TRANSAKTIONSBESTAETIGUNG); } - UI.getCurrent().getNavigator().navigateTo(Views.TRANSAKTIONSBESTAETIGUNG); }); buttonLayout.addComponent(buyButton); buttonLayout.setComponentAlignment(buyButton, Alignment.BOTTOM_LEFT); + buttonLayout.addComponent(clearButton); + buttonLayout.setComponentAlignment(clearButton, Alignment.BOTTOM_LEFT); buttonLayout.addComponent(removeButton); buttonLayout.setComponentAlignment(removeButton, Alignment.BOTTOM_RIGHT); this.addComponent(buttonLayout); diff --git a/src/main/java/org/s4s/modell/dto/Shop.java b/src/main/java/org/s4s/modell/dto/Shop.java index aca3f8017dde7810513dee3968ae1091a5da4b68..650427b302383816ffb08fb03a6de935e91d38fd 100644 --- a/src/main/java/org/s4s/modell/dto/Shop.java +++ b/src/main/java/org/s4s/modell/dto/Shop.java @@ -16,6 +16,11 @@ public class Shop { } + public Shop(int shopId, String name) { + this.shopId = shopId; + this.name = name; + } + public Shop(int shopId, String name, int besitzer, double bewertung, int bewertunganzahl) { this.shopId = shopId; this.name = name; diff --git a/src/main/java/org/s4s/modell/dto/Warenkorb.java b/src/main/java/org/s4s/modell/dto/Warenkorb.java index d2e3349b7ee24aa2062fee6a68a52e2bbf1c7d63..48b9d1d655a768e432a15889a08b0bf568ccf28a 100644 --- a/src/main/java/org/s4s/modell/dto/Warenkorb.java +++ b/src/main/java/org/s4s/modell/dto/Warenkorb.java @@ -12,7 +12,6 @@ public class Warenkorb { private final List<Product> products; private static Warenkorb warenkorb; - private int a; public Warenkorb() { products = new ArrayList<>(); @@ -69,11 +68,8 @@ public class Warenkorb { return products.size(); } - public int amount(Product p) { - products.forEach((tmp) -> { - a = Collections.frequency(products, tmp); - }); - return a; + public int getAmount(Product p) { + return Collections.frequency(products, p); } public void auflisten() { diff --git a/src/main/java/org/s4s/process/control/ProductControl.java b/src/main/java/org/s4s/process/control/ProductControl.java index b29678463be6bed5bb30b3b459d00283697effcd..1ed30febc6ec6d24fcf5890704cf0eccf5759b0f 100644 --- a/src/main/java/org/s4s/process/control/ProductControl.java +++ b/src/main/java/org/s4s/process/control/ProductControl.java @@ -13,7 +13,11 @@ import org.s4s.modell.dto.Shop; */ public class ProductControl { - private static ProductDAO dao = new ProductDAOimpl(); + private static ProductDAO dao = null; + + public ProductControl() { + dao = ProductDAOimpl.getInstance(); + } public List<Product> getProductByName(String kate) throws DAOException { return dao.getProductByName(kate); diff --git a/src/main/java/org/s4s/process/control/ShopControl.java b/src/main/java/org/s4s/process/control/ShopControl.java index 5394d1b1792a59fde0810e21cb2d0c3f662cf7d6..ebe7ab66851a334d0f5191088b4cf80077c542aa 100644 --- a/src/main/java/org/s4s/process/control/ShopControl.java +++ b/src/main/java/org/s4s/process/control/ShopControl.java @@ -15,7 +15,11 @@ import org.s4s.modell.dto.User; */ public class ShopControl { - private final ShopDAO dao = new ShopDAOimpl(); + private static ShopDAO dao = null; + + public ShopControl() { + dao = ShopDAOimpl.getInstance(); + } public void checkUserShop(String shopName) throws OwnsAlreadyShop, SQLException { dao.checkUserShop(shopName); diff --git a/src/main/java/org/s4s/services/util/Views.java b/src/main/java/org/s4s/services/util/Views.java index c1f7e7ad61f2b12f2027a5b8be418e9ebeaffb31..55e9f01873f1508350de031ae73b07b8a1614a5e 100644 --- a/src/main/java/org/s4s/services/util/Views.java +++ b/src/main/java/org/s4s/services/util/Views.java @@ -27,6 +27,7 @@ public final class Views { public final static String TRANSAKTIONSBESTAETIGUNG = "transaktionsbestaetigung"; public final static String MANAGERVIEW = "managerview"; public final static String SHOPVIEW = "shopview"; + public final static String ARTIKELSHOPVIEW = "artikelshopview"; private Views() { diff --git a/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java b/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java index 559dbdef52214494b5030ef66d6e13df3a7d56fe..508e47e29dcb9b270890f5cdc0e688653148f989 100644 --- a/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java +++ b/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java @@ -12,7 +12,6 @@ import org.s4s.process.control.RegistrationControl; import org.s4s.services.db.JDBCConnection; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.Date; /** @@ -26,15 +25,12 @@ public class RegistrationControl_Test { public void nameValidator_Test() { assertTrue(RegistrationControl.nameValidator("Uerdingen")); assertFalse(RegistrationControl.nameValidator("fs2df3")); - + } @Before - public void init(){ - Date bday = new Date(); - bday.setYear(1995); - bday.setMonth(5); - bday.setDate(15); + public void init() { + Date bday = new Date(1995, 5, 15); RegistrationDAO regDAO = new RegistrationDAO(); int userID = regDAO.getUserID(); @@ -43,7 +39,7 @@ public class RegistrationControl_Test { user = new User("Testcase", userID); user.setEmail("testmail@gmx.de"); user.setFachbereichId(2); - user.setGeburtsdatum("1995-5-15"); + user.setGeburtsdatum(bday); user.setNachname("Nachname"); user.setVorname("Tester"); } @@ -51,32 +47,31 @@ public class RegistrationControl_Test { @Test public void Registration_Test() { - String sql_query = "SELECT *" + " FROM \"ERR\".\"user\" u " + " WHERE u.benutzername = '" + "Testcase" +"';"; + String sql_query = "SELECT *" + " FROM \"ERR\".\"user\" u " + " WHERE u.benutzername = '" + "Testcase" + "';"; // String sql_query = "SELECT * FROM \"ERR\".\"user\" u WHERE u.benutzername = 'Testcase'"; try { ResultSet set = JDBCConnection.getInstance().getStatement().executeQuery(sql_query); - if(!set.next()){ + if (!set.next()) { throw new WrongInputException("Wrong Input"); } - assertEquals(user.getBenutzername(),set.getString("benutzername")); - assertEquals(user.getVorname(),set.getString("vorname")); - assertEquals(user.getNachname(),set.getString("nachname")); - assertEquals(user.getFachbereichId(),set.getInt("fachbreichid")); - assertEquals(user.getEmail(),set.getString("email")); - assertEquals(user.getUserId(),set.getInt("userID")); + assertEquals(user.getBenutzername(), set.getString("benutzername")); + assertEquals(user.getVorname(), set.getString("vorname")); + assertEquals(user.getNachname(), set.getString("nachname")); + assertEquals(user.getFachbereichId(), set.getInt("fachbreichid")); + assertEquals(user.getEmail(), set.getString("email")); + assertEquals(user.getUserId(), set.getInt("userID")); } catch (Exception e) { e.printStackTrace(); } - } @After - public void delete(){ - String sql_delete = "DELETE FROM \"ERR\".\"user\" u "+ " WHERE u.benutzername = '" + "Testcase" +"';"; + public void delete() { + String sql_delete = "DELETE FROM \"ERR\".\"user\" u " + " WHERE u.benutzername = '" + "Testcase" + "';"; try { int exe = JDBCConnection.getInstance().getStatement().executeUpdate(sql_delete); - if(exe<0){ + if (exe < 0) { throw new WrongInputException("Wrong input"); } } catch (Exception e) {