You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.6 KiB
96 lines
3.6 KiB
package org.ros.chatto.service;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
import javax.transaction.Transactional;
|
|
|
|
import org.ros.chatto.dto.ChatMessageDTO;
|
|
import org.ros.chatto.dto.MessageCipherDTO;
|
|
import org.ros.chatto.dto.ReencryptionDTO;
|
|
import org.ros.chatto.model.ChatMessage;
|
|
import org.ros.chatto.model.ChatUser;
|
|
import org.ros.chatto.model.MessageCipher;
|
|
import org.ros.chatto.repository.ChatMessageRepository;
|
|
import org.ros.chatto.repository.MessageCipherRepository;
|
|
import org.ros.chatto.repository.UserRepository;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@Service
|
|
public class ChatServiceImpl implements ChatService {
|
|
|
|
// @Autowired
|
|
// UserService userService;
|
|
@Autowired
|
|
UserRepository userRepository;
|
|
@Autowired
|
|
MessageCipherRepository messageCipherRepository;
|
|
@Autowired
|
|
ChatMessageRepository chatMessageRepository;
|
|
@Autowired
|
|
MyConversionService myConversionService;
|
|
|
|
public void saveNewMessage(String fromUserName, String toUserName, MessageCipherDTO messageCipherDTO) {
|
|
|
|
MessageCipher messageCipher = myConversionService.convertToMessageCipher(messageCipherDTO);
|
|
ChatUser fromUser = userRepository.findByUserName(fromUserName);
|
|
ChatUser toUser = userRepository.findByUserName(toUserName);
|
|
ChatMessage chatMessage = new ChatMessage();
|
|
messageCipher = messageCipherRepository.save(messageCipher);
|
|
chatMessage.setMessageCipher(messageCipher);
|
|
chatMessage.setFromUser(fromUser);
|
|
chatMessage.setToUser(toUser);
|
|
|
|
chatMessageRepository.save(chatMessage);
|
|
|
|
}
|
|
|
|
@Override
|
|
public List<ChatMessageDTO> getAllMessages(String fromUser, String toUser) {
|
|
List<ChatMessage> chatMessages = chatMessageRepository.getAllMessages(fromUser, toUser);
|
|
List<ChatMessageDTO> chatMessageDTOs = myConversionService.convertToChatMessageDTOs(chatMessages);
|
|
return chatMessageDTOs;
|
|
}
|
|
|
|
@Override
|
|
public List<ReencryptionDTO> getAllMessagesForReencryption(String fromUser, String toUser) {
|
|
return myConversionService.convertToReencryptionDTOs(chatMessageRepository.getAllMessages(fromUser, toUser));
|
|
}
|
|
|
|
@Override
|
|
public List<ChatMessageDTO> getMessagePage(String fromUser, String toUser, int page, int size) {
|
|
// Sort sort = Sort
|
|
// Page<ChatMessage> chatMessages = chatMessageRepository.getAllMessages(fromUser, toUser,PageRequest.of(page, size));
|
|
// List<ChatMessageDTO> chatMessageDTOs = myConversionService.convertToChatMessageDTOs(chatMessages);
|
|
// return chatMessageDTOs;
|
|
return myConversionService.convertToChatMessageDTOs(chatMessageRepository.getAllMessages(fromUser, toUser,PageRequest.of(page, size)));
|
|
}
|
|
|
|
@Override
|
|
public List<ChatMessageDTO> getNewMessages(String fromUser, String toUser, Date lastMessageTime) {
|
|
// TODO Auto-generated method stub
|
|
List<ChatMessage> chatMessages = chatMessageRepository.getNewMessages(fromUser, toUser, lastMessageTime);
|
|
// List<ChatMessageDTO> chatMessageDTOs
|
|
return myConversionService.convertToChatMessageDTOs(chatMessages);
|
|
}
|
|
|
|
|
|
@Override
|
|
@Transactional
|
|
public void reencryptMessages(List<ReencryptionDTO> reencryptionDTOs) {
|
|
// TODO Auto-generated method stub
|
|
// chatMessageRepository.saveAll(chatMessages);
|
|
List<MessageCipher> messageCiphers = reencryptionDTOs.stream().map(reencryptionDTO -> reencryptionDTO.getMessageCipher()).collect(Collectors.toList());
|
|
messageCipherRepository.saveAll(messageCiphers);
|
|
}
|
|
|
|
@Override
|
|
public List<ChatMessageDTO> getAllMessages(String name, String userName, PageRequest pageRequest) {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
}
|