+ first two payment methods being displayed

Signed-off-by: Johannes Theiner <j.theiner@live.de>
This commit is contained in:
Johannes Theiner 2019-06-05 10:25:42 +02:00
parent 9f3b31113f
commit d205e62419
8 changed files with 155 additions and 36 deletions

View File

@ -277,10 +277,12 @@ public class Database {
PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " = ?");
statement.setLong(1, value);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
return new AbstractMap.SimpleEntry<>(resultSet, connection);
Map.Entry<ResultSet, Connection> entry = null;
while (resultSet.next()) {
entry = new AbstractMap.SimpleEntry<>(resultSet, connection);
}
return null;
return entry;
} catch (SQLException ex) {
ex.printStackTrace();

View File

@ -27,7 +27,7 @@ public class OrderDB {
ResultSet rs = entry.getKey();
List<OrderItem> items = getItems(id);
User user = database.user().get(rs.getLong("user"));
Payment payment = database.payment().get(rs.getLong("payment"));
Payment payment = database.payment().get(rs.getLong("payment"), user);
Address address = database.address().get(rs.getLong("address"), user);
Order order = new Order(id, user, items, rs.getDate("date"), rs.getLong("price"), payment, address);

View File

@ -32,7 +32,11 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
PaymentType type = new PaymentType(id, rs.getString("name"));
rs.beforeFirst();
PaymentType type = null;
while(rs.next()) {
type = new PaymentType(id, rs.getString("name"));
}
entry.getValue().close();
return type;
@ -43,15 +47,16 @@ public class PaymentDB {
}
@NotNull
public List<Payment> get(@NotNull User user) {
public List<? extends Payment> get(@NotNull User user) {
List<Payment> list = new ArrayList<>();
Map.Entry<ResultSet, Connection> entry = database.getResultSetByValue(database.tableUserPayment, "user", user.getId());
assert entry != null;
if(entry == null) return list;
try {
ResultSet rs = entry.getKey();
rs.beforeFirst();
while(rs.next()) {
list.add(get(rs.getLong("id")));
list.add(get(rs.getLong("id"), user));
}
entry.getValue().close();
@ -63,19 +68,19 @@ public class PaymentDB {
}
@Nullable
public Payment get(long id) {
public Payment get(long id, User user) {
Map.Entry<User, PaymentType> metadata = getMetadata(id);
assert metadata != null;
switch (metadata.getValue().getName()) {
case "PayPal":
return getPayPal(id, metadata.getKey());
return getPayPal(id, user);
case "CreditCard":
return getCreditCard(id, metadata.getKey());
return getCreditCard(id, user);
case "DebitCard":
return getDebitCard(id, metadata.getKey());
return getDebitCard(id, user);
case "Invoice":
return getInvoice(id, metadata.getKey());
return getInvoice(id, user);
}
return null;
}
@ -87,7 +92,11 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
PayPalPayment payment = new PayPalPayment(id, user, rs.getString("email"), rs.getString("authCode"));
rs.beforeFirst();
PayPalPayment payment = null;
while(rs.next()) {
payment = new PayPalPayment(id, user, rs.getString("mail"), rs.getString("auth"));
}
entry.getValue().close();
return payment;
@ -105,7 +114,12 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
CreditCardPayment payment = new CreditCardPayment(id, user, rs.getInt("number"), rs.getString("owner"), rs.getDate("expiration"), rs.getInt("checksum"));
rs.beforeFirst();
CreditCardPayment payment = null;
while(rs.next()) {
payment = new CreditCardPayment(id, user, rs.getInt("number"), rs.getString("owner"), rs.getDate("expiration"), rs.getInt("checksum"));
}
entry.getValue().close();
return payment;
@ -123,7 +137,11 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
DebitCardPayment payment = new DebitCardPayment(id, user, rs.getString("iban"), rs.getString("bic"), rs.getString("owner"));
rs.beforeFirst();
DebitCardPayment payment = null;
while(rs.next()) {
payment = new DebitCardPayment(id, user, rs.getString("iban"), rs.getString("bic"), rs.getString("owner"));
}
entry.getValue().close();
return payment;
@ -140,9 +158,12 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
rs.beforeFirst();
InvoicePayment payment = null;
if(rs.getLong("id") == id && rs.getLong("user") == user.getId()) {
payment = new InvoicePayment(id, user);
while(rs.next()) {
if(rs.getLong("id") == id && rs.getLong("user") == user.getId()) {
payment = new InvoicePayment(id, user);
}
}
entry.getValue().close();
@ -296,8 +317,11 @@ public class PaymentDB {
try {
ResultSet rs = entry.getKey();
Map.Entry<User, PaymentType> metadata = new AbstractMap.SimpleEntry<>(database.user().get(rs.getLong("user")), getType(rs.getLong("type")));
rs.beforeFirst();
Map.Entry<User, PaymentType> metadata = null;
while(rs.next()) {
metadata = new AbstractMap.SimpleEntry<>(database.user().get(rs.getLong("user")), getType(rs.getLong("type")));
}
entry.getValue().close();
return metadata;

View File

@ -6,10 +6,10 @@ import de.hsel.itech.db.pojo.User;
import lombok.Getter;
import lombok.Setter;
import javax.faces.annotation.ManagedProperty;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ -20,11 +20,7 @@ import java.util.List;
*/
@ManagedBean
@RequestScoped
public class AddressBean {
@Setter
@ManagedProperty("#{userBean.user}")
private User user;
public class AddressBean implements Serializable {
public User getUser() {
FacesContext context = FacesContext.getCurrentInstance();

View File

@ -1,23 +1,56 @@
package de.hsel.itech.jsf;
import de.hsel.itech.db.Database;
import de.hsel.itech.db.pojo.Payment;
import de.hsel.itech.db.pojo.User;
import de.hsel.itech.db.pojo.*;
import javax.faces.annotation.ManagedProperty;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import java.util.ArrayList;
import java.util.List;
@ManagedBean
@SessionScoped
public class PaymentBean {
@ManagedProperty("#{userBean.user}")
private User user;
public List<Payment> getMethods() {
return Database.getInstance().payment().get(user);
public User getUser() {
FacesContext context = FacesContext.getCurrentInstance();
return (User) context.getApplication().evaluateExpressionGet(context,"#{userBean.user}", User.class);
}
public List<CreditCardPayment> getCreditCard() {
List<CreditCardPayment> list = new ArrayList<>();
for(Payment payment : Database.getInstance().payment().get(getUser())) {
if(payment instanceof CreditCardPayment)
list.add((CreditCardPayment) payment);
}
return list;
}
public List<DebitCardPayment> getDebitCard() {
List<DebitCardPayment> list = new ArrayList<>();
for(Payment payment : Database.getInstance().payment().get(getUser())) {
if(payment instanceof DebitCardPayment)
list.add((DebitCardPayment) payment);
}
return list;
}
public List<PayPalPayment> getPayPal() {
List<PayPalPayment> list = new ArrayList<>();
for (Payment payment : Database.getInstance().payment().get(getUser())) {
if(payment instanceof PayPalPayment)
list.add((PayPalPayment) payment);
}
return list;
}
public List<InvoicePayment> getInvoice() {
List<InvoicePayment> list = new ArrayList<>();
for(Payment payment : Database.getInstance().payment().get(getUser())) {
if(payment instanceof InvoicePayment)
list.add((InvoicePayment) payment);
}
return list;
}
}

View File

@ -7,10 +7,11 @@ import lombok.Setter;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;
@ManagedBean
@SessionScoped
public class UserBean {
public class UserBean implements Serializable {
@Getter
@Setter

View File

@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS author(id bigint primary key auto_increment, name var
CREATE TABLE IF NOT EXISTS author_book(author bigint, book bigint, primary key(author, book), foreign key (author) REFERENCES author(id), foreign key (book) references book(id) on delete cascade);
CREATE TABLE IF NOT EXISTS category(id bigint primary key auto_increment, name varchar(25), image varchar(11));
CREATE TABLE IF NOT EXISTS user(id bigint primary key auto_increment, name varchar(50), email varchar(255), password binary(60), type tinyint);
CREATE TABLE IF NOT EXISTS address(id bigint primary key auto_increment, name varchar(100), street varchar(100), number smallint, zipCode smallint, city varchar(50));
CREATE TABLE IF NOT EXISTS address(id bigint primary key auto_increment, name varchar(100), street varchar(100), number smallint, zipCode int(6), city varchar(50));
CREATE TABLE IF NOT EXISTS user_address(id bigint primary key auto_increment, user bigint, address bigint, foreign key (user) REFERENCES user(id), foreign key (address) references address(id) on delete cascade);
CREATE TABLE IF NOT EXISTS payment_type(id bigint primary key auto_increment, name varchar(25) unique);
INSERT IGNORE INTO payment_type (name) values ('CreditCard');

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view>
<ui:composition template="template.xhtml">
<ui:define name="content">
<h1 class="m-text-center">Zahlungsmöglichkeiten</h1>
<h:panelGroup layout="block" rendered="#{userBean.loggedIn}">
<h3 class="m-text-center">Kreditkarte</h3>
<h:panelGroup layout="block" styleClass="m-row">
<ui:repeat value="#{paymentBean.creditCard}" var="payment">
<div class="m-col-t-3">
<div class="m-block m-primary">
#{payment.owner}<br/>
#{payment.number}<br/>
#{payment.checksum}<br/>
#{payment.expiration}
</div>
</div>
</ui:repeat>
<div class="m-col-t-3">
<h:outputLink value="payment-add.jsf">
<div class="m-block m-text-center">
<i class="fas fa-plus fa-4x"/>
</div>
</h:outputLink>
</div>
</h:panelGroup>
<h3 class="m-text-center">PayPal</h3>
<h:panelGroup layout="block" styleClass="m-row">
<ui:repeat value="#{paymentBean.payPal}" var="payment">
<div class="m-col-t-3">
<div class="m-block m-primary">
#{payment.email}
</div>
</div>
</ui:repeat>
<div class="m-col-t-3">
<h:outputLink value="payment-add.jsf">
<div class="m-block m-text-center">
<i class="fas fa-plus fa-4x"/>
</div>
</h:outputLink>
</div>
</h:panelGroup>
</h:panelGroup>
</ui:define>
</ui:composition>
</f:view>
</html>