Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions my-app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,7 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter-api:5.0.0-M4" level="project" />
<orderEntry type="library" name="Maven: org.opentest4j:opentest4j:1.0.0-M2" level="project" />
<orderEntry type="library" name="Maven: org.junit.platform:junit-platform-commons:1.0.0-M4" level="project" />
<orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter-api:5.0.0-M4" level="project" />
<orderEntry type="library" name="Maven: org.opentest4j:opentest4j:1.0.0-M2" level="project" />
<orderEntry type="library" name="Maven: org.junit.platform:junit-platform-commons:1.0.0-M4" level="project" />
<orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter-params:5.0.0-M4" level="project" />
<orderEntry type="library" name="Maven: org.postgresql:postgresql:42.0.0" level="project" />
<orderEntry type="library" name="Maven: com.sparkjava:spark-core:2.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.13" level="project" />
Expand Down
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@

<!-- library dependencies -->
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.0.0-M4</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
Expand Down
19 changes: 8 additions & 11 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
public class Main {



public static void main(String[] args) {

TemplateEngine templateEngine = new ThymeleafTemplateEngine();
Expand All @@ -32,36 +31,34 @@ public static void main(String[] args) {
port(8888);

// populate some data for the memory storage

//populateData();


// Always add generic routes to the end
get("/", productController::renderProducts, templateEngine);
// Equivalent with above

get("/index", (Request req, Response res) ->
productController.renderProducts(req, res), templateEngine);
productController.renderProducts(req, res), templateEngine);

get("/cartview", (Request req, Response res) ->
templateEngine.render(cartController.renderCart(req, res))
templateEngine.render(cartController.renderCart(req, res))
);

get("/category/:id", (Request req, Response res) ->
templateEngine.render(productController.renderProductsbyCategory(req, res))
templateEngine.render(productController.renderProductsbyCategory(req, res))
);

get("/supplier/:id", (Request req, Response res) ->
templateEngine.render(productController.renderProductsbySupplier(req, res))
templateEngine.render(productController.renderProductsbySupplier(req, res))
);

get("/addtocart/:id", (Request req, Response res) ->
cartController.addItemToCart(req, res)
cartController.addItemToCart(req, res)

);

get("/login", (Request req, Response res) ->
templateEngine.render(loginController.renderLogin(req, res))
templateEngine.render(loginController.renderLogin(req, res))
);


Expand All @@ -74,7 +71,7 @@ public static void main(String[] args) {
// Add this line to your project to enable the debug screen
enableDebugScreen();
}

}

// private static void populateData() {
// ProductDao productDataStore = new ProductDaoJdbc();
Expand Down Expand Up @@ -120,4 +117,4 @@ public static void main(String[] args) {
// User admin2 = new User("admin2", "admin2", 1);
// userDataStore.add(admin2);
//
}

1 change: 1 addition & 0 deletions src/main/java/com/codecool/shop/dao/UserDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public interface UserDao {

void add(User user);
User find(int id);
User find(String name);
void remove(int id);

List<User> getAll();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void add(User user) {
DATA.add(user);
}


@Override
public User find(String name) {
return DATA.stream().filter(t -> t.getName().equals(name)).findFirst().orElse(null);
}
Expand Down
36 changes: 24 additions & 12 deletions src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public static UserDaoJdbc getInstance() {
public void add(User user) {
//get the highest ID in the user DB.
//propably not needed as the primary key is incrementing itself.
/*
String query = "SELECT id FROM users ORDER BY id DESC LIMIT 1";

try (Connection conn = connection.getConnection();
Expand All @@ -45,17 +46,23 @@ public void add(User user) {
} catch (IOException e) {
e.printStackTrace();
}

*/
//insert the new user into the DB.

final String INSERT_QUERY = "INSERT INTO users (name, password, rank) VALUES (?,?,?);";

String[] columnsToReturn = {"id"};
try {
PreparedStatement pstmt = connection.getConnection().prepareStatement(INSERT_QUERY);
PreparedStatement pstmt = connection.getConnection().prepareStatement(INSERT_QUERY, columnsToReturn);
pstmt.setString(1, user.getName());
pstmt.setString(2, user.getPassword());
pstmt.setInt(3, user.getRank());
pstmt.executeUpdate();

// to get id of created row
ResultSet generatedKeys = pstmt.getGeneratedKeys();
generatedKeys.next();
user.setId(generatedKeys.getInt("id"));

} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
Expand All @@ -75,6 +82,7 @@ public User find(int id) {
User result = new User(resultSet.getString("name"),
resultSet.getString("password"),
resultSet.getInt("rank"));
result.setId(id);
return result;
} else {
return null;
Expand All @@ -88,6 +96,7 @@ public User find(int id) {
return null;
}

@Override
public User find(String name) {
String query = "SELECT * FROM users WHERE name ='" + name + "';";
try (Connection conn = connection.getConnection();
Expand Down Expand Up @@ -146,18 +155,21 @@ public List<User> getAll() {
try (Connection conn = connection.getConnection();
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.first()){
resultSet.beforeFirst();
// if (resultSet.first()){
// resultSet.beforeFirst();
List<User> result = new ArrayList<>();
while (resultSet.next()){
result.add(new User(resultSet.getString("name"),
while (resultSet.next()) {
User tempuser = new User(resultSet.getString("name"),
resultSet.getString("password"),
resultSet.getInt("rank")));
return result;
resultSet.getInt("rank"));
tempuser.setId(resultSet.getInt("id"));
result.add(tempuser);
}
} else {
return null;
}
return result;

// } else {
// return null;
// }

} catch (SQLException e) {
e.printStackTrace();
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/connection.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
localhost:5432
codecoolshop
kroki
Loler01+
73 changes: 73 additions & 0 deletions test/com/codecool/shop/dao/UserDaoTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.codecool.shop.dao;

import com.codecool.shop.dao.implementation.UserDaoMem;
import com.codecool.shop.dao.jdbc.UserDaoJdbc;
import com.codecool.shop.model.ProductCategory;
import com.codecool.shop.model.User;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ObjectArrayArguments;
import org.junit.jupiter.params.provider.ValueSource;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

import static org.junit.jupiter.api.Assertions.*;

class UserDaoTest {


static Stream<Arguments> arguments(){
return Stream.of(
ObjectArrayArguments.create(UserDaoJdbc.getInstance()),
ObjectArrayArguments.create(UserDaoMem.getInstance())
);
}

@ParameterizedTest
@MethodSource(names = { "arguments" })
void testAddNewUser(UserDao userDataStore){
User admin = new User("admin", "admin", 1);
admin.setId(1);
userDataStore.add(admin);
int tempsize = userDataStore.getAll().size();
assertEquals(admin.toString(), userDataStore.getAll().get(tempsize-1).toString());
}


@ParameterizedTest
@MethodSource(names = { "arguments" })
public void testFindUserById(UserDao userDataStore){
User user = new User("admin", "admin", 1);
user.setId(1);
assertEquals(user.toString(), userDataStore.find(1).toString());
}

@ParameterizedTest
@MethodSource(names = { "arguments" })
public void testFindUserByName(UserDao userDataStore){
User user = new User("user", "user", 2);
user.setId(2);
assertEquals(user.toString(), userDataStore.find("user").toString());
}

@ParameterizedTest
@MethodSource(names = { "arguments" })
public void testRemoveUser(UserDao userDataStore){
int firstsize = userDataStore.getAll().size();
userDataStore.remove(firstsize - 1);
int secondsize = userDataStore.getAll().size();
assertEquals(1, firstsize - secondsize);
}

@ParameterizedTest
@MethodSource(names = { "arguments" })
public void testGetAllUser(UserDao userDataStore){
List<ProductCategory> user = new ArrayList<>();
assertEquals(user, userDataStore.getAll());
}
}