From 27d1a6aa3e47a49095ad78835015c9e9c3e64af8 Mon Sep 17 00:00:00 2001
From: hkarwa2s <holger.karwanni@smail.inf.h-brs.de>
Date: Sun, 18 Jun 2017 18:28:15 +0200
Subject: [PATCH] =?UTF-8?q?Super=20toller=20Prototyp=20f=C3=BCr=20eine=20A?=
 =?UTF-8?q?rtikeldetailView,=20logik=20dahinter=20steht=20fast=20komplett,?=
 =?UTF-8?q?=20nur=20optisch,=20m=C3=A4=C3=A4=C3=A4=C3=A4h=20=20=20=20->=20?=
 =?UTF-8?q?Daf=C3=BCr=20an=20ProductDAO=20und=20ProductSearch=20rumgebaste?=
 =?UTF-8?q?lt=20Hinzuf=C3=BCgen=20von=20Transaction=20DTO=20und=20anpassen?=
 =?UTF-8?q?=20User=20DTO=20Suche=20welche=20=C3=BCber=20TemplateView=20fun?=
 =?UTF-8?q?ktioniert=20(atm=20nur=20Produkte)=20Und=20viele=20kleine=20opt?=
 =?UTF-8?q?ische=20Anpassungen=20zur=20Lesbarkeit=20des=20Codes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/org/s4s/dao/ProductDAO.java     |  2 +
 src/main/java/org/s4s/gui/InitView.java       |  2 +-
 .../org/s4s/gui/views/ArtikeldetailsView.java | 46 +++++++++-
 .../views/{ShopView.java => SucheView.java}   | 90 +++++--------------
 .../java/org/s4s/gui/views/TemplateView.java  | 24 +++--
 .../java/org/s4s/gui/views/WarenkorbView.java | 56 ++++++++++--
 .../java/org/s4s/modell/dto/Transaction.java  | 47 ++++++++++
 src/main/java/org/s4s/modell/dto/User.java    | 28 +++++-
 .../org/s4s/process/control/LoginControl.java | 11 +--
 .../s4s/process/control/ProductSearch.java    | 31 ++++++-
 .../java/org/s4s/services/util/Views.java     |  2 +-
 11 files changed, 243 insertions(+), 96 deletions(-)
 rename src/main/java/org/s4s/gui/views/{ShopView.java => SucheView.java} (57%)
 create mode 100644 src/main/java/org/s4s/modell/dto/Transaction.java

diff --git a/src/main/java/org/s4s/dao/ProductDAO.java b/src/main/java/org/s4s/dao/ProductDAO.java
index ceaefd3..1c95fa3 100644
--- a/src/main/java/org/s4s/dao/ProductDAO.java
+++ b/src/main/java/org/s4s/dao/ProductDAO.java
@@ -13,4 +13,6 @@ public interface ProductDAO {
     List<Product> getProductByName(String typ) throws DAOException;
 
     List<Product> getProductByDescription(String typ) throws DAOException;
+
+    Product getProductById(int id) throws DAOException;
 }
