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."
package Team5.SmartTowns.Data; package Team5.SmartTowns.Data;
import Team5.SmartTowns.users.User;
import Team5.SmartTowns.users.UserRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -9,20 +11,13 @@ import java.util.*; ...@@ -9,20 +11,13 @@ import java.util.*;
@Controller @Controller
public class DatabaseController { public class DatabaseController {
@Autowired
private UserRepository userRepository;
@Autowired @Autowired
private locationRepository locationRepository; private locationRepository locationRepository;
@Autowired @Autowired
private trailsRepository trailsRepository; 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") @GetMapping("/trailList")
public ModelAndView trailList() { public ModelAndView trailList() {
ModelAndView mav1 = new ModelAndView("towns/trailsData"); 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; package Team5.SmartTowns.users;
import Team5.SmartTowns.rewards.Badge; import Team5.SmartTowns.rewards.Badge;
import Team5.SmartTowns.rewards.BadgesRepository;
import Team5.SmartTowns.rewards.Sticker; import Team5.SmartTowns.rewards.Sticker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
...@@ -12,23 +15,13 @@ import java.util.List; ...@@ -12,23 +15,13 @@ import java.util.List;
@Controller @Controller
public class UserController { public class UserController {
/* TEMPORARY USER LIST --- TODO REPLACE IT WITH DATABASE LIST*/ @Autowired
static List<User> users = List.of( private UserRepository userRepository;
new User(1, "johndoe@gmail.com", "Claire Redfield"), @Autowired
new User(2, "johndoe@gmail.com", "Albert Wesker"), private BadgesRepository badgesRepository;
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)
);
/*TODO REPLACE IT WITH DATABASE LIST*/
static List<Sticker> stickers = List.of( static List<Sticker> stickers = List.of(
new Sticker(1, "Sticker", "Sticker", 1), new Sticker(1, "Sticker", "Sticker", 1),
new Sticker(2, "Sticker", "Sticker", 4), new Sticker(2, "Sticker", "Sticker", 4),
...@@ -39,8 +32,18 @@ public class UserController { ...@@ -39,8 +32,18 @@ public class UserController {
new Sticker(7, "Sticker", "Sticker One is This", 2) 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}") @GetMapping("/user/{id}")
public ModelAndView getUserPage(@PathVariable int id) { public ModelAndView getUserPage(@PathVariable int id) {
List<Badge> badges = badgesRepository.getAllBadges();
List<User> users = userRepository.getAllUsers();
ModelAndView mav = new ModelAndView("rewards/userProfile"); ModelAndView mav = new ModelAndView("rewards/userProfile");
users.stream() users.stream()
.filter(user -> user.getId() == id) .filter(user -> user.getId() == id)
...@@ -50,8 +53,4 @@ public class UserController { ...@@ -50,8 +53,4 @@ public class UserController {
mav.addObject("stickers", stickers); mav.addObject("stickers", stickers);
return mav; return mav;
} }
// @GetMapping("/userProfile")
// public ModelAndView getUserPage(ModelAndView mav) {
// return mav;
// }
} }
//Holds users data repository //Holds users data repository
package Team5.SmartTowns.Data; package Team5.SmartTowns.users;
import java.util.List; import java.util.List;
public interface UserRepository { public interface UserRepository {
List<user> getAllUsers(); List<User> getAllUsers();
} }
//Implements the users repository using JDBC //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.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.RowMapper;
...@@ -11,17 +11,18 @@ import java.util.List; ...@@ -11,17 +11,18 @@ import java.util.List;
public class UserRepositoryJDBC implements UserRepository{ public class UserRepositoryJDBC implements UserRepository{
private JdbcTemplate jdbc; private JdbcTemplate jdbc;
private RowMapper<user> userMapper; private RowMapper<User> userMapper;
public UserRepositoryJDBC(JdbcTemplate aJdbc){ public UserRepositoryJDBC(JdbcTemplate aJdbc){
this.jdbc = aJdbc; this.jdbc = aJdbc;
setuserMapper(); setUserMapper();
} }
private void setuserMapper(){ private void setUserMapper(){
userMapper = (rs, i) -> new user( userMapper = (rs, i) -> new User(
rs.getInt("userID"), rs.getInt("userID"),
rs.getString("email"),
rs.getString("name") rs.getString("name")
); );
} }
...@@ -29,7 +30,7 @@ public class UserRepositoryJDBC implements UserRepository{ ...@@ -29,7 +30,7 @@ public class UserRepositoryJDBC implements UserRepository{
@Override @Override
public List<user> getAllUsers(){ public List<User> getAllUsers(){
String sql= "SELECT * FROM users"; String sql= "SELECT * FROM users";
return jdbc.query(sql, userMapper); return jdbc.query(sql, userMapper);
} }
......
delete from users; delete from users;
insert into users (userID, Name) value ('1', 'Hannah'); insert into users (userID, email, name) value ('1', 'hannah@gmail.com', 'Hannah');
insert into users (userID, Name) value ('2', 'Nigel'); insert into users (userID, email, name) value ('2', 'nigel@gmail.com', 'Nigel');
delete from trails; delete from trails;
insert into trails (trailID, Name) value ('1', 'Caerphilly Coffee Trail'); insert into trails (trailID, Name) value ('1', 'Caerphilly Coffee Trail');
...@@ -8,4 +8,11 @@ insert into trails (trailID, Name) value ('2', 'Penarth Dragon Trail'); ...@@ -8,4 +8,11 @@ insert into trails (trailID, Name) value ('2', 'Penarth Dragon Trail');
delete from locations; delete from locations;
insert into locations (locationID, Name) value ('1', 'Caerphilly'); insert into locations (locationID, Name) value ('1', 'Caerphilly');
insert into locations (locationID, Name) value ('2', 'Penarth'); insert into locations (locationID, Name) value ('2', 'Penarth');
\ No newline at end of file
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; ...@@ -14,5 +14,14 @@ drop table if exists users;
create table if not exists users create table if not exists users
( (
userID bigint auto_increment primary key, userID bigint auto_increment primary key,
email varchar(128),
name 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; ) engine=InnoDB;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment