diff --git a/src/main/java/org/s4s/dao/ProductDAO.java b/src/main/java/org/s4s/dao/ProductDAO.java index 44f14d9d4c9068861eeb420f7310bfdc21e1ba60..c1831b8003dd97cd4c925e47652e1103239d07bc 100644 --- a/src/main/java/org/s4s/dao/ProductDAO.java +++ b/src/main/java/org/s4s/dao/ProductDAO.java @@ -21,7 +21,7 @@ public interface ProductDAO { List<Product> getProductListById(int id) throws DAOException; - Shop getProductOwner(Product product) throws DAOException; + Shop getOwnerOfProduct(Product product) throws DAOException; List<Product> getAllProductsFromShop(int id) throws DAOException; diff --git a/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java b/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java index c7ce3cdc90d363965e858c3b0731264cf16f1006..abeb00c68f99f65ed40491e184b4bc201b36e165 100644 --- a/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java +++ b/src/main/java/org/s4s/dao/impl/ProductDAOimpl.java @@ -29,10 +29,10 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO private final List<Product> liste = new ArrayList<>(); private static ProductDAO search = null; - + private static final User user = (User) UI.getCurrent().getSession().getAttribute(Roles.CURRENTUSER); private final Statement statement = JDBCConnection.getInstance().getStatement(); - + //DB-Block Statement st; String sql_select; @@ -104,8 +104,9 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO String kategorie = set.getString("kategorie"); double price = set.getDouble("preis"); String description = set.getString("beschreibung"); + int sId = set.getInt("shopid"); - p = new Product(name, pId, kategorie, price, description); + p = new Product(name, pId, kategorie, price, description, sId); } } catch (SQLException ex) { throw new DAOException(ex); @@ -114,12 +115,13 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO } @Override - public Shop getProductOwner(Product product) throws DAOException { + public Shop getOwnerOfProduct(Product product) throws DAOException { Shop s = new Shop(); int tmp = product.getShopId(); - try (ResultSet set = executeQuery("SELECT s.\"name\", s.\"shopid\"" - + " FROM \"ERR\".\"shop\" s, \"ERR\".\"artikel\" a" - + " WHERE s.shopid = a.shopid AND a.shopid = ('" + tmp + "');")) { + + try (ResultSet set = executeQuery("SELECT *" + + " FROM \"ERR\".\"shop\" s" + + " WHERE s.shopid = ('" + tmp + "');");) { while (set.next()) { int shopId = set.getInt("shopid"); String name = set.getString("name"); @@ -182,13 +184,12 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO @Override public boolean addProduct(String name, String beschreibung, double preis, Image pic, int shopID, int modulID, int cat) throws DAOException { boolean done = false; - + try { sql_update = "INSERT INTO \"ERR\".\"artikel\"(name, beschreibung, preis, foto, shopid, modulid, kategorie) " - + "VALUES(\'" + name + "\', \'" + beschreibung + "\', \'" + preis + "\', \'" + pic + "\', \'" + shopID + "\', \'" + modulID + "\', \'" + cat + "\')"; + + "VALUES(\'" + name + "\', \'" + beschreibung + "\', \'" + preis + "\', \'" + pic + "\', \'" + shopID + "\', \'" + modulID + "\', \'" + cat + "\')"; int exe = JDBCConnection.getInstance().getStatement().executeUpdate(sql_update); - if (exe < 0) { throw new DAOException("Wrong Input!"); } @@ -198,20 +199,19 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO e.printStackTrace(); System.out.println("Exception occur: " + e); } - + return done; } @Override public boolean addProduct(String name, String beschreibung, Date dVon, Date dBis, double preis, Image pic, int shopID, int modulID, int cat) throws DAOException { boolean done = false; - + try { sql_update = "INSERT INTO \"ERR\".\"artikel\"(name, beschreibung, datum_von, preis, datum_bis, foto, shopid, modulid, kategorie) " + "VALUES(\'" + name + "\', \'" + beschreibung + "\', \'" + dVon + "\', \'" + preis + "\', \'" + dBis + "\', \'" + pic + "\', \'" + shopID + "\', \'" + modulID + "\', \'" + cat + "\')"; int exe = JDBCConnection.getInstance().getStatement().executeUpdate(sql_update); - if (exe < 0) { throw new DAOException("Wrong Input!"); } @@ -221,7 +221,7 @@ public class ProductDAOimpl extends AbstractDatabaseClass implements ProductDAO e.printStackTrace(); System.out.println("Exception occur: " + e); } - + return done; } } diff --git a/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java b/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java index 168aee234e6a47d60949acf8bc126fc9b4eb8b5b..c016606d02521162bae58c595551f1a2c247ad59 100644 --- a/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java +++ b/src/main/java/org/s4s/dao/impl/ShopDAOimpl.java @@ -132,7 +132,7 @@ public class ShopDAOimpl extends AbstractDatabaseClass implements ShopDAO { Shop s = new Shop(); try (ResultSet set = executeQuery("SELECT *" + "FROM \"ERR\".\"shop\" " - + "WHERE besitzer = " + user.getUserId() + ";");) { + + "WHERE besitzer = ('" + user.getUserId() + "');");) { while (set.next()) { int shopId = set.getInt("shopid"); String name = set.getString("name"); diff --git a/src/main/java/org/s4s/gui/views/ArtikelShopView.java b/src/main/java/org/s4s/gui/views/ArtikelShopView.java index a894ed87f8a1ca5f440099d0215e4988483e50c3..96dc123e3f69becb96777772d42215511f38a02e 100644 --- a/src/main/java/org/s4s/gui/views/ArtikelShopView.java +++ b/src/main/java/org/s4s/gui/views/ArtikelShopView.java @@ -30,37 +30,37 @@ 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"); @@ -78,7 +78,8 @@ public class ArtikelShopView extends TemplateView { table.setColumnHeader("price", "Preis in €"); layout.addComponent(table); table.setSizeFull(); - + table.setSelectable(true); + table.addItemClickListener((ItemClickEvent event) -> { BeanItem<Product> productBean = dataProducts.getItem(event.getItemId()); product = productBean.getBean(); @@ -87,8 +88,8 @@ public class ArtikelShopView extends TemplateView { } }); 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 0b7002661ce97c60a8959cda8f5e9c991ab7e1d4..d6a8a370e365782fd4e058c785d1af8a70f87056 100644 --- a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java +++ b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java @@ -37,9 +37,7 @@ 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()); - } + System.out.println(id); this.setUp(id); } else { Notification.show(null, "Kein Artikel ausgewählt!", Notification.Type.HUMANIZED_MESSAGE); @@ -51,9 +49,7 @@ public class ArtikeldetailsView extends TemplateView { try { this.setSizeFull(); product = controllerProduct.getProductById(id); - shop = controllerProduct.getProductOwner(product); - System.out.println(shop.getName()); - System.out.println(shop.getShopId()); + shop = controllerProduct.getOwnerOfProduct(product); HorizontalLayout horizontalLayout = new HorizontalLayout(); Panel p = new Panel("Name: " + product.getName()); Panel p1 = new Panel("Beschreibung: " + product.getDescription()); diff --git a/src/main/java/org/s4s/gui/views/ArtikelerstellungsView.java b/src/main/java/org/s4s/gui/views/ArtikelerstellungsView.java index 6dd0d0c81bdb0be77419e1ebff2eb0cb978331e3..c05cee3b54ef6b8e380042ce629ab916d5e69910 100644 --- a/src/main/java/org/s4s/gui/views/ArtikelerstellungsView.java +++ b/src/main/java/org/s4s/gui/views/ArtikelerstellungsView.java @@ -57,6 +57,11 @@ public class ArtikelerstellungsView extends TemplateView implements View { @Override public void enter(ViewChangeListener.ViewChangeEvent event) { + if (UI.getCurrent().getSession().getAttribute(Roles.CURRENTUSER) == null) { + User user = (User) UI.getCurrent().getSession().getAttribute(Roles.CURRENTUSER); + Notification.show(null, "Sie müssen eingeloggt sein, um Artikel zu inserieren!", Notification.Type.HUMANIZED_MESSAGE); + UI.getCurrent().getNavigator().navigateTo(Views.WELCOME); + } setUp(); } @@ -172,11 +177,10 @@ public class ArtikelerstellungsView extends TemplateView implements View { mList.iterator().remove(); } } catch (Exception e) { - System.out.println("gotta catch"); + Logger.getLogger(ArtikelerstellungsView.class.getName()).log(Level.SEVERE, null, e); } nsModul.setNullSelectionAllowed(false); // Kann hier jemand den Fehler finden? <------------------------------------------ - HorizontalLayout hKommand = new HorizontalLayout(bAbbrechen, bErstellen); HorizontalLayout hVerfuegbarkeit = new HorizontalLayout(dfVon, dfBis); HorizontalLayout hKriterien = new HorizontalLayout(nsKategorie, nsModul); diff --git a/src/main/java/org/s4s/gui/views/ShopView.java b/src/main/java/org/s4s/gui/views/ShopView.java index 27af5a7c3107f2c095d4946475b7652e2b2e92c5..50b9b1734fc92bd37af6fbe875f42f555a450861 100644 --- a/src/main/java/org/s4s/gui/views/ShopView.java +++ b/src/main/java/org/s4s/gui/views/ShopView.java @@ -1,11 +1,17 @@ package org.s4s.gui.views; +import com.vaadin.data.util.BeanContainer; import com.vaadin.navigator.ViewChangeListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.*; + +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.*; +import org.s4s.process.control.ProductControl; import org.s4s.process.control.ShopControl; import org.s4s.services.util.Roles; import org.s4s.services.util.Views; @@ -17,6 +23,10 @@ public class ShopView extends TemplateView { private Shop shop = new Shop(); private final ShopControl controllerShops = new ShopControl(); + private final ProductControl controllerProducts = new ProductControl(); + + private final BeanContainer<Integer, Product> dataProducts = new BeanContainer<>(Product.class); + private final Table tableProducts = new Table("Products", dataProducts); @Override public void enter(ViewChangeListener.ViewChangeEvent event) { @@ -36,20 +46,45 @@ public class ShopView extends TemplateView { } catch (DAOException ex) { Logger.getLogger(ShopView.class.getName()).log(Level.SEVERE, null, ex); } + int id = shop.getShopId(); VerticalLayout verticalLayout = new VerticalLayout(); HorizontalLayout horizontalLayout = new HorizontalLayout(); - Label label_hello = new Label("Hi, " + user.getVorname()); + Label label_hello = new Label("Hi, <b>" + user.getVorname() + "</b>!" + "\n" + "Dein Shop, <b>" + shop.getName() + "</b>", ContentMode.HTML); verticalLayout.addComponent(label_hello); verticalLayout.setComponentAlignment(label_hello, Alignment.MIDDLE_CENTER); - Label label_yourShop = new Label("Dein Shop, "); - verticalLayout.addComponent(label_yourShop); - verticalLayout.setComponentAlignment(label_yourShop, Alignment.MIDDLE_CENTER); + //List all products by owner + BeanContainer<Integer, Product> dataProducts = new BeanContainer<>(Product.class); + Table table = new Table("",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); + - Label label_OwnersProducts = new Label("Deine inserierten Artikel:"); - verticalLayout.addComponent(label_OwnersProducts); - verticalLayout.setComponentAlignment(label_OwnersProducts, Alignment.MIDDLE_CENTER); + //TO-DO Make List Clickable to remove articles. + //TO-DO Panel has to count articles! + if(liste.isEmpty()){ + Label label_noProducts = new Label("Du hast noch keine Produkte :-("); + verticalLayout.addComponent(label_noProducts); + verticalLayout.setComponentAlignment(label_noProducts,Alignment.MIDDLE_LEFT); + } else { + Label label_OwnersProducts = new Label("Deine inserierten Artikel:"); + verticalLayout.addComponent(label_OwnersProducts); + verticalLayout.setComponentAlignment(label_OwnersProducts, Alignment.MIDDLE_CENTER); + table.setPageLength(table.size()); + table.setVisibleColumns(new Object[]{"name", "price"}); + table.setColumnHeader("name", "Name"); + table.setColumnHeader("price", "Preis in €"); + verticalLayout.addComponent(table); + table.setSizeFull(); + } verticalLayout.addComponent(horizontalLayout); Button button_addProduct = new Button("Artikel inserieren"); @@ -64,14 +99,14 @@ public class ShopView extends TemplateView { verticalLayout.addComponent(label_ShopDetails); verticalLayout.setComponentAlignment(label_ShopDetails, Alignment.MIDDLE_CENTER); - Panel panel_createdDate = new Panel("Erstellt: "); + Panel panel_ProductQuantity = new Panel("Anzahl Produkte: " ); Panel panel_Rating = new Panel("Bewertung: " + shop.getBewertung()); Panel panel_RatingNumber = new Panel("Bewertungsanzahl: " + shop.getBewertungsanzahl()); Panel panel_ShopName = new Panel("Anbieter: " + shop.getName()); Panel panel_ShopID = new Panel("ShopID: " + shop.getShopId()); - verticalLayout.addComponent(panel_createdDate); - verticalLayout.setComponentAlignment(panel_createdDate, Alignment.MIDDLE_LEFT); + verticalLayout.addComponent((panel_ProductQuantity)); + verticalLayout.setComponentAlignment(panel_ProductQuantity, Alignment.MIDDLE_LEFT); verticalLayout.addComponent((panel_Rating)); verticalLayout.setComponentAlignment(panel_Rating, Alignment.MIDDLE_LEFT); verticalLayout.addComponent(panel_RatingNumber); diff --git a/src/main/java/org/s4s/gui/views/SucheView.java b/src/main/java/org/s4s/gui/views/SucheView.java index 79b629cca86919df713a9c939cb4ff7619a29e92..f0ed1c9bb83c292d8727e489f10c6952405c5e97 100644 --- a/src/main/java/org/s4s/gui/views/SucheView.java +++ b/src/main/java/org/s4s/gui/views/SucheView.java @@ -53,13 +53,18 @@ public class SucheView extends TemplateView { public void setUp() { final VerticalLayout contentLayout = new VerticalLayout(); - super.setUpFooterAndHeader(contentLayout); + super.setUpFooterAndHeader(contentLayout); setSizeFull(); - contentLayout.addComponent(tableShops); - contentLayout.setComponentAlignment(tableShops, Alignment.TOP_LEFT); - contentLayout.addComponent(tableProducts); - contentLayout.setComponentAlignment(tableProducts, Alignment.TOP_LEFT); + addComponent(contentLayout); + final VerticalLayout layout = new VerticalLayout(); + layout.addComponent(tableShops); + layout.setComponentAlignment(tableShops, Alignment.TOP_LEFT); + + layout.addComponent(tableProducts); + layout.setComponentAlignment(tableProducts, Alignment.TOP_LEFT); + contentLayout.addComponent(layout); + contentLayout.setComponentAlignment(layout, Alignment.TOP_LEFT); tableProducts.setSizeFull(); tableProducts.setSelectable(true); tableProducts.setWidth("100%"); diff --git a/src/main/java/org/s4s/gui/views/TemplateView.java b/src/main/java/org/s4s/gui/views/TemplateView.java index d7f014b3dffed93acbd76ceb1ef7626688bed896..ea6bddc4942a73add7e237d37cfef62ec62e7569 100644 --- a/src/main/java/org/s4s/gui/views/TemplateView.java +++ b/src/main/java/org/s4s/gui/views/TemplateView.java @@ -90,9 +90,9 @@ public class TemplateView extends VerticalLayout implements View { UI.getCurrent().getNavigator().navigateTo(Views.WARENKORB); break; - case "Kasse": - UI.getCurrent().getNavigator().navigateTo(Views.CHECKOUT); - break; + // case "Kasse": + // UI.getCurrent().getNavigator().navigateTo(Views.CHECKOUT); + // break; case "Login": UI.getCurrent().getNavigator().navigateTo(Views.LOGIN); break; @@ -108,7 +108,7 @@ public class TemplateView extends VerticalLayout implements View { LogoutControl.logout(); UI.getCurrent().getNavigator().navigateTo(Views.WELCOME); break; - case "Shop anzeigen": + case "Shop anzeigen": UI.getCurrent().getNavigator().navigateTo(Views.SHOPVIEW); break; case "Kontakt": @@ -139,12 +139,12 @@ public class TemplateView extends VerticalLayout implements View { // Yet another top-level item MenuBar.MenuItem shoppingCardItem = barmenu.addItem("Warenkorb", null, mycommand); - MenuBar.MenuItem checktoutItem = barmenu.addItem("Kasse", null, mycommand); + //MenuBar.MenuItem checktoutItem = barmenu.addItem("Kasse", null, mycommand); MenuBar.MenuItem loginItem = barmenu.addItem("Login", null, mycommand); MenuBar.MenuItem registerItem = barmenu.addItem("Registrieren", null, mycommand); MenuBar.MenuItem shopItem = barmenu.addItem("Shop erstellen", null, mycommand); MenuBar.MenuItem shopItem2 = barmenu.addItem("Shop anzeigen", null, mycommand); - + MenuBar.MenuItem userItem = barmenu.addItem("Mein Konto", null, null); userItem.addItem("Einstellungen", null, mycommand); @@ -180,7 +180,7 @@ public class TemplateView extends VerticalLayout implements View { } else { registerItem.setVisible(false); loginItem.setVisible(false); - + User user = (User) UI.getCurrent().getSession().getAttribute(Roles.CURRENTUSER); ShopControl control = new ShopControl(); if (control.viewShop(user)) { diff --git a/src/main/java/org/s4s/process/control/ArtikelerstellungsControl.java b/src/main/java/org/s4s/process/control/ArtikelerstellungsControl.java index e7a7a16f503693fa261a70917d9a352a01630ae8..551bb688e90c4d8e7e628918e0008c639a5ebe78 100644 --- a/src/main/java/org/s4s/process/control/ArtikelerstellungsControl.java +++ b/src/main/java/org/s4s/process/control/ArtikelerstellungsControl.java @@ -9,6 +9,7 @@ import com.vaadin.ui.Image; import java.util.Date; import java.util.List; import org.s4s.dao.ProductDAO; +import org.s4s.dao.impl.ProductDAOimpl; import org.s4s.exceptions.DAOException; import org.s4s.modell.dto.Product; @@ -20,6 +21,10 @@ public class ArtikelerstellungsControl { private static ProductDAO pDAO = null; + public ArtikelerstellungsControl() { + pDAO = ProductDAOimpl.getInstance(); + } + public List<Product> getProductByDescription(String typ) throws DAOException { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } diff --git a/src/main/java/org/s4s/process/control/ProductControl.java b/src/main/java/org/s4s/process/control/ProductControl.java index 1ed30febc6ec6d24fcf5890704cf0eccf5759b0f..7962e2e88035cb02795fbf9c174ca22aaf687bd2 100644 --- a/src/main/java/org/s4s/process/control/ProductControl.java +++ b/src/main/java/org/s4s/process/control/ProductControl.java @@ -31,8 +31,8 @@ public class ProductControl { return dao.getProductById(id); } - public Shop getProductOwner(Product product) throws DAOException { - return dao.getProductOwner(product); + public Shop getOwnerOfProduct(Product product) throws DAOException { + return dao.getOwnerOfProduct(product); } public List<Product> getProductListById(int id) throws DAOException {