Skip to content

Commit

Permalink
Merge pull request #34 from Callhub-Connect/add-message-to-session
Browse files Browse the repository at this point in the history
Refactored add message to session for clean architecture
  • Loading branch information
zjayee authored Nov 30, 2023
2 parents 4e24aae + 566b051 commit c8fa527
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 67 deletions.
9 changes: 0 additions & 9 deletions src/main/java/callhub/connect/CallhubconnectApplication.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package callhub.connect;

import callhub.connect.data_access.MessageDataAccess;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
Expand Down Expand Up @@ -42,9 +38,4 @@ public void addCorsMappings(CorsRegistry registry) {
};
}

@Bean
public MessageDataAccess messageDataAccess(ApplicationContext context) {
return new MessageDataAccess(context);
}

}
12 changes: 0 additions & 12 deletions src/main/java/callhub/connect/controllers/ApiController.java

This file was deleted.

38 changes: 0 additions & 38 deletions src/main/java/callhub/connect/data_access/MessageDataAccess.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package callhub.connect.data_access;

import callhub.connect.entities.Message;
import callhub.connect.entities.Sender;
import callhub.connect.entities.Session;
import callhub.connect.use_case.message.MessageDataAccessInterface;
import callhub.connect.use_case.session.SessionDataAccessInterface;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

Expand All @@ -14,10 +18,13 @@ public class MessageDataAccessObject implements MessageDataAccessInterface {

@Autowired
private final MessageRepository messageRepository;
@Autowired
private final SessionDataAccessInterface sessionDataAccessInterface;
final static DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss a", Locale.CANADA);

public MessageDataAccessObject(MessageRepository messageRepository) {
public MessageDataAccessObject(MessageRepository messageRepository, SessionDataAccessInterface sessionDataAccessInterface) {
this.messageRepository = messageRepository;
this.sessionDataAccessInterface = sessionDataAccessInterface;
}

public HashMap<String, String> generateResponse(String message){
Expand All @@ -29,4 +36,16 @@ public HashMap<String, String> generateResponse(String message){

return response;
}

public void sendResponseToDatabase(String content, String sessionId, Sender sender) {
Message message = new Message(content, sessionId, sender);
Message result = messageRepository.save(message);
// add message to session
try{
sessionDataAccessInterface.addMessageToSession(sessionId, result);
}catch (Exception e){
System.out.println(e.getMessage());
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,4 @@

import java.util.List;
public interface MessageRepository extends MongoRepository<Message, String>{

@Query("{userId: '?0'}")
public List<Message> findByUserId(String userId);

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package callhub.connect.data_access;

import callhub.connect.entities.Message;
import callhub.connect.entities.Session;
import callhub.connect.use_case.session.SessionDataAccessInterface;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -33,6 +34,19 @@ public HashMap<String, String> joinSession(String code) {

return responseBody;
}

/**
* Adds message to the session with sessionId in the database.
*
* @param sessionId session id
* @param message message to be added
*/
public void addMessageToSession(String sessionId, Message message){
Session currentSession = sessionRepository.findById(sessionId).orElseThrow();
currentSession.addMessage(message);
sessionRepository.save(currentSession);
}

private String generateSessionCode(){
final String ALLOWED_CHAR = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
SecureRandom random = new SecureRandom();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package callhub.connect.interface_adapter.message;

import callhub.connect.entities.Sender;
import callhub.connect.use_case.message.MessageInputBoundary;
import callhub.connect.use_case.message.MessageInputData;
import callhub.connect.use_case.message.MessageInteractor;
Expand All @@ -22,15 +23,15 @@ public class MessageController {
@MessageMapping("/message-customer/{sessionId}")
@SendTo("/topic/message-employee/{sessionId}")
public String sendMessageCustomer(@DestinationVariable String sessionId, String message) throws Exception {
MessageInputData inputData = new MessageInputData(sessionId, message);
MessageInputData inputData = new MessageInputData(sessionId, message, Sender.CUSTOMER);
HashMap<String, String> response = messageInteractor.newMessage(inputData);
return gson.toJson(response);
}

@MessageMapping("/message-employee/{sessionId}")
@SendTo("/topic/message-customer/{sessionId}")
public String sendMessageEmployee(@DestinationVariable String sessionId, String message) throws Exception {
MessageInputData inputData = new MessageInputData(sessionId, message);
MessageInputData inputData = new MessageInputData(sessionId, message, Sender.EMPLOYEE);
HashMap<String, String> response = messageInteractor.newMessage(inputData);
return gson.toJson(response);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
package callhub.connect.use_case.message;

import callhub.connect.entities.Sender;

import java.util.HashMap;

public interface MessageDataAccessInterface {
public HashMap<String, String> generateResponse(String message);

/**
* Saves message to database, and adds message to its corresponding session
* @param content message content
* @param sessionId id for the message's session
* @param sender CUSTOMER or EMPLOYEE
*/
public void sendResponseToDatabase(String content, String sessionId, Sender sender);
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,30 @@
package callhub.connect.use_case.message;

import callhub.connect.entities.Sender;

public class MessageInputData {
private final String message;
private final String sessionId;

public MessageInputData(String sessionId, String message) {
private final Sender sender;

public MessageInputData(String sessionId, String message, Sender sender) {
this.sessionId = sessionId;
this.message = message;
this.sender = sender;
}

public String getMessage() {
return this.message;
}


public String getSessionId() {
return sessionId;
}

public Sender getSender() {
return sender;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public MessageInteractor(MessageDataAccessInterface messageDataAccessObject, Mes
@Override
public HashMap<String, String> newMessage(MessageInputData inputData) {
HashMap<String, String> response = messageDataAccessObject.generateResponse(inputData.getMessage());
messageDataAccessObject.sendResponseToDatabase(inputData.getMessage(), inputData.getSessionId(), inputData.getSender());
MessageOutputData outputData = new MessageOutputData(response);
return outputData.getResponseBody();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
package callhub.connect.use_case.session;

import callhub.connect.entities.Message;
import org.springframework.http.ResponseEntity;

import java.util.HashMap;

public interface SessionDataAccessInterface {
public HashMap<String, String> generateNewSession();
public HashMap<String, String> joinSession(String code);

/**
* Adds message to session with sessionId
* @param sessionId id for session to add message to
* @param message message to be added
*/
public void addMessageToSession(String sessionId, Message message);
}

0 comments on commit c8fa527

Please sign in to comment.