Skip to content
Snippets Groups Projects
Commit c5f0d8ca authored by Maiken Louise's avatar Maiken Louise
Browse files

Fixing groupchat

parent bb0ebea7
No related branches found
No related tags found
No related merge requests found
Pipeline #115406 passed with stages
in 14 seconds
package dao;
import data.GroupChat;
import data.Message;
import data.User;
import java.sql.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.TimeZone;
import static dao.Database.close;
/**
* Data access object for GroupChat
*/
public class GroupChatDAO {
/**
* Add a new GroupChat
* @param groupChat GroupChat to be added
* @return GroupChat, empty GroupChat object if unsuccessful
*/
public GroupChat addGroupChat(GroupChat groupChat){
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("INSERT INTO groupChat (groupChatName) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, groupChat.getGroupChatName());
int result = preparedStatement.executeUpdate();
if(result == 1){
resultSet = preparedStatement.getGeneratedKeys();
if(resultSet.next()){
int groupChatId = resultSet.getInt(1);
groupChat.setGroupChatId(groupChatId);
ArrayList<User> users = groupChat.getUserList();
preparedStatement = connection.prepareStatement("INSERT INTO user_groupChat (userId, groupChatId) VALUES (?, ?) ");
for(User user:users){
preparedStatement.setInt(1, user.getUserId());
preparedStatement.setInt(2, groupChatId);
preparedStatement.executeUpdate();
}
return groupChat;
}
}
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return new GroupChat();
}
/**
* Get a GroupChat, with given groupChatId
* @param groupChatId groupChatId as int
* @return requested GroupChat if found, empty GroupChat object if not found
*/
public GroupChat getGroupChat(int groupChatId){
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
GroupChat groupChat = new GroupChat();
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId = ?");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
groupChat.setGroupChatId(groupChatId);
groupChat.setGroupChatName(resultSet.getString("groupChatName"));
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return groupChat;
}
/**
* Get all GroupChats for user with given userId
* @param userId int userId of the user
* @return ArrayList of GroupChats
*/
public ArrayList<GroupChat> getGroupChatByUserId(int userId){
ArrayList<GroupChat> groupChats = new ArrayList<>();
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId IN (SELECT groupChatId FROM user_groupChat WHERE userId = ?)");
preparedStatement.setInt(1, userId);
resultSet = preparedStatement.executeQuery();
GroupChat groupChat;
while(resultSet.next()){
groupChat = new GroupChat();
groupChat.setGroupChatId(resultSet.getInt("groupChatId"));
groupChat.setGroupChatName(resultSet.getString("groupChatName"));
groupChats.add(groupChat);
}
return groupChats;
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return groupChats;
}
/**
* Get all messages for a GroupChat
* @param groupChatId groupChatId as int
* @return ArrayList of Messages
*/
public ArrayList<Message> getGroupChatMessages(int groupChatId){
ArrayList<Message> messages = new ArrayList<>();
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM message WHERE groupChatId = ?");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
Message message;
while(resultSet.next()){
message = new Message();
message.setMessageId(resultSet.getInt("messageId"));
message.setUserId1(resultSet.getInt("userId1"));
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
message.setTimestamp(resultSet.getTimestamp("timestamp",cal));
message.setMessageContent(resultSet.getString("messageContent"));
message.setGroupChatId(resultSet.getInt("groupChatId"));
messages.add(message);
}
}catch (SQLException e){
e.printStackTrace();
}finally {
close(connection, preparedStatement, resultSet);
}
return messages;
}
/**
* Adds a Message to a GroupChat
* @param groupChatId groupChatId as int
* @param message Message object to be added to GroupChat
* @return The message that was added
*/
public Message addMessage(int groupChatId, Message message){
PreparedStatement preparedStatement = null;
Connection connection = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("INSERT INTO message (userId1, timestamp, messageContent, groupChatId) VALUES (?, NOW(), ?, ?)");
preparedStatement.setInt(1, message.getUserId1());
preparedStatement.setString(2, message.getMessageContent());
preparedStatement.setInt(3, groupChatId);
preparedStatement.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, null);
}
return message;
}
/**
* Get all users in a GroupChat
* @param groupChatId groupChatId as int
* @return ArrayList of Users the GroupChat
*/
public ArrayList<User> getGroupChatUsers(int groupChatId){
ArrayList<User> users = new ArrayList<>();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Connection connection = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM user WHERE user.userId IN (SELECT userId FROM user_groupChat WHERE groupChatId = ?)");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
User user;
while(resultSet.next()){
user = new User();
user.setUserId(resultSet.getInt("userId"));
user.setUsername(resultSet.getString("username"));
users.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return users;
}
}
......@@ -107,6 +107,16 @@
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.test-framework</groupId>
<artifactId>jersey-test-framework-core</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<jersey.version>2.26</jersey.version>
......
package dao;
import data.GroupChat;
import data.Message;
import data.User;
import java.sql.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.TimeZone;
import static dao.Database.close;
/**
* Data access object for GroupChat
*/
public class GroupChatDAO {
//Made so that the rest of the application runs without group chats implemented.
/**
* Add a new GroupChat
* @param groupChat GroupChat to be added
* @return GroupChat, empty GroupChat object if unsuccessful
*/
public GroupChat addGroupChat(GroupChat groupChat){
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("INSERT INTO groupChat (groupChatName) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, groupChat.getGroupChatName());
int result = preparedStatement.executeUpdate();
if(result == 1){
resultSet = preparedStatement.getGeneratedKeys();
if(resultSet.next()){
int groupChatId = resultSet.getInt(1);
groupChat.setGroupChatId(groupChatId);
ArrayList<User> users = groupChat.getUserList();
preparedStatement = connection.prepareStatement("INSERT INTO user_groupChat (userId, groupChatId) VALUES (?, ?) ");
for(User user:users){
preparedStatement.setInt(1, user.getUserId());
preparedStatement.setInt(2, groupChatId);
preparedStatement.executeUpdate();
}
return groupChat;
}
}
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return new GroupChat();
}
/**
* Get a GroupChat, with given groupChatId
* @param groupChatId groupChatId as int
* @return requested GroupChat if found, empty GroupChat object if not found
*/
public GroupChat getGroupChat(int groupChatId){
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
GroupChat groupChat = new GroupChat();
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId = ?");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
groupChat.setGroupChatId(groupChatId);
groupChat.setGroupChatName(resultSet.getString("groupChatName"));
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return groupChat;
}
/**
* Get all GroupChats for user with given userId
* @param userId int userId of the user
* @return ArrayList of GroupChats
*/
public ArrayList<GroupChat> getGroupChatByUserId(int userId){
ArrayList<GroupChat> groupChats = new ArrayList<>();
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId IN (SELECT groupChatId FROM user_groupChat WHERE userId = ?)");
preparedStatement.setInt(1, userId);
resultSet = preparedStatement.executeQuery();
GroupChat groupChat;
while(resultSet.next()){
groupChat = new GroupChat();
groupChat.setGroupChatId(resultSet.getInt("groupChatId"));
groupChat.setGroupChatName(resultSet.getString("groupChatName"));
groupChats.add(groupChat);
}
return groupChats;
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return groupChats;
}
/**
* Get all messages for a GroupChat
* @param groupChatId groupChatId as int
* @return ArrayList of Messages
*/
public ArrayList<Message> getGroupChatMessages(int groupChatId){
ArrayList<Message> messages = new ArrayList<>();
PreparedStatement preparedStatement = null;
Connection connection = null;
ResultSet resultSet = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM message WHERE groupChatId = ?");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
Message message;
while(resultSet.next()){
message = new Message();
message.setMessageId(resultSet.getInt("messageId"));
message.setUserId1(resultSet.getInt("userId1"));
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
message.setTimestamp(resultSet.getTimestamp("timestamp",cal));
message.setMessageContent(resultSet.getString("messageContent"));
message.setGroupChatId(resultSet.getInt("groupChatId"));
messages.add(message);
}
}catch (SQLException e){
e.printStackTrace();
}finally {
close(connection, preparedStatement, resultSet);
}
return messages;
}
/**
* Adds a Message to a GroupChat
* @param groupChatId groupChatId as int
* @param message Message object to be added to GroupChat
* @return The message that was added
*/
public Message addMessage(int groupChatId, Message message){
PreparedStatement preparedStatement = null;
Connection connection = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("INSERT INTO message (userId1, timestamp, messageContent, groupChatId) VALUES (?, NOW(), ?, ?)");
preparedStatement.setInt(1, message.getUserId1());
preparedStatement.setString(2, message.getMessageContent());
preparedStatement.setInt(3, groupChatId);
preparedStatement.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, null);
}
return message;
}
/**
* Get all users in a GroupChat
* @param groupChatId groupChatId as int
* @return ArrayList of Users the GroupChat
*/
public ArrayList<User> getGroupChatUsers(int groupChatId){
return null;
ArrayList<User> users = new ArrayList<>();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Connection connection = null;
try{
connection = Database.instance().getConnection();
preparedStatement = connection.prepareStatement("SELECT * FROM user WHERE user.userId IN (SELECT userId FROM user_groupChat WHERE groupChatId = ?)");
preparedStatement.setInt(1, groupChatId);
resultSet = preparedStatement.executeQuery();
User user;
while(resultSet.next()){
user = new User();
user.setUserId(resultSet.getInt("userId"));
user.setUsername(resultSet.getString("username"));
users.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close(connection, preparedStatement, resultSet);
}
return users;
}
}
package data;
import java.util.ArrayList;
/**
* Class for the GroupChat object as saved in database
*/
public class GroupChat {}
public class GroupChat {
private int groupChatID;
private String groupChatName;
private ArrayList<Message> messageList = new ArrayList<>();
private ArrayList<User> userList = new ArrayList<>();
public GroupChat(){}
public GroupChat(int ID,String name){
this.groupChatID=ID;
this.groupChatName=name;
}
public int getGroupChatID() {
return groupChatID;
}
public String getGroupChatName() {
return groupChatName;
}
public ArrayList<Message> getMessageList() {
return messageList;
}
public ArrayList<User> getUserList() {
return userList;
}
public void setGroupChatName(String groupChatName) {
this.groupChatName = groupChatName;
}
public void setMessageList(ArrayList<Message> messageList) {
this.messageList=messageList;
}
public void setUserList(ArrayList<User> userList) {
this.userList = userList;
}
public void setGroupChatId(int groupChatId) {
this.groupChatID=groupChatId;
}
}
package resources;
import dao.GroupChatDAO;
import data.GroupChat;
import data.Message;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
/**
* GroupChat resource exposed at "/groupchat" path
......@@ -20,7 +23,16 @@ public class GroupChatResource {
@Path ("{groupChatId}")
@Produces (MediaType.APPLICATION_JSON)
public GroupChat getGroupChat(@PathParam("groupChatId") int groupChatId){
return null;
GroupChatDAO groupChatDAO=new GroupChatDAO();
GroupChat groupChat = groupChatDAO.getGroupChat(groupChatId);
groupChat.setMessageList(groupChatDAO.getGroupChatMessages(groupChatId));
groupChat.setUserList(groupChatDAO.getGroupChatUsers(groupChatId));
return groupChat;
}
public void postMessage(int groupChatID, String groupChatMessage){
}
}
File moved
import data.GroupChat;
import data.Message;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.TestProperties;
import org.junit.Test;
......
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