diff --git a/src/main/java/org/s4s/gui/InitView.java b/src/main/java/org/s4s/gui/InitView.java
index bd21083..ca28a8b 100644
--- a/src/main/java/org/s4s/gui/InitView.java
+++ b/src/main/java/org/s4s/gui/InitView.java
@@ -27,7 +27,7 @@ public class InitView extends UI {
     @Override
     protected void init(VaadinRequest vaadinRequest) {
         Navigator navi = new Navigator(this, this);
-        navi.addView(Views.SHOP, ShopView.class);
+        navi.addView(Views.SUCHE, SucheView.class);
         navi.addView(Views.WELCOME, WelcomeView.class);
         navi.addView(Views.LOGIN, LoginView.class);
         navi.addView(Views.WARENKORB, WarenkorbView.class);
diff --git a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java
index 7e77a81..99d0064 100644
--- a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java
+++ b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java
@@ -1,6 +1,19 @@
 package org.s4s.gui.views;
 
 import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.s4s.dao.ProductDAO;
+import org.s4s.exceptions.DAOException;
+import org.s4s.modell.dto.Product;
+import org.s4s.process.control.ProductSearch;
+import org.s4s.services.util.Views;
 
 /**
  *
@@ -8,9 +21,40 @@ import com.vaadin.navigator.ViewChangeListener;
  */
 public class ArtikeldetailsView extends TemplateView {
 
+    private Product product = new Product();
+    private final ProductDAO products = ProductSearch.getInstance();
+    private VerticalLayout verticalLayout = new VerticalLayout();
+
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        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 Artikel ausgewählt!", Notification.Type.HUMANIZED_MESSAGE);
+            UI.getCurrent().getNavigator().navigateTo(Views.WELCOME);
+        }
     }
 
+    public void setUp(int id) {
+        getInformation(id);
+        super.setUpFooterAndHeader(verticalLayout);
+    }
+
+    private void getInformation(int id) {
+        try {
+            product = products.getProductById(id);
+            HorizontalLayout horizontalLayout = new HorizontalLayout();
+            Panel p = new Panel("Name: " + product.getName());
+            horizontalLayout.addComponent(p);
+            horizontalLayout.setComponentAlignment(p, Alignment.MIDDLE_LEFT);
+            verticalLayout.addComponent(horizontalLayout);
+            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/ShopView.java b/src/main/java/org/s4s/gui/views/SucheView.java
similarity index 57%
rename from src/main/java/org/s4s/gui/views/ShopView.java
rename to src/main/java/org/s4s/gui/views/SucheView.java
index f3c2615..d750d27 100644
--- a/src/main/java/org/s4s/gui/views/ShopView.java
+++ b/src/main/java/org/s4s/gui/views/SucheView.java
@@ -4,18 +4,16 @@ 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.server.VaadinSession;
 import com.vaadin.ui.Alignment;
 import com.vaadin.ui.Button;
 import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
 import com.vaadin.ui.Notification;
 import com.vaadin.ui.Table;
-import com.vaadin.ui.TextField;
 import com.vaadin.ui.UI;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.s4s.dao.ProductDAO;
 import org.s4s.dao.ShopSearchDAO;
 import org.s4s.exceptions.DAOException;
@@ -25,17 +23,20 @@ import org.s4s.modell.dto.Warenkorb;
 import org.s4s.process.control.ProductSearch;
 import org.s4s.process.control.ShopSearch;
 import org.s4s.services.util.Roles;
+import org.s4s.services.util.Views;
 
 /**
  *
  * @author Holger
  */
-public class ShopView extends TemplateView {
+public class SucheView extends TemplateView {
 
     private final ProductDAO products = ProductSearch.getInstance();
     private final ShopSearchDAO shops = ShopSearch.getInstance();
     private Product product = null;
     private final Warenkorb warenkorb = Warenkorb.getInstance();
+    private final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
+    private final Table table = new Table("Products", data);
 
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
@@ -43,39 +44,24 @@ public class ShopView extends TemplateView {
         if (event.getParameters() != null) {
             // split at "/", add each part as a label
             String str = event.getParameters();
+            str = str.trim();
             search(str);
         }
     }
 
     public void setUp() {
-        //super.setUpFooterAndHeader(this);
-        //   setSizeFull();
+        setSizeFull();
         setMargin(true);
 
         final HorizontalLayout searchLayout = new HorizontalLayout();
         final HorizontalLayout buttonLayout = new HorizontalLayout();
-
-        TextField textfield = new TextField();
-        Button button = new Button("Suche", FontAwesome.SEARCH);
-        Label label = new Label("Das erste Label unseres Shop in Shop System");
-
-        buttonLayout.addComponent(label);
-        buttonLayout.setComponentAlignment(label, Alignment.TOP_LEFT);
-
-        searchLayout.addComponent(textfield);
-        searchLayout.addComponent(button);
         buttonLayout.addComponent(searchLayout);
         buttonLayout.setComponentAlignment(searchLayout, Alignment.TOP_RIGHT);
         buttonLayout.setSizeFull();
         addComponent(buttonLayout);
-        //setComponentAlignment(buttonLayout, Alignment.TOP_CENTER);
-
-        final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
         data.setBeanIdProperty("id");
-        final Table table = new Table("Products", data);
         table.setSizeFull();
         table.setSelectable(true);
-        Set<Product> liste = new HashSet<>();
 
         final BeanContainer<Integer, Shop> dataShops = new BeanContainer<>(Shop.class);
         dataShops.setBeanIdProperty("id");
@@ -83,7 +69,13 @@ public class ShopView extends TemplateView {
         tableShops.setSizeFull();
         Set<Shop> listeShops = new HashSet<>();
 
-        VaadinSession session = UI.getCurrent().getSession();
+        Button detailButton = new Button("Artikeldetails");
+        detailButton.addClickListener((event) -> {
+            UI.getCurrent().getNavigator().navigateTo(Views.ARTIKELDETAILS + "/" + product.getId());
+        });
+        searchLayout.addComponent(detailButton);
+        searchLayout.setComponentAlignment(detailButton, Alignment.MIDDLE_CENTER);
+
         if (session.getAttribute(Roles.CURRENTUSER) != null) {
             System.out.println(session.getAttribute(Roles.CURRENTUSER));
             Button addButton = new Button("Hinzufügen");
@@ -93,59 +85,23 @@ public class ShopView extends TemplateView {
                     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());
                 }
             });
-
             addComponent(addButton);
             setComponentAlignment(addButton, Alignment.MIDDLE_CENTER);
         }
-        table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
-            @Override
-            public void itemClick(ItemClickEvent event) {
-                BeanItem<Product> productBean = data.getItem(event.getItemId());
-                product = productBean.getBean();
-            }
-        });
-
-        button.addClickListener(new Button.ClickListener() {
-            @Override
-            public void buttonClick(Button.ClickEvent event) {
-                String str = textfield.getValue().trim();
-                search(str);
-                /*
-                if (str.equals("")) {
-                Notification.show(null, "Bitte gesuchtes Produkt eingeben!", Notification.Type.WARNING_MESSAGE);
-                } else {
-                addComponent(table);
-                addComponent(tableShops);
-                try {
-                liste.addAll(products.getProductByName(str));
-                liste.addAll(products.getProductByDescription(str));
-                listeShops.addAll(shops.getShopByName(str));
-                listeShops.addAll(shops.getShopByOwner(str));
-                } catch (Exception ex) {
-                //eig. DAO Exception, aber fehler...
-                }
-                data.removeAllItems();
-                dataShops.removeAllItems();
-                data.addAll(liste);
-                dataShops.addAll(listeShops);
-                table.setPageLength(table.size());
-                tableShops.setPageLength(tableShops.size());
-                }
-                });
-                 */
-                // BeanItem<Product> item = (BeanItem) liste.getItem(liste.getValue);
-                //  Product myBean = item.getBean();
-            }
+        table.addItemClickListener((ItemClickEvent event) -> {
+            BeanItem<Product> productBean = data.getItem(event.getItemId());
+            product = productBean.getBean();
         });
+        super.setUpFooterAndHeader(searchLayout);
     }
 
     private void search(String str) {
-        final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
         data.setBeanIdProperty("id");
-        final Table table = new Table("Products", data);
         table.setSizeFull();
         table.setSelectable(true);
         Set<Product> liste = new HashSet<>();
@@ -157,12 +113,12 @@ public class ShopView extends TemplateView {
                 liste.addAll(products.getProductByName(str));
                 liste.addAll(products.getProductByDescription(str));
             } catch (DAOException ex) {
-
+                Logger.getLogger(SucheView.class.getName()).log(Level.SEVERE, null, ex);
             }
             data.removeAllItems();
             data.addAll(liste);
             table.setPageLength(table.size());
-
+            table.setVisibleColumns(new Object[]{"name", "description", "price"});
             table.addItemClickListener((ItemClickEvent event) -> {
                 BeanItem<Product> productBean = data.getItem(event.getItemId());
                 product = productBean.getBean();
diff --git a/src/main/java/org/s4s/gui/views/TemplateView.java b/src/main/java/org/s4s/gui/views/TemplateView.java
index 19cee2e..4614b96 100644
--- a/src/main/java/org/s4s/gui/views/TemplateView.java
+++ b/src/main/java/org/s4s/gui/views/TemplateView.java
@@ -77,6 +77,7 @@ public class TemplateView extends VerticalLayout implements View {
     HorizontalLayout buildNavigationHeader() {
         HorizontalLayout navigationPanelGrid = new HorizontalLayout();
         MenuBar.Command mycommand = new MenuBar.Command() {
+            @Override
             public void menuSelected(MenuBar.MenuItem selectedItem) {
                 System.out.println(selectedItem);
 
@@ -111,15 +112,15 @@ public class TemplateView extends VerticalLayout implements View {
 
                     // Edit Holger Anfang
                     case "Literatur":
-                        UI.getCurrent().getNavigator().navigateTo(Views.SHOP + "/literatur");
+                        UI.getCurrent().getNavigator().navigateTo(Views.SUCHE + "/literatur");
                         break;
 
                     case "Mitschriften":
-                        UI.getCurrent().getNavigator().navigateTo(Views.SHOP + "/mitschriften");
+                        UI.getCurrent().getNavigator().navigateTo(Views.SUCHE + "/mitschriften");
                         break;
 
                     case "Nachhilfe":
-                        UI.getCurrent().getNavigator().navigateTo(Views.SHOP + "/nachhilfe");
+                        UI.getCurrent().getNavigator().navigateTo(Views.SUCHE + "/nachhilfe");
                         break;
                     // Edit Ende
 
@@ -147,12 +148,23 @@ public class TemplateView extends VerticalLayout implements View {
         userItem.addItem("Einstellungen", null, mycommand);
         userItem.addItem("Logout", null, mycommand);
 
-        TextField tfSeach = new TextField();
+        TextField tfSearch = new TextField();
         Button btnSearch = new Button("Suche", FontAwesome.SEARCH);
 
+        //Edit Holger
+        btnSearch.addClickListener((Button.ClickEvent event) -> {
+            String begriff = tfSearch.getValue();
+            View view = UI.getCurrent().getNavigator().getCurrentView();
+            //if (view instanceof SucheView) {
+
+            //} else {
+            UI.getCurrent().getNavigator().navigateTo(Views.SUCHE + "/" + begriff);
+            //}
+        });
+        //Edit Ende
         navigationPanelGrid.addComponent(createLogo());
         navigationPanelGrid.addComponent(barmenu);
-        navigationPanelGrid.addComponent(tfSeach);
+        navigationPanelGrid.addComponent(tfSearch);
         navigationPanelGrid.addComponent(btnSearch);
         navigationPanelGrid.setSpacing(true);
         navigationPanelGrid.setSizeUndefined();
@@ -164,7 +176,7 @@ public class TemplateView extends VerticalLayout implements View {
         }
         navigationPanelGrid.setStyleName("navbarGardient");
         navigationPanelGrid.setComponentAlignment(barmenu, Alignment.MIDDLE_CENTER);
-        navigationPanelGrid.setComponentAlignment(tfSeach, Alignment.MIDDLE_RIGHT);
+        navigationPanelGrid.setComponentAlignment(tfSearch, Alignment.MIDDLE_RIGHT);
         navigationPanelGrid.setComponentAlignment(btnSearch, Alignment.MIDDLE_RIGHT);
 
         return navigationPanelGrid;
diff --git a/src/main/java/org/s4s/gui/views/WarenkorbView.java b/src/main/java/org/s4s/gui/views/WarenkorbView.java
index 453e9f4..419e2dd 100644
--- a/src/main/java/org/s4s/gui/views/WarenkorbView.java
+++ b/src/main/java/org/s4s/gui/views/WarenkorbView.java
@@ -1,11 +1,16 @@
 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.VaadinSession;
+import com.vaadin.server.FontAwesome;
 import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.Notification;
 import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
 import java.util.List;
@@ -21,7 +26,7 @@ import org.s4s.services.util.Views;
 public class WarenkorbView extends TemplateView {
 
     private final Warenkorb warenkorb = Warenkorb.getInstance();
-    private VaadinSession session = UI.getCurrent().getSession();
+    private Product product = null;
 
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
@@ -29,7 +34,6 @@ public class WarenkorbView extends TemplateView {
     }
 
     public void setUp() {
-        VaadinSession session = UI.getCurrent().getSession();
         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);
@@ -44,6 +48,7 @@ public class WarenkorbView extends TemplateView {
             this.setComponentAlignment(panel, Alignment.TOP_LEFT);
         } else {
             HorizontalLayout horizontalLayout = new HorizontalLayout();
+            HorizontalLayout buttonLayout = new HorizontalLayout();
             Panel pAnzahl = new Panel("In Ihrem Warenkorb sind momentan: " + warenkorb.getAnzahl() + " Artikel!");
             horizontalLayout.addComponent(pAnzahl);
             horizontalLayout.setComponentAlignment(pAnzahl, Alignment.TOP_LEFT);
@@ -55,11 +60,48 @@ public class WarenkorbView extends TemplateView {
             this.addComponent(horizontalLayout);
 
             List<Product> list = warenkorb.inhalt();
-            list.forEach((p) -> {
-                HorizontalLayout layout = new HorizontalLayout();
-                layout.addComponent(new Panel(p.getName() + ", " + p.getDescription() + ", " + p.getPrice()));
-                this.addComponent(layout);
+            final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
+            data.setBeanIdProperty("id");
+            Table table = new Table("Ihr Warenkorb", data);
+            table.setSizeFull();
+            table.setSelectable(true);
+            data.addAll(list);
+            this.addComponent(table);
+            table.setPageLength(table.size());
+            table.setVisibleColumns(new Object[]{"name", "description", "price"});
+
+            table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
+                @Override
+                public void itemClick(ItemClickEvent event) {
+                    BeanItem<Product> productBean = data.getItem(event.getItemId());
+                    product = productBean.getBean();
+                }
+            });
+
+            Button removeButton = new Button("Aus Warenkorb entfernen!");
+            removeButton.addClickListener((Button.ClickEvent event) -> {
+                if (this.product == null) {
+                    Notification.show(null, "Bitte, das zu entferndende Produkt auswählen",
+                            Notification.Type.HUMANIZED_MESSAGE);
+                } else {
+                    warenkorb.remove(product);
+                    UI.getCurrent().getNavigator().navigateTo(Views.WARENKORB);
+                }
+            });
+
+            Button buyButton = new Button("Kaufen!");
+            buyButton.addClickListener((event) -> {
+
             });
+
+            buttonLayout.addComponent(buyButton);
+            buttonLayout.setComponentAlignment(buyButton, Alignment.BOTTOM_LEFT);
+            buttonLayout.addComponent(removeButton);
+            buttonLayout.setComponentAlignment(removeButton, Alignment.BOTTOM_RIGHT);
+            this.addComponent(buttonLayout);
+            this.setComponentAlignment(buttonLayout, Alignment.BOTTOM_CENTER);
+            removeButton.setIcon(FontAwesome.UNDO);
         }
+
     }
 }
diff --git a/src/main/java/org/s4s/modell/dto/Transaction.java b/src/main/java/org/s4s/modell/dto/Transaction.java
new file mode 100644
index 0000000..3233cc0
--- /dev/null
+++ b/src/main/java/org/s4s/modell/dto/Transaction.java
@@ -0,0 +1,47 @@
+/*
+ * 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.modell.dto;
+
+/**
+ *
+ * @author Holger
+ */
+public class Transaction {
+
+    private String verkaeufer;
+    private User kaeufer;
+    private Product produkt;
+
+    public Transaction(String verkaeufer, User kaeufer, Product produkt) {
+        this.verkaeufer = verkaeufer;
+        this.kaeufer = kaeufer;
+        this.produkt = produkt;
+    }
+
+    public String getVerkaeufer() {
+        return verkaeufer;
+    }
+
+    public void setVerkaeufer(String verkaeufer) {
+        this.verkaeufer = verkaeufer;
+    }
+
+    public User getKaeufer() {
+        return kaeufer;
+    }
+
+    public void setKaeufer(User kaeufer) {
+        this.kaeufer = kaeufer;
+    }
+
+    public Product getProdukt() {
+        return produkt;
+    }
+
+    public void setProdukt(Product produkt) {
+        this.produkt = produkt;
+    }
+}
diff --git a/src/main/java/org/s4s/modell/dto/User.java b/src/main/java/org/s4s/modell/dto/User.java
index 3f05ccd..271e9cc 100644
--- a/src/main/java/org/s4s/modell/dto/User.java
+++ b/src/main/java/org/s4s/modell/dto/User.java
@@ -15,8 +15,9 @@ public class User {
 
     private final String benutzername;
 
-    public User(String benutzername) {
+    public User(String benutzername, int userId) {
         this.benutzername = benutzername;
+        this.userId = userId;
     }
 
     public int getUserId() {
@@ -50,4 +51,29 @@ public class User {
     public String getUsername() {
         return benutzername;
     }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public void setGeburtsdatum(String geburtsdatum) {
+        this.geburtsdatum = geburtsdatum;
+    }
+
+    public void setFachbereichId(int fachbereichId) {
+        this.fachbereichId = fachbereichId;
+    }
+
+    public void setVorname(String vorname) {
+        this.vorname = vorname;
+    }
+
+    public void setNachname(String nachname) {
+        this.nachname = nachname;
+    }
+
 }
diff --git a/src/main/java/org/s4s/process/control/LoginControl.java b/src/main/java/org/s4s/process/control/LoginControl.java
index 58c7cfc..8f483ef 100644
--- a/src/main/java/org/s4s/process/control/LoginControl.java
+++ b/src/main/java/org/s4s/process/control/LoginControl.java
@@ -3,7 +3,6 @@ package org.s4s.process.control;
 import com.vaadin.server.VaadinSession;
 import com.vaadin.ui.UI;
 import java.sql.*;
-import javax.swing.JOptionPane;
 import org.s4s.dao.KundenDAO;
 import org.s4s.dao.impl.AbstractDatabaseClass;
 import org.s4s.exceptions.DAOException;
@@ -18,16 +17,12 @@ import org.s4s.services.util.Views;
  */
 public class LoginControl extends AbstractDatabaseClass implements KundenDAO {
 
-    public static void infoBox(String infoMessage, String titleBar) {
-        JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
-    }
-
     @Override
     public void getUserByCredentials(String username, String password) throws NoSuchUserOrPassword, DAOException {
         //Von Max und Knobie
         //Von Holger vervollständigt
 
-        try (ResultSet set = executeQuery("SELECT u.\"benutzername\""
+        try (ResultSet set = executeQuery("SELECT *"
                 + " FROM \"ERR\".\"user\" u "
                 + " WHERE u.benutzername = '" + username + "' "
                 + " AND u.passwort = '" + password + "';")) {
@@ -35,8 +30,9 @@ public class LoginControl extends AbstractDatabaseClass implements KundenDAO {
                 throw new NoSuchUserOrPassword();
             }
             String bname = set.getString("benutzername");
+            int userId = set.getInt("userID");
 
-            User user = new User(bname);
+            User user = new User(bname, userId);
 
             createSession(user);
 
@@ -50,6 +46,5 @@ public class LoginControl extends AbstractDatabaseClass implements KundenDAO {
         VaadinSession session = UI.getCurrent().getSession();
         session.setAttribute(Roles.CURRENTUSER, user);
         UI.getCurrent().getNavigator().navigateTo(Views.WELCOME);
-        //System.out.println(user.getBenutzername());
     }
 }
diff --git a/src/main/java/org/s4s/process/control/ProductSearch.java b/src/main/java/org/s4s/process/control/ProductSearch.java
index b147da1..e1d3478 100644
--- a/src/main/java/org/s4s/process/control/ProductSearch.java
+++ b/src/main/java/org/s4s/process/control/ProductSearch.java
@@ -15,9 +15,6 @@ import org.s4s.modell.dto.Product;
  */
 public class ProductSearch extends AbstractDatabaseClass implements ProductDAO {
 
-//    Product p1 = new Product("Nachhilfe Algebra", 1, "Nachhilfe", 2.00, "Biete Nachhilfe in Algebra an!");
-//    Product p2 = new Product("F&I", 2, "Mitschriften", 5.00, "Mitschriften aus dem WS16/17 in F&I!");
-//    Product p3 = new Product("Übungen Eidip", 3, "Lösungen", 10.50, "Lösungen zu alten Eidip Aufgaben!");
     private ProductSearch() {
 
     }
@@ -61,7 +58,7 @@ public class ProductSearch extends AbstractDatabaseClass implements ProductDAO {
                 + " WHERE LOWER(a.beschreibung) ILIKE LOWER('%" + descrip + "%');")) {
             while (set.next()) {
                 String name = set.getString("name");
-                int id = set.getInt("artikelID");
+                int id = set.getInt("artikelid");
                 String kategorie = set.getString("kategorie");
                 double price = set.getDouble("preis");
                 String description = set.getString("beschreibung");
@@ -74,4 +71,30 @@ public class ProductSearch extends AbstractDatabaseClass implements ProductDAO {
         }
         return liste;
     }
+
+    @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 + "');")) {
+            if (set.next()) {
+                String name = set.getString("name");
+                int pId = set.getInt("artikelid");
+                String kategorie = set.getString("kategorie");
+                double price = set.getDouble("preis");
+                String description = set.getString("beschreibung");
+
+                p.setName(name);
+                p.setId(pId);
+                p.setTyp(kategorie);
+                p.setPrice(price);
+                p.setDescription(description);
+            }
+        } catch (SQLException ex) {
+            throw new DAOException(ex);
+        }
+        return p;
+    }
+
 }
diff --git a/src/main/java/org/s4s/services/util/Views.java b/src/main/java/org/s4s/services/util/Views.java
index e5e6381..7a7a35e 100644
--- a/src/main/java/org/s4s/services/util/Views.java
+++ b/src/main/java/org/s4s/services/util/Views.java
@@ -8,7 +8,7 @@ public final class Views {
 
     public final static String REGISTRIERUNG = "registrierung";
     public final static String WELCOME = "welcome";
-    public final static String SHOP = "shop";
+    public final static String SUCHE = "suche";
     public final static String LOGIN = "login";
     public final static String WARENKORB = "warenkorb";
     public final static String BENUTZERKONTO = "benutzerkonto";
-- 
GitLab