All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skype2disk.FileDumpBuilder Maven / Gradle / Ivy

The newest version!
package skype2disk;

import org.apache.commons.lang.StringUtils;

import skype.SkypeChat;
import skype.SkypeChatMessage;
import skype.TimeSortedMessages;
import skype.UsersSortedByUserId;


public class FileDumpBuilder {
	private final TimeSortedMessages chatMessages;
	private final SkypeChat chat;

	public FileDumpBuilder(SkypeChat chat) {
		this.chat = chat;
		this.chatMessages = chat.getChatMessages();
	}
	
	public String toChatText() {
		final StringBuilder messageText = new StringBuilder();
		
		appendChatTopic(chat, messageText);
		appendChatId(chat, messageText);
		appendChatMembers(chat, messageText);

		int messageCount = this.chatMessages.size();
		messageText.append("[");
		for (SkypeChatMessage aChatMessage : this.chatMessages) {
			messageText.append(aChatMessage.getSignature());
			messageCount--;
			if (messageCount > 0) {
				messageText.append(",");
			}
		}
		messageText.append("]\n");
		
		String previousSender = null;
		for (SkypeChatMessage aChatMessage : this.chatMessages) {
			boolean printSender = shouldPrintSender(previousSender, aChatMessage);
			
			previousSender = aChatMessage.getSenderId();
			messageText.append(aChatMessage.messageText(printSender));
		}
		
		return messageText.toString().trim();
	}
	
	private void appendChatTopic(SkypeChat chat, StringBuilder messageText) {
		messageText.append("Chat topic: " + chat.getTopic() + "\n");
	}

	private void appendChatMembers(SkypeChat chat, StringBuilder messageText) {
		messageText.append("Chat members: [");
		UsersSortedByUserId memberIds = chat.getPosters();
		
		messageText.append(StringUtils.join(memberIds, ","));
		messageText.append("]\n");
	}


	private void appendChatId(SkypeChat chat, StringBuilder messageText) {
		String formattedTime = SkypeChatMessage.chatDateFormat.format(chat.getTime());
		messageText.append(
				String.format("Chat [%s] at %s\n", chat.getId(), formattedTime)
				);
	}

	private boolean shouldPrintSender(String previousSender,
			SkypeChatMessage aChatMessage) {
		boolean printSender;
		if (previousSender == aChatMessage.getSenderId())
			printSender = false;
		else
			printSender = true;
		return printSender;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy