diff --git a/checkstyle.xml b/checkstyle.xml index 1cec088..0c17f24 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -44,7 +44,7 @@ - + @@ -55,13 +55,14 @@ - + + + + value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_DO, LITERAL_IF, LITERAL_ELSE"/> diff --git a/pom.xml b/pom.xml index 2418572..188835c 100644 --- a/pom.xml +++ b/pom.xml @@ -212,6 +212,10 @@ spotbugs-maven-plugin 3.1.9 + + org.apache.maven.plugins + maven-javadoc-plugin + diff --git a/src/main/java/de/hsel/itech/config/Configuration.java b/src/main/java/de/hsel/itech/config/Configuration.java index 3c2b440..3412c35 100644 --- a/src/main/java/de/hsel/itech/config/Configuration.java +++ b/src/main/java/de/hsel/itech/config/Configuration.java @@ -10,6 +10,8 @@ import java.io.FileNotFoundException; import java.io.FileReader; /** + * config object. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -25,7 +27,10 @@ public class Configuration { private Database database; - + /** + * gets Configuration object from file. + * @return {@link de.hsel.itech.config.Configuration} + */ public static Configuration get() { Gson gson = new Gson(); diff --git a/src/main/java/de/hsel/itech/config/Database.java b/src/main/java/de/hsel/itech/config/Database.java index 2e78599..3eb5138 100644 --- a/src/main/java/de/hsel/itech/config/Database.java +++ b/src/main/java/de/hsel/itech/config/Database.java @@ -5,6 +5,8 @@ import lombok.Getter; import lombok.ToString; /** + * POJO for gson. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 diff --git a/src/main/java/de/hsel/itech/db/Database.java b/src/main/java/de/hsel/itech/db/Database.java index a8af043..35af2eb 100644 --- a/src/main/java/de/hsel/itech/db/Database.java +++ b/src/main/java/de/hsel/itech/db/Database.java @@ -5,21 +5,26 @@ import de.hsel.itech.db.pojo.Author; import de.hsel.itech.db.pojo.Book; import de.hsel.itech.db.pojo.Category; import de.hsel.itech.db.pojo.Publisher; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.mariadb.jdbc.MariaDbPoolDataSource; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; +import java.net.URL; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.Year; +import java.util.AbstractMap; import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** - * + * base class for everything regarding the database. * * @author Johannes Theiner * @version 0.1 @@ -27,19 +32,34 @@ import java.util.ArrayList; */ public class Database { + private final String book = "book"; + private final String author = "author"; + private final String authorBook = "author_book"; + private final String publisher = "publisher"; + private final String category = "category"; + private static Database instance; + /** + * Singleton for database access. + * + * @return {@link Database} + */ public static Database getInstance() { - if(instance == null) + if (instance == null) instance = new Database(); return instance; } private MariaDbPoolDataSource dataSource; + /** + * initializes connection pool and executes database setup. + */ private Database() { Configuration config = Configuration.get(); - dataSource = new MariaDbPoolDataSource("jdbc:mysql://" + config.getDatabase().getHostname() + ":" + config.getDatabase().getPort() + "/" + config.getDatabase().getDatabase()); + dataSource = new MariaDbPoolDataSource("jdbc:mysql://" + config.getDatabase().getHostname() + + ":" + config.getDatabase().getPort() + "/" + config.getDatabase().getDatabase()); try { dataSource.setUser(config.getDatabase().getUsername()); dataSource.setPassword(config.getDatabase().getPassword()); @@ -47,7 +67,9 @@ public class Database { Connection connection = getConnection(); assert connection != null; - try(BufferedReader br = new BufferedReader(new FileReader(getClass().getClassLoader().getResource("database.sql").getFile()))) { + URL file = getClass().getClassLoader().getResource("database.sql"); + assert file != null; + try (BufferedReader br = new BufferedReader(new FileReader(file.getFile()))) { for (String line = br.readLine(); line != null; line = br.readLine()) { PreparedStatement statement = connection.prepareStatement(line); statement.executeUpdate(); @@ -55,8 +77,7 @@ public class Database { } } catch (IOException e) { e.printStackTrace(); - } - finally { + } finally { connection.close(); } } catch (SQLException e) { @@ -64,6 +85,11 @@ public class Database { } } + /** + * gets connection from connection pool. + * + * @return {@link java.sql.Connection} + */ @Nullable private Connection getConnection() { try { @@ -74,6 +100,12 @@ public class Database { return null; } + /** + * testing method. + * + * @return String + */ + @Deprecated public String getHello() { Connection connection = getConnection(); @@ -82,63 +114,497 @@ public class Database { assert connection != null; PreparedStatement statement = connection.prepareStatement("SELECT * FROM test WHERE id = 1"); ResultSet resultSet = statement.executeQuery(); - resultSet.next(); - hello = resultSet.getString("hello"); + if (resultSet.next()) + hello = resultSet.getString("hello"); connection.close(); } catch (SQLException e) { e.printStackTrace(); } - return hello; - } + /** + * gets author by id. + * + * @param id ID from database + * @return {@link de.hsel.itech.db.pojo.Author} + */ + @Nullable + public Author getAuthor(long id) { + Map.Entry entry = getResultSet(id, author); + assert entry != null; - private ArrayList books; - - public void addBook(Book book){ - if(books == null){ - books = new ArrayList(); + ResultSet rs = entry.getKey(); + Author author = null; + try { + author = new Author(rs.getLong("id"), rs.getString("name")); + entry.getValue().close(); + } catch (SQLException e) { + e.printStackTrace(); } - books.add(book); + return author; } - public void removeBook(long isbn){ - for(Book book : books){ - if(book.getIsbn() == isbn){ - books.remove(book); - break; + /** + * gets category by id. + * + * @param id ID from database + * @return {@link de.hsel.itech.db.pojo.Category} + */ + @Nullable + public Category getCategory(long id) { + Map.Entry entry = getResultSet(id, category); + assert entry != null; + + ResultSet rs = entry.getKey(); + Category category = null; + try { + category = new Category(rs.getLong("id"), rs.getString("name"), rs.getString("image")); + entry.getValue().close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return category; + } + + /** + * gets publisher by id. + * + * @param id ID from database + * @return {@link de.hsel.itech.db.pojo.Publisher} + */ + @Nullable + public Publisher getPublisher(long id) { + Map.Entry entry = getResultSet(id, publisher); + assert entry != null; + + ResultSet rs = entry.getKey(); + Publisher publisher = null; + try { + publisher = new Publisher(rs.getLong("id"), rs.getString("name")); + entry.getValue().close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return publisher; + } + + /** + * gets list of author ids from database. + * + * @param id book id from database + * @return {@link java.util.List} + */ + @Nullable + private List getAuthors(long id) { + Map.Entry, Connection> entry = getResultSets(id, authorBook, book); + assert entry != null; + try { + List list = new ArrayList<>(); + for (ResultSet rs : entry.getKey()) { + list.add(rs.getInt(author)); } + entry.getValue().close(); + return list; + } catch (SQLException e) { + e.printStackTrace(); } + return null; } - public ArrayList getBooks(){ - if(books == null){ - books = new ArrayList(); - Book book = new Book( - 1234, - new Author(123123,"Julian Hinxlage"), - new Publisher(234231,"Verlag xy"), - new Category(23434,"Education", "DxAzOKSiPoE"), - "C++ for beginners", Year.of(2019),1500,"C++ book", "DxAzOKSiPoE" - ); - books.add(book); + /** + * gets book by id. + * + * @param id ID from database + * @return {@link de.hsel.itech.db.pojo.Book} + */ + @Nullable + public Book getBook(long id) { + Map.Entry entry = getResultSet(id, book); + assert entry != null; - book = new Book( - 1235, - new Author(123123,"Julian Hinxlage"), - new Publisher(234231,"Verlag xy"), - new Category(23434,"Education", "DxAzOKSiPoE"), - "C++ for beginners vol 2", Year.of(2019),1499,"C++ book", "DxAzOKSiPoE" - ); - books.add(book); + ResultSet rs = entry.getKey(); + Book book = null; + try { + Category category = getCategory(rs.getLong(this.category)); + Publisher publisher = getPublisher(rs.getLong(this.publisher)); + List authorIds = getAuthors(id); + assert authorIds != null; + List authors = new ArrayList<>(); + for (int i : authorIds) { + Author author = getAuthor(i); + assert author != null; + authors.add(author); + } + book = new Book(rs.getLong("id"), authors, publisher, category, rs.getString("title"), + Year.of(rs.getInt("year")), rs.getInt("price"), rs.getString("description"), + rs.getString("image")); + entry.getValue().close(); + } catch (SQLException e) { + e.printStackTrace(); } + return book; + } + /** + * gets all books. + * + * @return {@link java.util.List} + */ + @Nullable + public List getBooks() { + Map.Entry, Connection> entry = getResultSets(book, "id"); + assert entry != null; + + List ids = new ArrayList<>(); + try { + for (ResultSet resultSet : entry.getKey()) { + ids.add(resultSet.getLong("id")); + } + entry.getValue().close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + List books = new ArrayList<>(); + for (long id : ids) { + books.add(getBook(id)); + } return books; } + /** + * gets books by category. + * + * @param category category id + * @return {@link java.util.List} + */ + @Nullable + public List getBooks(long category) { + Connection connection = getConnection(); + assert connection != null; + + List books = new ArrayList<>(); + try { + PreparedStatement statement = connection.prepareStatement("SELECT (id) FROM book WHERE category = ?"); + statement.setLong(1, category); + + ResultSet resultSet = statement.executeQuery(); + + while (resultSet.next()) { + books.add(getBook(resultSet.getLong("id"))); + } + + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return books; + } + + /** + * get books by category. + * + * @param category Category object + * @return {@link java.util.List} + */ + @Nullable + public List getBooks(@NotNull Category category) { + return getBooks(category.getId()); + } + /** + * Inserts book into database. + * authors, publishers, and category have to exist. + * + * @param book Book + * @return insert count + */ + public int insert(@NotNull Book book) { + Connection connection = getConnection(); + assert connection != null; + int insertCount = 0; + + try { + PreparedStatement statement = connection.prepareStatement("INSERT INTO book(title, description, " + + "price, year, publisher, category, image) VALUES (?, ?, ?, ?, ?, ?, ?)"); + statement.setString(1, book.getTitle()); + statement.setString(2, book.getDescription()); + statement.setInt(3, book.getPrice()); + statement.setInt(4, book.getYear().getValue()); + statement.setLong(5, book.getPublisher().getId()); + statement.setLong(6, book.getCategory().getId()); + statement.setString(7, book.getImage()); + insertCount += statement.executeUpdate(); + + for (Author author : book.getAuthors()) { + PreparedStatement authorStatement = connection.prepareStatement("INSERT INTO author_book (author, book) VALUES (?, ?)"); + statement.setLong(1, author.getId()); + statement.setLong(2, book.getIsbn()); + insertCount += authorStatement.executeUpdate(); + } + + connection.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return insertCount; + } + + /** + * inserts Category into database. + * + * @param category Category + * @return insert count + */ + public int insert(@NotNull Category category) { + Connection connection = getConnection(); + assert connection != null; + + int insertCount = 0; + + try { + PreparedStatement statement = connection.prepareStatement("INSERT INTO category (name, image) VALUES (?, ?)"); + statement.setString(1, category.getName()); + statement.setString(2, category.getImage()); + insertCount += statement.executeUpdate(); + + connection.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return insertCount; + } + + /** + * inserts Author. + * + * @param author Author + * @return insert count + */ + public int insert(@NotNull Author author) { + Connection connection = getConnection(); + assert connection != null; + + int insertCount = 0; + try { + PreparedStatement statement = connection.prepareStatement("INSERT INTO author (name) VALUES (?)"); + statement.setString(1, author.getName()); + + insertCount += statement.executeUpdate(); + + connection.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return insertCount; + } + + /** + * inserts Publisher. + * + * @param publisher Publisher + * @return insert count + */ + public int insert(@NotNull Publisher publisher) { + Connection connection = getConnection(); + assert connection != null; + + int insertCount = 0; + try { + PreparedStatement statement = connection.prepareStatement("INSERT INTO publisher (name) VALUES (?)"); + statement.setString(1, publisher.getName()); + + insertCount += statement.executeUpdate(); + + connection.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return insertCount; + } + + /** + * deletes book from database. + * + * @param id book id + * @return deletion count + */ + public int deleteBook(long id) { + int deleteCount = 0; + + try { + Connection connection = getConnection(); + assert connection != null; + + PreparedStatement statement = connection.prepareStatement("DELETE FROM author_book WHERE book = ?"); + statement.setLong(1, id); + deleteCount = +statement.executeUpdate(); + + connection.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + + deleteCount += delete(id, book); + + return deleteCount; + } + + /** + * deletes author from database. + * + * @param id author id + * @return deletion count + */ + public int deleteAuthor(long id) { + return delete(id, author); + } + + /** + * deletes publisher from database. + * + * @param id publisher id + * @return deletion count + */ + public int deletePublisher(long id) { + return delete(id, publisher); + } + + /** + * deletes category from database. + * + * @param id category count + * @return deletion count + */ + public int deleteCategory(long id) { + return delete(id, category); + } + + + /** + * deletes id from table. + * + * @param id database id + * @param table table name + * @return deletion count + */ + private int delete(long id, String table) { + Connection connection = getConnection(); + assert connection != null; + + int deleteCount = 0; + try { + PreparedStatement statement = connection.prepareStatement("DELETE FROM ? WHERE id=?"); + statement.setString(1, table); + statement.setLong(2, id); + + deleteCount = +statement.executeUpdate(); + + } catch (SQLException ex) { + ex.printStackTrace(); + } + return deleteCount; + } + + + /** + * gets specific entry from database. + * + * @param id id from database + * @param table table name + * @return {@link java.util.Map.Entry} + */ + @Nullable + private Map.Entry getResultSet(long id, String table) { + Connection connection = getConnection(); + try { + assert connection != null; + PreparedStatement statement = connection.prepareStatement("SELECT * FROM ? WHERE ID = ?"); + statement.setString(1, table); + statement.setLong(2, id); + ResultSet resultSet = statement.executeQuery(); + if (resultSet.next()) { + return new AbstractMap.SimpleEntry<>(resultSet, connection); + } + return null; + + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * gets specific entries from table. + * + * @param id id all entries should reference + * @param table table name + * @param column column to match + * @return {@link java.util.Map.Entry} + */ + @Nullable + private Map.Entry, Connection> getResultSets(long id, @NotNull String table, @NotNull String column) { + Connection connection = getConnection(); + try { + assert connection != null; + PreparedStatement statement = connection.prepareStatement("SELECT * FROM ? WHERE ? = ?"); + statement.setString(1, table); + statement.setString(2, column); + statement.setLong(3, id); + + return getAllEntries(connection, statement); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * gets all specified columns from table. + * + * @param table table name + * @param columns columns as String array + * @return {@link java.util.Map.Entry} + */ + @Nullable + private Map.Entry, Connection> getResultSets(@NotNull String table, @NotNull String... columns) { + Connection connection = getConnection(); + try { + assert connection != null; + PreparedStatement statement = connection.prepareStatement("SELECT (?) FROM ?"); + statement.setString(1, String.join(",", columns)); + statement.setString(2, table); + + return getAllEntries(connection, statement); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * gets all entries contained in result set. + * + * @param connection Connection + * @param statement query statement + * @return {@link java.util.Map.Entry} + */ + @Nullable + private Map.Entry, Connection> getAllEntries(@NotNull Connection connection, @NotNull PreparedStatement statement) { + try { + ResultSet resultSet = statement.executeQuery(); + + Map.Entry, Connection> entry = new AbstractMap.SimpleEntry<>(new ArrayList<>(), connection); + while (resultSet.next()) { + entry.getKey().add(resultSet); + } + return entry; + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/Address.java b/src/main/java/de/hsel/itech/db/pojo/Address.java index f986fbf..030e0be 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Address.java +++ b/src/main/java/de/hsel/itech/db/pojo/Address.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Address. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,13 +15,14 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Address { - private Customer customer; + @NonNull private Customer customer; private long id; - private String name; - private String street; - private String number; - private int zipCode; - private String city; + @NonNull private String name; + @NonNull private String street; + @NonNull private String number; + @NonNull private int zipCode; + @NonNull private String city; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/Author.java b/src/main/java/de/hsel/itech/db/pojo/Author.java index 507893e..ce43d7d 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Author.java +++ b/src/main/java/de/hsel/itech/db/pojo/Author.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Author. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,9 +15,10 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Author { private long id; - private String name; + @NonNull private String name; } diff --git a/src/main/java/de/hsel/itech/db/pojo/Book.java b/src/main/java/de/hsel/itech/db/pojo/Book.java index 79160e1..c0fc7aa 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Book.java +++ b/src/main/java/de/hsel/itech/db/pojo/Book.java @@ -2,10 +2,15 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; import java.time.Year; +import java.util.List; /** + * POJO for Book. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -13,21 +18,22 @@ import java.time.Year; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Book { - private int isbn; - private Author author; - private Publisher publisher; - private Category category; - private String title; - private Year year; + private long isbn; + @NonNull private List authors; + @NonNull private Publisher publisher; + @NonNull private Category category; + @NonNull private String title; + @NonNull private Year year; /** - * saved in cents + * saved in cents. */ - private int price; - private String description; - private String image; + @NonNull private int price; + @NonNull private String description; + @NonNull private String image; diff --git a/src/main/java/de/hsel/itech/db/pojo/Category.java b/src/main/java/de/hsel/itech/db/pojo/Category.java index 685ca42..28eb94e 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Category.java +++ b/src/main/java/de/hsel/itech/db/pojo/Category.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Category. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,9 +15,10 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Category { - private int id; - private String name; - private String image; + private long id; + @NonNull private String name; + @NonNull private String image; } diff --git a/src/main/java/de/hsel/itech/db/pojo/CreditCardPayment.java b/src/main/java/de/hsel/itech/db/pojo/CreditCardPayment.java index 0a19e81..0145e55 100644 --- a/src/main/java/de/hsel/itech/db/pojo/CreditCardPayment.java +++ b/src/main/java/de/hsel/itech/db/pojo/CreditCardPayment.java @@ -2,10 +2,14 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; import java.time.LocalDate; /** + * POJO for CreditCard Payment. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -13,12 +17,13 @@ import java.time.LocalDate; @Data @AllArgsConstructor +@RequiredArgsConstructor public class CreditCardPayment { private long id; - private Customer customer; - private int number; - private String owner; - private LocalDate expiration; - private int checksum; + @NonNull private Customer customer; + @NonNull private int number; + @NonNull private String owner; + @NonNull private LocalDate expiration; + @NonNull private int checksum; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/Customer.java b/src/main/java/de/hsel/itech/db/pojo/Customer.java index b06ab30..566afd3 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Customer.java +++ b/src/main/java/de/hsel/itech/db/pojo/Customer.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Customer. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,11 +15,12 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Customer { private long id; - private String email; - private String name; - private String password; - private boolean admin; + @NonNull private String email; + @NonNull private String name; + @NonNull private String password; + @NonNull private boolean admin; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/DebitCardPayment.java b/src/main/java/de/hsel/itech/db/pojo/DebitCardPayment.java index 3741404..5e7afdd 100644 --- a/src/main/java/de/hsel/itech/db/pojo/DebitCardPayment.java +++ b/src/main/java/de/hsel/itech/db/pojo/DebitCardPayment.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for DebitCard Payment. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,11 +15,12 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class DebitCardPayment { private long id; - private Customer customer; - private String iban; - private String bic; - private String owner; + @NonNull private Customer customer; + @NonNull private String iban; + @NonNull private String bic; + @NonNull private String owner; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/InvoicePayment.java b/src/main/java/de/hsel/itech/db/pojo/InvoicePayment.java index acf8a5a..b250a97 100644 --- a/src/main/java/de/hsel/itech/db/pojo/InvoicePayment.java +++ b/src/main/java/de/hsel/itech/db/pojo/InvoicePayment.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Invoice Payment. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,8 +15,9 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class InvoicePayment { private long id; - private Customer customer; + @NonNull private Customer customer; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/Order.java b/src/main/java/de/hsel/itech/db/pojo/Order.java index c0f8a14..203a8eb 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Order.java +++ b/src/main/java/de/hsel/itech/db/pojo/Order.java @@ -2,11 +2,15 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; import java.time.LocalDateTime; /** + * POJO for Orders. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -14,16 +18,17 @@ import java.time.LocalDateTime; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Order { private long id; - private LocalDateTime date; - private Book book; + @NonNull private LocalDateTime date; + @NonNull private Book book; /** - * price in cents + * price in cents. */ - private int price; - private PaymentType paymentType; - private Address address; + @NonNull private int price; + @NonNull private PaymentType paymentType; + @NonNull private Address address; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/PayPalPayment.java b/src/main/java/de/hsel/itech/db/pojo/PayPalPayment.java index e5804ac..be55830 100644 --- a/src/main/java/de/hsel/itech/db/pojo/PayPalPayment.java +++ b/src/main/java/de/hsel/itech/db/pojo/PayPalPayment.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for PayPal Payment. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,10 +15,11 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class PayPalPayment { private long id; - private Customer customer; - private String email; - private String authCode; + @NonNull private Customer customer; + @NonNull private String email; + @NonNull private String authCode; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/PaymentType.java b/src/main/java/de/hsel/itech/db/pojo/PaymentType.java index 5f7e519..dad8e43 100644 --- a/src/main/java/de/hsel/itech/db/pojo/PaymentType.java +++ b/src/main/java/de/hsel/itech/db/pojo/PaymentType.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for PaymentType. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,8 +15,9 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class PaymentType { private long id; - private String name; + @NonNull private String name; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/Publisher.java b/src/main/java/de/hsel/itech/db/pojo/Publisher.java index c036d86..3d34f23 100644 --- a/src/main/java/de/hsel/itech/db/pojo/Publisher.java +++ b/src/main/java/de/hsel/itech/db/pojo/Publisher.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Publisher. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,8 +15,9 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class Publisher { private long id; - private String name; + @NonNull private String name; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/db/pojo/ShoppingCart.java b/src/main/java/de/hsel/itech/db/pojo/ShoppingCart.java index 375d01a..547743a 100644 --- a/src/main/java/de/hsel/itech/db/pojo/ShoppingCart.java +++ b/src/main/java/de/hsel/itech/db/pojo/ShoppingCart.java @@ -2,8 +2,12 @@ package de.hsel.itech.db.pojo; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; /** + * POJO for Shopping Cart. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 @@ -11,10 +15,11 @@ import lombok.Data; @Data @AllArgsConstructor +@RequiredArgsConstructor public class ShoppingCart { private long id; - private Customer customer; - private Book article; - private int count; + @NonNull private Customer customer; + @NonNull private Book article; + @NonNull private int count; } \ No newline at end of file diff --git a/src/main/java/de/hsel/itech/servlet/Database.java b/src/main/java/de/hsel/itech/servlet/DbTest.java similarity index 84% rename from src/main/java/de/hsel/itech/servlet/Database.java rename to src/main/java/de/hsel/itech/servlet/DbTest.java index a5c9a15..db86770 100644 --- a/src/main/java/de/hsel/itech/servlet/Database.java +++ b/src/main/java/de/hsel/itech/servlet/DbTest.java @@ -1,5 +1,7 @@ package de.hsel.itech.servlet; +import de.hsel.itech.db.Database; + import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -7,11 +9,13 @@ import java.io.IOException; import java.io.PrintWriter; /** + * Database test. + * * @author Johannes Theiner * @version 0.1 * @since 0.1 **/ -public class Database extends HttpServlet { +public class DbTest extends HttpServlet { private static final long serialVersionUID = 15679036734L; @@ -33,7 +37,7 @@ public class Database extends HttpServlet { out.println("Hallo Welt!"); out.println(""); out.println(""); - out.println("

" + de.hsel.itech.db.Database.getInstance().getHello() + "

"); + out.println("

" + Database.getInstance().getHello() + "

"); out.println(""); out.println(""); } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 4560e40..760482f 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -12,7 +12,7 @@ database - de.hsel.itech.servlet.Database + de.hsel.itech.servlet.DbTest