Skip to content
Snippets Groups Projects
Commit 6ca9cb39 authored by Gabriel Copat's avatar Gabriel Copat
Browse files

Added Badges Database

Added User Database
Loaded both into the UserController, displaying at the UserPage.
Added new database entries in data.sql
Deleted old user object, not in use.
parent 1442386c
No related branches found
No related tags found
1 merge request!26Resolve "As a client I want gamification of the badges, so that users remain engaged."
This commit is part of merge request !26. Comments created here will be created in the context of that merge request.
package Team5.SmartTowns.Data;
import Team5.SmartTowns.users.User;
import Team5.SmartTowns.users.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -9,20 +11,13 @@ import java.util.*;
@Controller
public class DatabaseController {
@Autowired
private UserRepository userRepository;
@Autowired
private locationRepository locationRepository;
@Autowired
private trailsRepository trailsRepository;
@GetMapping("/userList")
public ModelAndView userList() {
ModelAndView mav = new ModelAndView("towns/userData");
List<user> users = userRepository.getAllUsers();
mav.addObject("users", users);
return mav;
}
@GetMapping("/trailList")
public ModelAndView trailList() {
ModelAndView mav1 = new ModelAndView("towns/trailsData");
......
//Holds variable data for the users table
package Team5.SmartTowns.Data;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class user {
private int userId;
private String name;
}
//Holds locations data repository
package Team5.SmartTowns.rewards;
import java.util.List;
public interface BadgesRepository {
List<Badge> getAllBadges();
}
//Implements the locations repository using JDBC
package Team5.SmartTowns.rewards;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class BadgesRepositoryJDBC implements BadgesRepository {
private JdbcTemplate jdbc;
private RowMapper<Badge> badgeMapper;
public BadgesRepositoryJDBC(JdbcTemplate aJdbc) {
this.jdbc = aJdbc;
setBadgeMapper();
}
private void setBadgeMapper(){
badgeMapper = (rs, i) -> new Badge(
rs.getInt("badgeID"),
rs.getString("name"),
rs.getString("description"),
rs.getInt("difficulty")
);
}
@Override
public List<Badge> getAllBadges(){
String sql= "SELECT * FROM badges";
return jdbc.query(sql, badgeMapper);
}
}
package Team5.SmartTowns.users;
import Team5.SmartTowns.rewards.Badge;
import Team5.SmartTowns.rewards.BadgesRepository;
import Team5.SmartTowns.rewards.Sticker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -12,23 +15,13 @@ import java.util.List;
@Controller
public class UserController {
/* TEMPORARY USER LIST --- TODO REPLACE IT WITH DATABASE LIST*/
static List<User> users = List.of(
new User(1, "johndoe@gmail.com", "Claire Redfield"),
new User(2, "johndoe@gmail.com", "Albert Wesker"),
new User(3, "johndoe@gmail.com", "Leon Kennedy"),
new User(4, "johndoe@gmail.com", "Jill Valentine")
);
static List<Badge> badges = List.of(
new Badge(1, "Badge1", "Bage One is This", 1),
new Badge(2, "Badge1", "Bage One is This", 4),
new Badge(3, "Badge1", "Bage One is This", 4),
new Badge(4, "Badge1", "Bage One is This", 5),
new Badge(5, "Badge1", "Bage One is This", 5),
new Badge(46, "Badge1", "Bage One is This", 5),
new Badge(7, "Badge1", "Bage One is This", 2)
);
@Autowired
private UserRepository userRepository;
@Autowired
private BadgesRepository badgesRepository;
/*TODO REPLACE IT WITH DATABASE LIST*/
static List<Sticker> stickers = List.of(
new Sticker(1, "Sticker", "Sticker", 1),
new Sticker(2, "Sticker", "Sticker", 4),
......@@ -39,8 +32,18 @@ public class UserController {
new Sticker(7, "Sticker", "Sticker One is This", 2)
);
@GetMapping("/userList")
public ModelAndView userList() {
ModelAndView mav = new ModelAndView("towns/userData");
List<User> users = userRepository.getAllUsers();
mav.addObject("users", users);
return mav;
}
@GetMapping("/user/{id}")
public ModelAndView getUserPage(@PathVariable int id) {
List<Badge> badges = badgesRepository.getAllBadges();
List<User> users = userRepository.getAllUsers();
ModelAndView mav = new ModelAndView("rewards/userProfile");
users.stream()
.filter(user -> user.getId() == id)
......@@ -50,8 +53,4 @@ public class UserController {
mav.addObject("stickers", stickers);
return mav;
}
// @GetMapping("/userProfile")
// public ModelAndView getUserPage(ModelAndView mav) {
// return mav;
// }
}
//Holds users data repository
package Team5.SmartTowns.Data;
package Team5.SmartTowns.users;
import java.util.List;
public interface UserRepository {
List<user> getAllUsers();
List<User> getAllUsers();
}
//Implements the users repository using JDBC
package Team5.SmartTowns.Data;
package Team5.SmartTowns.users;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
......@@ -11,17 +11,18 @@ import java.util.List;
public class UserRepositoryJDBC implements UserRepository{
private JdbcTemplate jdbc;
private RowMapper<user> userMapper;
private RowMapper<User> userMapper;
public UserRepositoryJDBC(JdbcTemplate aJdbc){
this.jdbc = aJdbc;
setuserMapper();
setUserMapper();
}
private void setuserMapper(){
userMapper = (rs, i) -> new user(
private void setUserMapper(){
userMapper = (rs, i) -> new User(
rs.getInt("userID"),
rs.getString("email"),
rs.getString("name")
);
}
......@@ -29,7 +30,7 @@ public class UserRepositoryJDBC implements UserRepository{
@Override
public List<user> getAllUsers(){
public List<User> getAllUsers(){
String sql= "SELECT * FROM users";
return jdbc.query(sql, userMapper);
}
......
delete from users;
insert into users (userID, Name) value ('1', 'Hannah');
insert into users (userID, Name) value ('2', 'Nigel');
insert into users (userID, email, name) value ('1', 'hannah@gmail.com', 'Hannah');
insert into users (userID, email, name) value ('2', 'nigel@gmail.com', 'Nigel');
delete from trails;
insert into trails (trailID, Name) value ('1', 'Caerphilly Coffee Trail');
......@@ -8,4 +8,11 @@ insert into trails (trailID, Name) value ('2', 'Penarth Dragon Trail');
delete from locations;
insert into locations (locationID, Name) value ('1', 'Caerphilly');
insert into locations (locationID, Name) value ('2', 'Penarth');
\ No newline at end of file
insert into locations (locationID, Name) value ('2', 'Penarth');
delete from badges;
insert into badges (badgeID, name, description, difficulty) value ('1', 'TownConnoisseur', 'You know the town very well!', '2');
insert into badges (badgeID, name, description, difficulty) value ('2', 'TownRegular', 'You visited the town 3 days in a row!', '1');
insert into badges (badgeID, name, description, difficulty) value ('3', 'TownMaster', 'You visited the town 7 days in a row!', '1');
insert into badges (badgeID, name, description, difficulty) value ('4', 'TownRegular', 'You visited the town 3 days in a row!', '1');
insert into badges (badgeID, name, description, difficulty) value ('5', 'TownRegular', 'You visited the town 3 days in a row!', '1');
\ No newline at end of file
......@@ -14,5 +14,14 @@ drop table if exists users;
create table if not exists users
(
userID bigint auto_increment primary key,
email varchar(128),
name varchar(128)
) engine=InnoDB;
drop table if exists badges;
create table if not exists badges
(
badgeID bigint auto_increment primary key,
name varchar(128),
description varchar(128),
difficulty bigint
) engine=InnoDB;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment