aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/xmpp/extensions/JuickMessage.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2016-01-14 12:16:49 +0300
committerGravatar Vitaly Takmazov2016-01-14 12:16:49 +0300
commitc492429b25c1ef711620a4f509975c7edc3ffa4a (patch)
tree5bc6b5746381d970760cd6ae5c5561e66a1f95e7 /src/main/java/com/juick/xmpp/extensions/JuickMessage.java
parent7e93e142b6dd75c22c057962447eec014c4e15b4 (diff)
Update libraries and refactoring
Diffstat (limited to 'src/main/java/com/juick/xmpp/extensions/JuickMessage.java')
-rw-r--r--src/main/java/com/juick/xmpp/extensions/JuickMessage.java172
1 files changed, 172 insertions, 0 deletions
diff --git a/src/main/java/com/juick/xmpp/extensions/JuickMessage.java b/src/main/java/com/juick/xmpp/extensions/JuickMessage.java
new file mode 100644
index 00000000..53dd6deb
--- /dev/null
+++ b/src/main/java/com/juick/xmpp/extensions/JuickMessage.java
@@ -0,0 +1,172 @@
+/*
+ * Juick
+ * Copyright (C) 2008-2011, Ugnich Anton
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.juick.xmpp.extensions;
+
+import com.juick.xmpp.utils.XmlUtils;
+import com.juick.xmpp.*;
+import java.io.IOException;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+/**
+ *
+ * @author Ugnich Anton
+ */
+public class JuickMessage extends com.juick.Message implements StanzaChild {
+
+ public final static String XMLNS = "http://juick.com/message";
+ public final static String TagName = "juick";
+
+ public JuickMessage() {
+ }
+
+ public JuickMessage(com.juick.Message msg) {
+ super(msg);
+ }
+
+ @Override
+ public String getXMLNS() {
+ return XMLNS;
+ }
+
+ @Override
+ public JuickMessage parse(XmlPullParser parser) throws XmlPullParserException, IOException {
+ JuickMessage jmsg = new JuickMessage();
+
+ final String sMID = parser.getAttributeValue(null, "mid");
+ if (sMID != null) {
+ jmsg.setMID(Integer.parseInt(sMID));
+ }
+ final String sRID = parser.getAttributeValue(null, "rid");
+ if (sRID != null) {
+ jmsg.setRID(Integer.parseInt(sRID));
+ }
+ final String sReplyTo = parser.getAttributeValue(null, "replyto");
+ if (sReplyTo != null) {
+ jmsg.ReplyTo = Integer.parseInt(sReplyTo);
+ }
+ final String sPrivacy = parser.getAttributeValue(null, "privacy");
+ if (sPrivacy != null) {
+ jmsg.Privacy = Integer.parseInt(sPrivacy);
+ }
+ final String sFriendsOnly = parser.getAttributeValue(null, "friendsonly");
+ if (sFriendsOnly != null) {
+ jmsg.FriendsOnly = true;
+ }
+ final String sReadOnly = parser.getAttributeValue(null, "readonly");
+ if (sReadOnly != null) {
+ jmsg.ReadOnly = true;
+ }
+ jmsg.TimestampString = parser.getAttributeValue(null, "ts");
+ jmsg.AttachmentType = parser.getAttributeValue(null, "attach");
+
+ while (parser.next() == XmlPullParser.START_TAG) {
+ final String tag = parser.getName();
+ final String xmlns = parser.getNamespace();
+ if (tag.equals("body")) {
+ jmsg.setText(XmlUtils.getTagText(parser));
+ } else if (tag.equals(JuickUser.TagName) && xmlns != null && xmlns.equals(JuickUser.XMLNS)) {
+ jmsg.setUser(new JuickUser().parse(parser));
+ } else if (tag.equals("tag")) {
+ jmsg.Tags.add(XmlUtils.getTagText(parser));
+ } else {
+ XmlUtils.skip(parser);
+ }
+ }
+ return jmsg;
+ }
+
+ @Override
+ public String toString() {
+ String ret = "";
+
+ ret = "<" + TagName + " xmlns=\"" + XMLNS + "\"";
+ if (getMID() > 0) {
+ ret += " mid=\"" + getMID() + "\"";
+ }
+ if (getRID() > 0) {
+ ret += " rid=\"" + getRID() + "\"";
+ }
+ if (ReplyTo > 0) {
+ ret += " replyto=\"" + ReplyTo + "\"";
+ }
+ ret += " privacy=\"" + Privacy + "\"";
+ if (FriendsOnly) {
+ ret += " friendsonly=\"1\"";
+ }
+ if (ReadOnly) {
+ ret += " readonly=\"1\"";
+ }
+ if (TimestampString != null) {
+ ret += " ts=\"" + TimestampString + "\"";
+ }
+ if (AttachmentType != null) {
+ ret += " attach=\"" + AttachmentType + "\"";
+ }
+ ret += ">";
+ if (getUser() != null) {
+ ret += JuickUser.toString(getUser());
+ }
+ if (getText() != null) {
+ ret += "<body>" + XmlUtils.escape(getText()) + "</body>";
+ }
+ if (!Tags.isEmpty()) {
+ for (int i = 0; i < Tags.size(); i++) {
+ ret += "<tag>" + XmlUtils.escape(Tags.get(i)) + "</tag>";
+ }
+ }
+ ret += "</" + TagName + ">";
+
+ return ret;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof JuickMessage)) {
+ return false;
+ }
+ JuickMessage jmsg = (JuickMessage) obj;
+ return (this.getMID() == jmsg.getMID() && this.getRID() == jmsg.getRID());
+ }
+
+ @Override
+ public int compareTo(Object obj) throws ClassCastException {
+ if (!(obj instanceof JuickMessage)) {
+ throw new ClassCastException();
+ }
+ JuickMessage jmsg = (JuickMessage) obj;
+
+ if (this.getMID() != jmsg.getMID()) {
+ if (this.getMID() > jmsg.getMID()) {
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+
+ if (this.getRID() != jmsg.getRID()) {
+ if (this.getRID() < jmsg.getRID()) {
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+}