diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/java/sip/communicator/impl/protocol/irc/IrcStack.java | 45 | ||||
-rw-r--r-- | src/net/java/sip/communicator/impl/protocol/irc/MessageIrcImpl.java | 112 |
2 files changed, 123 insertions, 34 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/irc/IrcStack.java b/src/net/java/sip/communicator/impl/protocol/irc/IrcStack.java index 75e2547..2031e94 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/IrcStack.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/IrcStack.java @@ -1282,13 +1282,8 @@ public class IrcStack public void onUserPrivMessage(final UserPrivMsg msg) { final String user = msg.getSource().getNick(); - final String text = - Utils.styleAsMessage(Utils.parseIrcMessage(msg.getText())); final MessageIrcImpl message = - new MessageIrcImpl(text, - OperationSetBasicInstantMessaging.HTML_MIME_TYPE, - OperationSetBasicInstantMessaging.DEFAULT_MIME_ENCODING, - null); + MessageIrcImpl.newMessageFromIRC(msg.getText()); final Contact from = IrcStack.this.provider.getPersistentPresence() .findOrCreateContactByID(user); @@ -1306,7 +1301,7 @@ public class IrcStack // outstanding error. LOGGER.error( "Error occurred while delivering private message from user" - + " '" + user + "': " + text, e); + + " '" + user + "': " + msg.getText(), e); } } @@ -1320,16 +1315,11 @@ public class IrcStack public void onUserNotice(final UserNotice msg) { final String user = msg.getSource().getNick(); - final String text = - Utils.styleAsNotice(Utils.parseIrcMessage(msg.getText()), user); - final MessageIrcImpl message = - new MessageIrcImpl(text, - OperationSetBasicInstantMessaging.HTML_MIME_TYPE, - OperationSetBasicInstantMessaging.DEFAULT_MIME_ENCODING, - null); final Contact from = IrcStack.this.provider.getPersistentPresence() .findOrCreateContactByID(user); + final MessageIrcImpl message = + MessageIrcImpl.newNoticeFromIRC(from, msg.getText()); IrcStack.this.provider.getBasicInstantMessaging() .fireMessageReceived(message, from); } @@ -1344,16 +1334,11 @@ public class IrcStack public void onUserAction(final UserActionMsg msg) { final String user = msg.getSource().getNick(); - final String text = - Utils.styleAsAction(Utils.parseIrcMessage(msg.getText()), user); - final MessageIrcImpl message = - new MessageIrcImpl(text, - OperationSetBasicInstantMessaging.HTML_MIME_TYPE, - OperationSetBasicInstantMessaging.DEFAULT_MIME_ENCODING, - null); final Contact from = IrcStack.this.provider.getPersistentPresence().findContactByID( user); + final MessageIrcImpl message = + MessageIrcImpl.newActionFromIRC(from, msg.getText()); IrcStack.this.provider.getBasicInstantMessaging() .fireMessageReceived(message, from); } @@ -1726,11 +1711,9 @@ public class IrcStack return; } - String text = - Utils.styleAsMessage(Utils.parseIrcMessage(msg.getText())); - MessageIrcImpl message = - new MessageIrcImpl(text, "text/html", "UTF-8", null); - ChatRoomMemberIrcImpl member = + final MessageIrcImpl message = + MessageIrcImpl.newMessageFromIRC(msg.getText()); + final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(IrcStack.this.provider, this.chatroom, msg.getSource().getNick(), ChatRoomMemberRole.MEMBER); @@ -1755,11 +1738,8 @@ public class IrcStack ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(IrcStack.this.provider, this.chatroom, userNick, ChatRoomMemberRole.MEMBER); - String text = - Utils.styleAsAction(Utils.parseIrcMessage(msg.getText()), - userNick); MessageIrcImpl message = - new MessageIrcImpl(text, "text/html", "UTF-8", null); + MessageIrcImpl.newActionFromIRC(member, msg.getText()); this.chatroom.fireMessageReceivedEvent(message, member, new Date(), ChatRoomMessageReceivedEvent.CONVERSATION_MESSAGE_RECEIVED); } @@ -1781,11 +1761,8 @@ public class IrcStack final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(IrcStack.this.provider, this.chatroom, userNick, ChatRoomMemberRole.MEMBER); - final String text = - Utils.styleAsNotice(Utils.parseIrcMessage(msg.getText()), - userNick); final MessageIrcImpl message = - new MessageIrcImpl(text, "text/html", "UTF-8", null); + MessageIrcImpl.newNoticeFromIRC(member, msg.getText()); this.chatroom.fireMessageReceivedEvent(message, member, new Date(), ChatRoomMessageReceivedEvent.CONVERSATION_MESSAGE_RECEIVED); } diff --git a/src/net/java/sip/communicator/impl/protocol/irc/MessageIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/MessageIrcImpl.java index 3ea1a46..daa6b24 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/MessageIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/MessageIrcImpl.java @@ -31,6 +31,118 @@ public class MessageIrcImpl public static final String DEFAULT_MIME_TYPE = "text/plain"; /** + * Default mime type for HTML messages. + */ + public static final String HTML_MIME_TYPE = "text/html"; + + /** + * Create a Message instance from a piece of text directly from IRC. This + * text might contain control characters for formatting as well as html + * entities that have yet to be escaped. + * + * The IRC message is parsed, control codes replaced with html tags and html + * entities in the original message are escaped. + * + * @param message the message from IRC + * @return returns a Message instance with content + */ + public static MessageIrcImpl newMessageFromIRC(final String message) + { + String text = Utils.parseIrcMessage(message); + text = Utils.styleAsMessage(text); + return new MessageIrcImpl(text, HTML_MIME_TYPE, DEFAULT_MIME_ENCODING, + null); + } + + /** + * Create a new instance from an IRC text and parse the IRC message. (See + * {@link #newMessageFromIRC(String)}.) + * + * @param user the originating user + * @param message the IRC notice message + * @return returns a new message instance + */ + public static MessageIrcImpl newNoticeFromIRC( + final ChatRoomMemberIrcImpl user, final String message) + { + return newNoticeFromIRC(user.getContactAddress(), message); + } + + /** + * Create a new instance from an IRC text and parse the IRC message. (See + * {@link #newMessageFromIRC(String)}.) + * + * @param user the originating user + * @param message the IRC notice message + * @return returns a new message instance + */ + public static MessageIrcImpl newNoticeFromIRC(final Contact user, + final String message) + { + return newNoticeFromIRC(user.getAddress(), message); + } + + /** + * Construct the new notice message. + * + * @param user the originating user + * @param message the IRC notice message + * @return returns a new message instance + */ + private static MessageIrcImpl newNoticeFromIRC(final String user, + final String message) + { + String text = Utils.parseIrcMessage(message); + text = Utils.styleAsNotice(text, user); + return new MessageIrcImpl(text, HTML_MIME_TYPE, DEFAULT_MIME_ENCODING, + null); + } + + /** + * Create a new instance from an IRC text and parse the IRC message. (See + * {@link #newMessageFromIRC(String)}.) + * + * @param user the originating user + * @param message the IRC action message + * @return returns a new message instance + */ + public static MessageIrcImpl newActionFromIRC( + final ChatRoomMemberIrcImpl user, final String message) + { + return newActionFromIRC(user.getContactAddress(), message); + } + + /** + * Create a new instance from an IRC text and parse the IRC message. (See + * {@link #newMessageFromIRC(String)}.) + * + * @param user the originating user + * @param message the IRC action message + * @return returns a new message instance + */ + public static MessageIrcImpl newActionFromIRC(final Contact user, + final String message) + { + return newActionFromIRC(user.getAddress(), message); + } + + /** + * Construct the new action message. + * + * @param user the originating user + * @param message the IRC action message + * @return returns a new message instance + */ + private static MessageIrcImpl newActionFromIRC(final String user, + final String message) + { + String text = Utils.parseIrcMessage(message); + text = Utils.styleAsAction(text, user); + return new MessageIrcImpl(text, HTML_MIME_TYPE, DEFAULT_MIME_ENCODING, + null); + } + + /** * Creates a message instance according to the specified parameters. * * @param content the message body |