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("