From 4d415678dd09b79ea0649027d27cf319f3762589 Mon Sep 17 00:00:00 2001
From: hkarwa2s <holger.karwanni@smail.inf.h-brs.de>
Date: Wed, 14 Jun 2017 12:11:59 +0200
Subject: [PATCH] =?UTF-8?q?Shop=20Search=20hinzugef=C3=BCgt=20Warenkorb=20?=
 =?UTF-8?q?hinzugef=C3=BCgt,=20Produkte=20hinzuf=C3=BCgbar=20Package=20Str?=
 =?UTF-8?q?uktur=20angepasst=20ShopSearch=20hinzugef=C3=BCgt=20(nicht=20fi?=
 =?UTF-8?q?nal)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pom.xml                                       |  4 +-
 src/main/java/org/s4s/dao/ProductDAO.java     |  4 +-
 src/main/java/org/s4s/dao/ShopSearchDAO.java  | 21 ++++
 .../java/org/s4s/gui/views/LoginView.java     | 17 ++--
 .../org/s4s/gui/views/RegistrierungView.java  |  2 +-
 .../org/s4s/gui/views/ShopErstellung.java     | 96 +++++++++----------
 src/main/java/org/s4s/gui/views/ShopView.java | 55 +++++++++--
 .../java/org/s4s/gui/views/WarenkorbView.java | 52 ++++++++--
 src/main/java/org/s4s/modell/dto/Product.java | 14 +--
 src/main/java/org/s4s/modell/dto/Shop.java    | 60 ++++++++++++
 src/main/java/org/s4s/modell/dto/User.java    | 55 ++++-------
 .../java/org/s4s/modell/dto/Warenkorb.java    | 39 ++++++++
 .../control}/LoginControl.java                | 22 +++--
 .../control}/LogoutControl.java               |  2 +-
 .../control}/ProductSearch.java               | 28 +++---
 .../control}/RegistrationControl.java         |  4 +-
 .../impl => process/control}/ShopControl.java |  2 +-
 .../org/s4s/process/control/ShopSearch.java   | 82 ++++++++++++++++
 .../control}/TransactionControl.java          |  0
 .../org/s4s/dao/impl/LoginControl_Test.java   |  6 +-
 .../dao/impl/RegistrationControl_Test.java    | 26 +++--
 21 files changed, 412 insertions(+), 179 deletions(-)
 create mode 100644 src/main/java/org/s4s/dao/ShopSearchDAO.java
 rename src/main/java/org/s4s/{dao/impl => process/control}/LoginControl.java (79%)
 rename src/main/java/org/s4s/{dao/impl => process/control}/LogoutControl.java (93%)
 rename src/main/java/org/s4s/{dao/impl => process/control}/ProductSearch.java (78%)
 rename src/main/java/org/s4s/{dao/impl => process/control}/RegistrationControl.java (98%)
 rename src/main/java/org/s4s/{dao/impl => process/control}/ShopControl.java (98%)
 create mode 100644 src/main/java/org/s4s/process/control/ShopSearch.java
 rename src/main/java/org/s4s/{dao/impl => process/control}/TransactionControl.java (100%)

diff --git a/pom.xml b/pom.xml
index 50a896d..b36bf66 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,11 +113,11 @@
             <version>1.3</version>
             <scope>test</scope>
         </dependency> 
-        <dependency>
+       <!-- <dependency>
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
             <version>LATEST</version>
-        </dependency>
+        </dependency>-->
 
          
          
diff --git a/src/main/java/org/s4s/dao/ProductDAO.java b/src/main/java/org/s4s/dao/ProductDAO.java
index b98d26f..8539e13 100644
--- a/src/main/java/org/s4s/dao/ProductDAO.java
+++ b/src/main/java/org/s4s/dao/ProductDAO.java
@@ -5,8 +5,8 @@
  */
 package org.s4s.dao;
 
-import org.s4s.exceptions.DAOException;
 import java.util.List;
+import org.s4s.exceptions.DAOException;
 import org.s4s.modell.dto.Product;
 
 /**
@@ -15,7 +15,7 @@ import org.s4s.modell.dto.Product;
  */
 public interface ProductDAO {
 
-    List<Product> getProductByTyp(String typ) throws DAOException;
+    List<Product> getProductByName(String typ) throws DAOException;
 
     List<Product> getProductByDescription(String typ) throws DAOException;
 }
diff --git a/src/main/java/org/s4s/dao/ShopSearchDAO.java b/src/main/java/org/s4s/dao/ShopSearchDAO.java
new file mode 100644
index 0000000..a249379
--- /dev/null
+++ b/src/main/java/org/s4s/dao/ShopSearchDAO.java
@@ -0,0 +1,21 @@
+/*
+ * 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.dao;
+
+import java.util.List;
+import org.s4s.exceptions.DAOException;
+import org.s4s.modell.dto.Shop;
+
+/**
+ *
+ * @author Holger
+ */
+public interface ShopSearchDAO {
+
+    List<Shop> getShopByName(String typ) throws DAOException;
+
+    List<Shop> getShopByOwner(String typ) throws DAOException;
+}
diff --git a/src/main/java/org/s4s/gui/views/LoginView.java b/src/main/java/org/s4s/gui/views/LoginView.java
index bfa8d4a..74487a1 100644
--- a/src/main/java/org/s4s/gui/views/LoginView.java
+++ b/src/main/java/org/s4s/gui/views/LoginView.java
@@ -5,7 +5,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;
@@ -16,7 +15,7 @@ import java.util.logging.Logger;
 import org.s4s.exceptions.DAOException;
 import org.s4s.dao.KundenDAO;
 import org.s4s.exceptions.NoSuchUserOrPassword;
