Skip to content
Snippets Groups Projects
Commit c47b0848 authored by heinerlo's avatar heinerlo
Browse files

Update OGroupChatDAO.java

parent 3260aacd
No related branches found
No related tags found
No related merge requests found
Pipeline #159097 passed
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;
}
}
package dao;
import data.User;
import java.util.ArrayList;
public class GroupChatDAO {
//Made so that the rest of the application runs without group chats implemented.
public ArrayList<User> getGroupChatUsers(int groupChatId){
return null;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment