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) {