-import org.s4s.dao.impl.LoginControl;
+import org.s4s.process.control.LoginControl;
 import org.s4s.services.util.Views;
 
 /**
@@ -38,8 +37,7 @@ public class LoginView extends TemplateView {
         final Label lblTitel = new Label("Anmelden");
 
         titleLayout.addComponent(lblTitel);
-        titleLayout.setComponentAlignment(lblTitel,Alignment.MIDDLE_CENTER);
-
+        titleLayout.setComponentAlignment(lblTitel, Alignment.MIDDLE_CENTER);
 
         final TextField userLogin = new TextField();
         userLogin.setCaption("Login-Name: ");
@@ -48,7 +46,7 @@ public class LoginView extends TemplateView {
 
         VerticalLayout layout = new VerticalLayout();
         layout.addComponent(titleLayout);
-        layout.setComponentAlignment(titleLayout,Alignment.TOP_CENTER);
+        layout.setComponentAlignment(titleLayout, Alignment.TOP_CENTER);
         lblTitel.setStyleName("LoginViewContainerTitle");
         titleLayout.setStyleName("LoginViewContainerTitelLayout");
         layout.addComponent(userLogin);
@@ -56,9 +54,9 @@ public class LoginView extends TemplateView {
 
         Label label = new Label("&nbsp", ContentMode.HTML);
         layout.addComponent(label);
-        
+
         HorizontalLayout hLay = new HorizontalLayout();
-        
+
         Button button = new Button("Login", FontAwesome.BEER);
         Button buttonReg = new Button("Registrieren", FontAwesome.BEER);
         hLay.addComponent(button);
@@ -71,9 +69,9 @@ public class LoginView extends TemplateView {
         HorizontalLayout horSpacer = new HorizontalLayout();
         horSpacer.addComponent(layout);
         this.addComponent(horSpacer);
-        horSpacer.setComponentAlignment(layout,Alignment.MIDDLE_CENTER);
+        horSpacer.setComponentAlignment(layout, Alignment.MIDDLE_CENTER);
 
-        this.setComponentAlignment(horSpacer,Alignment.MIDDLE_CENTER);
+        this.setComponentAlignment(horSpacer, Alignment.MIDDLE_CENTER);
         button.addClickListener(new Button.ClickListener() {
             @Override
             public void buttonClick(Button.ClickEvent event) {
@@ -99,7 +97,6 @@ public class LoginView extends TemplateView {
         horSpacer.setStyleName("LoginViewContainer");
 
 //        layout.addComponent(buttonReg);
-        
         buttonReg.addClickListener(new Button.ClickListener() {
             @Override
             public void buttonClick(Button.ClickEvent event) {
diff --git a/src/main/java/org/s4s/gui/views/RegistrierungView.java b/src/main/java/org/s4s/gui/views/RegistrierungView.java
index 47e424a..05705a3 100644
--- a/src/main/java/org/s4s/gui/views/RegistrierungView.java
+++ b/src/main/java/org/s4s/gui/views/RegistrierungView.java
@@ -20,7 +20,7 @@ import com.vaadin.ui.PasswordField;
 import com.vaadin.ui.TextField;
 import com.vaadin.ui.UI;
 import java.util.Date;
-import org.s4s.dao.impl.RegistrationControl;
+import org.s4s.process.control.RegistrationControl;
 import org.s4s.services.util.Views;
 
 
diff --git a/src/main/java/org/s4s/gui/views/ShopErstellung.java b/src/main/java/org/s4s/gui/views/ShopErstellung.java
index d8a0816..31c2e14 100644
--- a/src/main/java/org/s4s/gui/views/ShopErstellung.java
+++ b/src/main/java/org/s4s/gui/views/ShopErstellung.java
@@ -9,12 +9,10 @@ import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener;
 import com.vaadin.server.FontAwesome;
 import com.vaadin.shared.ui.label.ContentMode;
-import com.vaadin.ui.Alignment;
 import com.vaadin.ui.Button;
 import com.vaadin.ui.FormLayout;
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.Label;
-import com.vaadin.ui.NativeSelect;
 import com.vaadin.ui.Panel;
 import com.vaadin.ui.TextArea;
 import com.vaadin.ui.TextField;
@@ -22,7 +20,7 @@ import com.vaadin.ui.UI;
 import java.sql.SQLException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.s4s.dao.impl.ShopControl;
+import org.s4s.process.control.ShopControl;
 import org.s4s.exceptions.OwnsAlreadyShop;
 import org.s4s.services.util.Views;
 
@@ -31,84 +29,78 @@ import org.s4s.services.util.Views;
  * @author JanPhilipp
  */
 public class ShopErstellung extends TemplateView implements View {
-    
-     private String s = null;
- @Override
+
+    private String s = null;
+
+    @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
         this.setUp();
     }
 
     private void setUp() {
-       Panel panel = new Panel("ShopErstellung");
-         panel.setSizeUndefined();
-         
-            FormLayout content = new FormLayout();
+        Panel panel = new Panel("ShopErstellung");
+        panel.setSizeUndefined();
+
+        FormLayout content = new FormLayout();
 
 //                TextField shopowner = new TextField("Name des Shoperstellers");
 //                content.addComponent(shopowner);
-                
-                TextField shopname = new TextField("Name des Shops");
-                content.addComponent(shopname);
-              
+        TextField shopname = new TextField("Name des Shops");
+        content.addComponent(shopname);
+
 //                NativeSelect select = new NativeSelect("Position an der Hochschule");
 //                select.addItems("Student", "Hivi", "Prof");
 //                select.setNullSelectionAllowed(false);
 //                content.addComponent(select);
-               
-                TextArea area = new TextArea("Shopbeschreibung");
-                content.addComponent(area);
+        TextArea area = new TextArea("Shopbeschreibung");
+        content.addComponent(area);
 
 //                TextField emailTxt = new TextField("E-Mail:");
 //                emailTxt.setIcon(FontAwesome.MAIL_FORWARD);
 //                content.addComponent(emailTxt);
+        HorizontalLayout buttons = new HorizontalLayout();
+        Button abbruch = new Button("Abbruch");
+        abbruch.setIcon(FontAwesome.STOP_CIRCLE);
+        buttons.addComponent(abbruch);
+        buttons.addComponent(new Label("&nbsp", ContentMode.HTML));
+        Button bestätigen = new Button("Bestätigen");
+        bestätigen.setIcon(FontAwesome.CHECK);
+        buttons.addComponent(bestätigen);
 
-                HorizontalLayout buttons = new HorizontalLayout();
-                Button abbruch = new Button("Abbruch");
-                abbruch.setIcon(FontAwesome.STOP_CIRCLE);
-                buttons.addComponent(abbruch);
-                buttons.addComponent(new Label("&nbsp", ContentMode.HTML));
-                Button bestätigen = new Button("Bestätigen");
-                bestätigen.setIcon(FontAwesome.CHECK);
-                buttons.addComponent(bestätigen);
-
-                content.addComponent(buttons);
-            content.setMargin(true);
+        content.addComponent(buttons);
+        content.setMargin(true);
 
-       panel.setContent(content);
-       //this.addComponent(panel);
-       //this.setComponentAlignment(panel, Alignment.MIDDLE_CENTER);
-     
-       
+        panel.setContent(content);
+        //this.addComponent(panel);
+        //this.setComponentAlignment(panel, Alignment.MIDDLE_CENTER);
 
-        bestätigen.addClickListener( e -> {
+        bestätigen.addClickListener(e -> {
 //             String shopOwner = shopowner.getValue();
 //             String email = emailTxt.getValue();
-             String shopName = shopname.getValue();
-             String beschreibung = area.getValue();
-           try {
-               ShopControl.checkUserShop(shopName, beschreibung);
-           } catch (OwnsAlreadyShop ex) {
-               Logger.getLogger(ShopErstellung.class.getName()).log(Level.SEVERE, null, ex);
-           } catch (SQLException ex) {
-               Logger.getLogger(ShopErstellung.class.getName()).log(Level.SEVERE, null, ex);
-           }
-             UI.getCurrent().getNavigator().navigateTo(Views.SHOPERSTELLUNGSBESTAETIGUNG);
-        //   select.addValueChangeListener(event ->);
+            String shopName = shopname.getValue();
+            String beschreibung = area.getValue();
+            try {
+                ShopControl.checkUserShop(shopName, beschreibung);
+            } catch (OwnsAlreadyShop ex) {
+                Logger.getLogger(ShopErstellung.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (SQLException ex) {
+                Logger.getLogger(ShopErstellung.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            UI.getCurrent().getNavigator().navigateTo(Views.SHOPERSTELLUNGSBESTAETIGUNG);
+            //   select.addValueChangeListener(event ->);
 
 //             System.out.println(shopOwner);
-             System.out.println(shopname);
+            System.out.println(shopname);
 //             System.out.println(email);
-             System.out.println(beschreibung);
-             System.out.println(s);
+            System.out.println(beschreibung);
+            System.out.println(s);
 
-             
-             // Weiterleitung auf Bestätigunsseite
-             
+            // Weiterleitung auf Bestätigunsseite
         });
         abbruch.addClickListener(e -> {
             UI.getCurrent().getNavigator().navigateTo(Views.WELCOME);
         });
 
-         super.setUpFooterAndHeader(panel);
+        super.setUpFooterAndHeader(panel);
     }
 }
diff --git a/src/main/java/org/s4s/gui/views/ShopView.java b/src/main/java/org/s4s/gui/views/ShopView.java
index 89dfc82..e84eac4 100644
--- a/src/main/java/org/s4s/gui/views/ShopView.java
+++ b/src/main/java/org/s4s/gui/views/ShopView.java
@@ -6,6 +6,8 @@
 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.Alignment;
@@ -17,11 +19,13 @@ import com.vaadin.ui.Table;
 import com.vaadin.ui.TextField;
 import java.util.HashSet;
 import java.util.Set;
-import org.s4s.exceptions.DAOException;
-import org.s4s.exceptions.NoSuchProduct;
 import org.s4s.dao.ProductDAO;
-import org.s4s.dao.impl.ProductSearch;
+import org.s4s.dao.ShopSearchDAO;
 import org.s4s.modell.dto.Product;
+import org.s4s.modell.dto.Shop;
+import org.s4s.modell.dto.Warenkorb;
+import org.s4s.process.control.ProductSearch;
+import org.s4s.process.control.ShopSearch;
 
 /**
  *
@@ -30,6 +34,9 @@ import org.s4s.modell.dto.Product;
 public class ShopView extends TemplateView {
 
     private final ProductDAO products = ProductSearch.getInstance();
+    private final ShopSearchDAO shops = ShopSearch.getInstance();
+    private Product product = null;
+    private final Warenkorb warenkorb = Warenkorb.getInstance();
 
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
@@ -37,6 +44,7 @@ public class ShopView extends TemplateView {
     }
 
     public void setUp() {
+        //super.setUpFooterAndHeader(this);
         //   setSizeFull();
         setMargin(true);
 
@@ -61,9 +69,14 @@ public class ShopView extends TemplateView {
         final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
         data.setBeanIdProperty("id");
         final Table table = new Table("Products", data);
+        /*final BeanContainer<Integer, Shop> data = new BeanContainer<>(Shop.class);
+        data.setBeanIdProperty("id");
+        final Table table = new Table("Shops", data);*/
         table.setSizeFull();
         table.setSelectable(true);
 
+        Set<Product> liste = new HashSet<>();
+        Set<Shop> listeShops = new HashSet<>();
         button.addClickListener((Button.ClickEvent event) -> {
             String str = textfield.getValue().trim();
 
@@ -72,19 +85,43 @@ public class ShopView extends TemplateView {
             } else {
                 addComponent(table);
 
-                Set<Product> liste = new HashSet<>();
                 try {
-                    liste.addAll(products.getProductByTyp(str));
+                    liste.addAll(products.getProductByName(str));
                     liste.addAll(products.getProductByDescription(str));
-                } catch (DAOException ex) {
-
+                    //listeShops.addAll(shops.getShopByName(str));
+                    //listeShops.addAll(shops.getShopByOwner(str));
+                } catch (Exception ex) {
+                    //eig. DAO Exception, aber fehler...
                 }
-               
-                
                 data.removeAllItems();
                 data.addAll(liste);
                 table.setPageLength(table.size());
             }
         });
+
+        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);
+                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();
+            }
+        });
+
+        // BeanItem<Product> item = (BeanItem) liste.getItem(liste.getValue);
+        //  Product myBean = item.getBean();
     }
 }
