//Implements the users repository using JDBC package Team5.SmartTowns.users; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Repository public class UserRepositoryJDBC implements UserRepository{ private JdbcTemplate jdbc; private RowMapper<User> userMapper; public UserRepositoryJDBC(JdbcTemplate aJdbc){ this.jdbc = aJdbc; setUserMapper(); } private void setUserMapper(){ userMapper = (rs, i) -> new User( rs.getInt("userID"), rs.getString("email"), rs.getString("name"), rs.getInt("dragonProgress") ); } @Override public List<User> getAllUsers(){ String sql= "SELECT * FROM users"; return jdbc.query(sql, userMapper); } @Override public User getUser(int id){ String sql= "SELECT * FROM users WHERE userID="+id; List<User> result = jdbc.query(sql, userMapper); return result.get(0); } @Override public Map<Long, Boolean> getStickers(int id){ String sql = "SELECT stickerID, hasSticker FROM stickerprogress WHERE userID=" + id; List<Map<String, Object>> query = jdbc.queryForList(sql); Map<Long, Boolean> progress = new HashMap<>(); for (Map<String, Object> result : query) { progress.put((Long)result.get("stickerID"), (boolean)result.get("hasSticker")); } return progress; } // @Override // public Map<Long, Integer> getBadgeProgress(int id){ // String sql = "SELECT badgeID, progress FROM badgeprogress WHERE userID=" + id; // List<Map<String, Object>> query = jdbc.queryForList(sql); // Map<Long, Integer> progress = new HashMap<>(); // for (Map<String, Object> result : query) { // progress.put((Long)result.get("badgeID"), (int)result.get("progress")); // } // return progress; // } }