diff --git a/src/main/java/org/s4s/gui/views/WarenkorbView.java b/src/main/java/org/s4s/gui/views/WarenkorbView.java
index 8a7a1dc..8a23dea 100644
--- a/src/main/java/org/s4s/gui/views/WarenkorbView.java
+++ b/src/main/java/org/s4s/gui/views/WarenkorbView.java
@@ -7,8 +7,15 @@ package org.s4s.gui.views;
 
 import com.vaadin.navigator.ViewChangeListener;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.ui.Alignment;
 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.HashSet;
+import java.util.Set;
+import org.s4s.modell.dto.Product;
 import org.s4s.modell.dto.Warenkorb;
 import org.s4s.services.util.Roles;
 import org.s4s.services.util.Views;
@@ -17,21 +24,50 @@ import org.s4s.services.util.Views;
  *
  * @author Holger
  */
-public class WarenkorbView extends TemplateView{
-    
+public class WarenkorbView extends TemplateView {
+
+    private final Warenkorb warenkorb = Warenkorb.getInstance();
+    private VaadinSession session = UI.getCurrent().getSession();
+
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
         this.setUp();
     }
-    
-    public void setUp(){
+
+    public void setUp() {
         VaadinSession session = UI.getCurrent().getSession();
-        
-        if(session.getAttribute(Roles.CURRENTUSER) == null){
+        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);
         }
-        
-        
+
+        final VerticalLayout contentLayout = new VerticalLayout();
+        super.setUpFooterAndHeader(contentLayout);
+
+        if (warenkorb.getAnzahl() == 0) {
+            Panel panel = new Panel("Der Warenkorb ist leer!");
+            this.addComponent(panel);
+            this.setComponentAlignment(panel, Alignment.TOP_LEFT);
+        } else {
+            Panel pAnzahl = new Panel("In Ihrem Warenkorb sind momentan: " + warenkorb.getAnzahl() + " Artikel!");
+            this.addComponent(pAnzahl);
+            this.setComponentAlignment(pAnzahl, Alignment.TOP_LEFT);
+
+            Panel pSum = new Panel("Gesamtwert im Warenkorb beträgt: " + warenkorb.sum());
+            this.addComponent(pSum);
+            this.setComponentAlignment(pSum, Alignment.TOP_RIGHT);
+            warenkorb.auflisten();
+            final Table table = new Table("Ihr Warenkorb");
+            table.addContainerProperty("Bezeichnung", String.class, null);
+            table.addContainerProperty("Preis", Double.class, null);
+            table.addContainerProperty("Menge", Integer.class, null);
+            // table.setSizeFull();
+            // table.setSelectable(true);
+            addComponent(table);
+            Set<Product> liste = new HashSet<>();
+            liste.addAll(warenkorb.inhalt());
+            //data.addAll(liste);
+            this.setComponentAlignment(table, Alignment.TOP_CENTER);
+        }
     }
 }
diff --git a/src/main/java/org/s4s/modell/dto/Product.java b/src/main/java/org/s4s/modell/dto/Product.java
index 5ae338a..fb5c014 100644
--- a/src/main/java/org/s4s/modell/dto/Product.java
+++ b/src/main/java/org/s4s/modell/dto/Product.java
@@ -14,13 +14,11 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
  */
 public class Product {
 
-    private Warenkorb warenkorb;
-
     private String name;
+    private String description;
+    private double price;
     private Integer id;
     private String typ;
-    private double price;
-    private String description;
 
     public Product(String name, Integer id, String typ, double price, String description) {
         this.name = name;
@@ -34,14 +32,6 @@ public class Product {
 
     }
 
-    public void setWarenkorb(Warenkorb warenkorb) {
-        this.warenkorb = warenkorb;
-    }
-
-    public Warenkorb getWarenkorb() {
-        return warenkorb;
-    }
-
     @Override
     public boolean equals(Object other) {
         if (other == null) {
diff --git a/src/main/java/org/s4s/modell/dto/Shop.java b/src/main/java/org/s4s/modell/dto/Shop.java
index cd03c32..a98cd45 100644
--- a/src/main/java/org/s4s/modell/dto/Shop.java
+++ b/src/main/java/org/s4s/modell/dto/Shop.java
@@ -11,4 +11,64 @@ package org.s4s.modell.dto;
  */
 public class Shop {
 
+    private int shopId;
+    private String name;
+    private int besitzer;
+    private double bewertung;
+    private int bewertunganzahl;
+    
+    public Shop(){
+        
+    }
+    
+    public Shop(int shopId, String name, int besitzer, double bewertung, int bewertunganzahl){
+        this.shopId = shopId;
+        this.name = name;
+        this.besitzer = besitzer;
+        this.bewertung = bewertung;
+        this.bewertunganzahl = bewertunganzahl;
+    }
+
+    public int getShopId() {
+        return shopId;
+    }
+
+    public void setShopId(int shopId) {
+        this.shopId = shopId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getBesitzer() {
+        return besitzer;
+    }
+
+    public void setBesitzer(int besitzer) {
+        this.besitzer = besitzer;
+    }
+
+    public double getBewertung() {
+        return bewertung;
+    }
+
+    public void setBewertung(double bewertung) {
+        this.bewertung = bewertung;
+    }
+
+    public int getBewertungsanzahl() {
+        return bewertunganzahl;
+    }
+
+    public void setBewertungsanzahl(int bewertunganzahl) {
+        this.bewertunganzahl = bewertunganzahl;
+    }
+    
+    
+    
 }
diff --git a/src/main/java/org/s4s/modell/dto/User.java b/src/main/java/org/s4s/modell/dto/User.java
index b7ad3ea..e78eda6 100644
--- a/src/main/java/org/s4s/modell/dto/User.java
+++ b/src/main/java/org/s4s/modell/dto/User.java
@@ -5,8 +5,6 @@
  */
 package org.s4s.modell.dto;
 
-import java.util.Date;
-
 /**
  *
  * @author Holger
@@ -14,63 +12,48 @@ import java.util.Date;
 public class User {
 
     private int userId;
+    private String email;
+    private String geburtsdatum;
+    private int fachbereichId;
     private String vorname;
     private String nachname;
-    private Date geburtsdatum;
-    private int fachbereichId;
-    private String email;
-    
-    
 
     private final String benutzername;
 
     public User(String benutzername){
         this.benutzername = benutzername;
     }
-
-    public String getBenutzername() {
-        return benutzername;
-    }
     
-    public String getVorname() {
-        return vorname;
-    }
-
-    public void setVorname(String vorname) {
-        this.vorname = vorname;
-    }
-
-    public String getNachname() {
-        return nachname;
+    public int getUserId() {
+        return userId;
     }
 
-    public void setNachname(String nachname) {
-        this.nachname = nachname;
+    public String getEmail() {
+        return email;
     }
 
-    public Date getGeburtsdatum() {
+    public String getGeburtsdatum() {
         return geburtsdatum;
     }
 
-    public void setGeburtsdatum(Date geburtsdatum) {
-        this.geburtsdatum = geburtsdatum;
-    }
-
     public int getFachbereichId() {
         return fachbereichId;
     }
 
-    public void setFachbereichId(int fachbereichId) {
-        this.fachbereichId = fachbereichId;
+    public String getBenutzername() {
+        return benutzername;
     }
 
-    public String getEmail() {
-        return email;
+
+    public String getVorname() {
+        return vorname;
     }
 
-    public void setEmail(String email) {
-        this.email = email;
+    public String getNachname() {
+        return nachname;
+    }
+
+    public String getUsername() {
+        return benutzername;
     }
-    
-     
 }
diff --git a/src/main/java/org/s4s/modell/dto/Warenkorb.java b/src/main/java/org/s4s/modell/dto/Warenkorb.java
index 97da541..4937c7e 100644
--- a/src/main/java/org/s4s/modell/dto/Warenkorb.java
+++ b/src/main/java/org/s4s/modell/dto/Warenkorb.java
@@ -15,11 +15,23 @@ import java.util.List;
 public class Warenkorb {
 
     private final List<Product> products;
+    private static Warenkorb warenkorb;
 
     public Warenkorb() {
         products = new ArrayList<>();
     }
 
+    public static Warenkorb getInstance() {
+        if (warenkorb == null) {
+            warenkorb = new Warenkorb();
+        }
+        return warenkorb;
+    }
+
+    public List<Product> inhalt() {
+        return products;
+    }
+
     public void add(Product p) {
         if (p == null) {
             throw new NullPointerException("Produkt darf nicht null sein!");
@@ -27,6 +39,10 @@ public class Warenkorb {
         products.add(p);
     }
 
+    public Product getProduct(int i) {
+        return products.get(i);
+    }
+
     public void remove(Product p) {
         if (p == null) {
             throw new NullPointerException("Produkt darf nicht null sein!");
@@ -37,6 +53,10 @@ public class Warenkorb {
         products.remove(p);
     }
 
+    public void clear() {
+        products.clear();
+    }
+
     public double sum() {
         return products.stream().mapToDouble(p -> p.getPrice()).sum();
     }
@@ -51,4 +71,23 @@ public class Warenkorb {
     public int getAnzahl() {
         return products.size();
     }
+
+    public void auflisten() {
+        products.forEach((p) -> {
+            System.out.println(p.getName() + ", " + p.getPrice());
+            //System.out.println(p.getName());
+        });
+    }
+
+    /* public BeanContainer<Integer, Product> ausgabe() {
+        final BeanContainer<Integer, Product> data = new BeanContainer<>(Product.class);
+        data.setBeanIdProperty("id");
+        products.forEach((product) -> {
+            data.addBean(product);
+        });
+        final Table table = new Table("Products", data);
+        table.setSizeFull();
+        table.setSelectable(true);
+        return data;
+    }*/
 }
diff --git a/src/main/java/org/s4s/dao/impl/LoginControl.java b/src/main/java/org/s4s/process/control/LoginControl.java
similarity index 79%
rename from src/main/java/org/s4s/dao/impl/LoginControl.java
rename to src/main/java/org/s4s/process/control/LoginControl.java
index 189a124..7c49938 100644
--- a/src/main/java/org/s4s/dao/impl/LoginControl.java
+++ b/src/main/java/org/s4s/process/control/LoginControl.java
@@ -3,14 +3,15 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package org.s4s.dao.impl;
+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.exceptions.DAOException;
 import org.s4s.dao.KundenDAO;
+import org.s4s.dao.impl.AbstractDatabaseClass;
+import org.s4s.exceptions.DAOException;
 import org.s4s.exceptions.NoSuchUserOrPassword;
 import org.s4s.modell.dto.User;
 import org.s4s.services.util.Roles;
@@ -30,17 +31,18 @@ public class LoginControl extends AbstractDatabaseClass implements KundenDAO {
     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\""
-                    + " FROM \"ERR\".\"user\" u "
-                    + " WHERE u.benutzername = '" + username + "' "
-                    + " AND u.passwort = '" + password + "';")) {if (!set.next()) {
+
+        try (ResultSet set = executeQuery("SELECT u.\"benutzername\""
+                + " FROM \"ERR\".\"user\" u "
+                + " WHERE u.benutzername = '" + username + "' "
+                + " AND u.passwort = '" + password + "';")) {
+            if (!set.next()) {
                 throw new NoSuchUserOrPassword();
             }
             String bname = set.getString("benutzername");
-            
+
             User user = new User(bname);
-            
+
             createSession(user);
 
         } catch (SQLException ex) {
@@ -50,7 +52,7 @@ public class LoginControl extends AbstractDatabaseClass implements KundenDAO {
 
     @Override
     public void createSession(User user) throws NoSuchUserOrPassword, DAOException {
-        VaadinSession session =  UI.getCurrent().getSession();
+        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/dao/impl/LogoutControl.java b/src/main/java/org/s4s/process/control/LogoutControl.java
similarity index 93%
rename from src/main/java/org/s4s/dao/impl/LogoutControl.java
rename to src/main/java/org/s4s/process/control/LogoutControl.java
index d19e710..620313e 100644
--- a/src/main/java/org/s4s/dao/impl/LogoutControl.java
+++ b/src/main/java/org/s4s/process/control/LogoutControl.java
@@ -3,7 +3,7 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package org.s4s.dao.impl;
+package org.s4s.process.control;
 
 import com.vaadin.server.VaadinSession;
 import com.vaadin.ui.UI;
diff --git a/src/main/java/org/s4s/dao/impl/ProductSearch.java b/src/main/java/org/s4s/process/control/ProductSearch.java
similarity index 78%
rename from src/main/java/org/s4s/dao/impl/ProductSearch.java
rename to src/main/java/org/s4s/process/control/ProductSearch.java
index 9852555..5664a3c 100644
--- a/src/main/java/org/s4s/dao/impl/ProductSearch.java
+++ b/src/main/java/org/s4s/process/control/ProductSearch.java
@@ -3,17 +3,16 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package org.s4s.dao.impl;
+package org.s4s.process.control;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import org.s4s.exceptions.DAOException;
-import org.s4s.exceptions.NoSuchProduct;
 import org.s4s.dao.ProductDAO;
+import org.s4s.dao.impl.AbstractDatabaseClass;
 import org.s4s.modell.dto.Product;
-import org.s4s.services.db.JDBCConnection;
 
 /**
  *
@@ -24,7 +23,6 @@ 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() {
 
     }
@@ -39,18 +37,18 @@ public class ProductSearch extends AbstractDatabaseClass implements ProductDAO {
     }
 
     @Override
-    public List<Product> getProductByTyp(String kateg) throws DAOException {
+    public List<Product> getProductByName(String kate) throws DAOException {
         List<Product> liste = new ArrayList<>();
-        try(  ResultSet set = executeQuery("SELECT *"
-                    + " FROM \"ERR\".\"artikel\" a"
-                    + " WHERE LOWER(a.kategorie) = LOWER('" + kateg + "');")) {
-             while(set.next()) {
+        try (ResultSet set = executeQuery("SELECT *"
+                + " FROM \"ERR\".\"artikel\" a"
+                + " WHERE LOWER(a.name) = LOWER('" + kate + "');")) {
+            while (set.next()) {
                 String name = set.getString("name");
                 int id = set.getInt("artikelID");
                 String kategorie = set.getString("kategorie");
                 double price = set.getDouble("preis");
                 String description = set.getString("beschreibung");
-                
+
                 Product p = new Product(name, id, kategorie, price, description);
                 liste.add(p);
             }
@@ -63,16 +61,16 @@ public class ProductSearch extends AbstractDatabaseClass implements ProductDAO {
     @Override
     public List<Product> getProductByDescription(String descrip) throws DAOException {
         List<Product> liste = new ArrayList<>();
-        try(ResultSet set = executeQuery("SELECT *"
-                    + " FROM \"ERR\".\"artikel\" a"
-                    + " WHERE LOWER(a.beschreibung) ILIKE LOWER('%" + descrip + "%');")) {
-            while(set.next()) {
+        try (ResultSet set = executeQuery("SELECT *"
+                + " FROM \"ERR\".\"artikel\" a"
+                + " WHERE LOWER(a.beschreibung) ILIKE LOWER('%" + descrip + "%');")) {
+            while (set.next()) {
                 String name = set.getString("name");
                 int id = set.getInt("artikelID");
                 String kategorie = set.getString("kategorie");
                 double price = set.getDouble("preis");
                 String description = set.getString("beschreibung");
-                
+
                 Product p = new Product(name, id, kategorie, price, description);
                 liste.add(p);
             }
diff --git a/src/main/java/org/s4s/dao/impl/RegistrationControl.java b/src/main/java/org/s4s/process/control/RegistrationControl.java
similarity index 98%
rename from src/main/java/org/s4s/dao/impl/RegistrationControl.java
rename to src/main/java/org/s4s/process/control/RegistrationControl.java
index 7e1a192..076dfbb 100644
--- a/src/main/java/org/s4s/dao/impl/RegistrationControl.java
+++ b/src/main/java/org/s4s/process/control/RegistrationControl.java
@@ -3,8 +3,7 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package org.s4s.dao.impl;
-
+package org.s4s.process.control;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -13,6 +12,7 @@ import org.s4s.dao.RegistrationDAO;
 import org.s4s.exceptions.WrongInputException;
 
 
+
 /**
  *
  * @author Simon
diff --git a/src/main/java/org/s4s/dao/impl/ShopControl.java b/src/main/java/org/s4s/process/control/ShopControl.java
similarity index 98%
rename from src/main/java/org/s4s/dao/impl/ShopControl.java
rename to src/main/java/org/s4s/process/control/ShopControl.java
index 86bac45..5c0e8b7 100644
--- a/src/main/java/org/s4s/dao/impl/ShopControl.java
+++ b/src/main/java/org/s4s/process/control/ShopControl.java
@@ -3,7 +3,7 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package org.s4s.dao.impl;
+package org.s4s.process.control;
 
 import com.vaadin.server.VaadinSession;
 import com.vaadin.ui.UI;
diff --git a/src/main/java/org/s4s/process/control/ShopSearch.java b/src/main/java/org/s4s/process/control/ShopSearch.java
new file mode 100644
index 0000000..a9437f4
--- /dev/null
+++ b/src/main/java/org/s4s/process/control/ShopSearch.java
@@ -0,0 +1,82 @@
+/*
+ * 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.process.control;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import org.s4s.dao.ShopSearchDAO;
+import org.s4s.dao.impl.AbstractDatabaseClass;
+import org.s4s.exceptions.DAOException;
+import org.s4s.modell.dto.Shop;
+
+/**
+ *
+ * @author Holger
+ */
+public class ShopSearch extends AbstractDatabaseClass implements ShopSearchDAO {
+
+    private ShopSearch() {
+
+    }
+
+    public static ShopSearch search = null;
+
+    public static ShopSearch getInstance() {
+        if (search == null) {
+            search = new ShopSearch();
+        }
+        return search;
+    }
+
+    @Override
+    public List<Shop> getShopByName(String typ) throws DAOException {
+        List<Shop> liste = new ArrayList<>();
+
+        try (ResultSet set = executeQuery("SELECT *"
+                + " FROM \"ERR\".\"shop\" s"
+                + " WHERE LOWER(s.name) = LOWER('" + typ + "');")) {
+            while (set.next()) {
+                int shopId = set.getInt("shopid");
+                String name = set.getString("name");
+                int besitzer = set.getInt("besitzer");
+                double bewertung = set.getDouble("bewertung");
+                int bewertunganzahl = set.getInt("bewertungsanzahl");
+
+                Shop s = new Shop(shopId, name, besitzer, bewertung, bewertunganzahl);
+                liste.add(s);
+            }
+        } catch (SQLException ex) {
+            throw new DAOException(ex);
+        }
+        return liste;
+    }
+
+    @Override
+    public List<Shop> getShopByOwner(String typ) throws DAOException {
+        List<Shop> liste = new ArrayList<>();
+
+        try (ResultSet set = executeQuery("SELECT *"
+                + " FROM \"ERR\".\"shop\" s"
+                + " WHERE LOWER(s.besitzer) = LOWER('" + typ + "');")) {
+            while (set.next()) {
+                int shopId = set.getInt("shopid");
+                String name = set.getString("name");
+                int besitzer = set.getInt("besitzer");
+                double bewertung = set.getDouble("bewertung");
+                int bewertunganzahl = set.getInt("bewertungsanzahl");
+
+                Shop s = new Shop(shopId, name, besitzer, bewertung, bewertunganzahl);
+                liste.add(s);
+            }
+        } catch (SQLException ex) {
+            throw new DAOException(ex);
+        }
+        return liste;
+    }
+
+}
diff --git a/src/main/java/org/s4s/dao/impl/TransactionControl.java b/src/main/java/org/s4s/process/control/TransactionControl.java
similarity index 100%
rename from src/main/java/org/s4s/dao/impl/TransactionControl.java
rename to src/main/java/org/s4s/process/control/TransactionControl.java
diff --git a/src/test/java/org/s4s/dao/impl/LoginControl_Test.java b/src/test/java/org/s4s/dao/impl/LoginControl_Test.java
index 5d25a20..d1b5c78 100644
--- a/src/test/java/org/s4s/dao/impl/LoginControl_Test.java
+++ b/src/test/java/org/s4s/dao/impl/LoginControl_Test.java
@@ -4,9 +4,7 @@ import org.junit.Test;
 import org.s4s.dao.KundenDAO;
 import org.s4s.exceptions.DAOException;
 import org.s4s.exceptions.NoSuchUserOrPassword;
-import org.s4s.modell.dto.User;
-
-import static org.junit.Assert.*;
+import org.s4s.process.control.LoginControl;
 
 /**
  * Created by uerdingen on 03.06.17.
@@ -20,4 +18,4 @@ public class LoginControl_Test {
         kundenDAO.getUserByCredentials("testuser", "54321");
     }
 
-}
\ No newline at end of file
+}
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 d3a6ffe..9efe9a6 100644
--- a/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java
+++ b/src/test/java/org/s4s/dao/impl/RegistrationControl_Test.java
@@ -1,33 +1,31 @@
 package org.s4s.dao.impl;
 
-import org.junit.Before;
-import org.junit.Test;
-
 import static org.junit.Assert.*;
+import org.junit.Test;
+import org.s4s.process.control.RegistrationControl;
 
 /**
  * Created by uerdingen on 03.06.17.
  */
 public class RegistrationControl_Test {
 
-        private String[] data1 = new String[7];
-
-        @Test
-        public void nameValidator_Test(){
-            assertTrue(RegistrationControl.nameValidator("Uerdingen"));
-            assertFalse(RegistrationControl.nameValidator("fs2df3"));
-        }
+    private String[] data1 = new String[7];
 
+    @Test
+    public void nameValidator_Test() {
+        assertTrue(RegistrationControl.nameValidator("Uerdingen"));
+        assertFalse(RegistrationControl.nameValidator("fs2df3"));
+    }
 
 //unfinished
     @Test
-    public void Registration_Test(){
+    public void Registration_Test() {
         data1[0] = "Uerdingen";
         data1[1] = "Simon";
         data1[2] = "simon.uerdingen@inf.h-brs.de";
         data1[4] = "12345";
-       //assertTrue(RegistrationControl.init(data1)); 
-       //@TM: der Test muss neu geschrieben werden, wegen Änderungen in View, DAO & Control; svolle2s
+        //assertTrue(RegistrationControl.init(data1));
+        //@TM: der Test muss neu geschrieben werden, wegen Änderungen in View, DAO & Control; svolle2s
     }
 
-}
\ No newline at end of file
+}
-- 
GitLab