XMPPClass.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.drinkertea.test2smack;
  2. import org.jivesoftware.smack.AbstractXMPPConnection;
  3. import org.jivesoftware.smack.MessageListener;
  4. import org.jivesoftware.smack.chat2.ChatManager;
  5. import org.jivesoftware.smack.packet.Message;
  6. import org.jivesoftware.smack.packet.Presence;
  7. import org.jivesoftware.smack.roster.Roster;
  8. import org.jivesoftware.smack.roster.RosterEntry;
  9. import org.jivesoftware.smack.tcp.XMPPTCPConnection;
  10. import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
  11. import org.jivesoftware.smackx.mam.MamManager;
  12. import org.jivesoftware.smackx.muc.HostedRoom;
  13. import org.jivesoftware.smackx.muc.MultiUserChat;
  14. import org.jivesoftware.smackx.muc.MultiUserChatManager;
  15. import org.jxmpp.jid.DomainBareJid;
  16. import org.jxmpp.jid.EntityBareJid;
  17. import org.jxmpp.jid.EntityFullJid;
  18. import org.jxmpp.jid.impl.JidCreate;
  19. import org.jxmpp.jid.parts.Resourcepart;
  20. import org.jxmpp.stringprep.XmppStringprepException;
  21. import org.minidns.record.A;
  22. import java.util.ArrayList;
  23. import java.util.Collection;
  24. import java.util.List;
  25. import java.util.Map;
  26. public class XMPPClass {
  27. public static ChatManager chatManager;
  28. public static AbstractXMPPConnection connection;
  29. public static Roster roster;
  30. public static EntityBareJid chatJid;
  31. public static EntityBareJid myJid;
  32. public static ArrayList<ChatItem> chatItems = new ArrayList<>();
  33. public static List<Message> messages;
  34. public static MultiUserChatManager manager;
  35. public static List<MultiUserChat> listMuc = new ArrayList<>();
  36. public static MultiUserChat activeMuc;
  37. public static String nickname_local = "Test Room User";
  38. public static List<MultiUserChat> listForMessageListenerMuc = new ArrayList<>();
  39. public static void XMPP_JoinRoom(String room_name, String nickname){
  40. try {
  41. EntityBareJid JIDRoom = JidCreate.entityBareFrom(room_name);
  42. MultiUserChat muc = manager.getMultiUserChat(JIDRoom);
  43. //listMuc.add(muc);
  44. Resourcepart room = Resourcepart.from(nickname);
  45. if(!muc.isJoined()){
  46. muc.join(room);
  47. }
  48. activeMuc = muc;
  49. for(EntityFullJid jid1 : muc.getOccupants()){
  50. //System.out.println(jid1);
  51. }
  52. } catch (Exception e) {
  53. System.out.println(e.getMessage());
  54. }
  55. }
  56. public static boolean XMPP_Connection(String login, String password){
  57. try {
  58. myJid = JidCreate.entityBareFrom(login + "@msg.sharix-app.org");
  59. nickname_local = login;
  60. XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
  61. .setXmppDomain("msg.sharix-app.org")
  62. .setHost("46.138.247.90")
  63. .build();
  64. connection = new XMPPTCPConnection(config);
  65. connection.connect();
  66. connection.login(login, password);
  67. chatManager = ChatManager.getInstanceFor(connection);
  68. roster = Roster.getInstanceFor(connection);
  69. manager = MultiUserChatManager.getInstanceFor(XMPPClass.connection);
  70. return true;
  71. }catch (Exception ex){
  72. System.out.println(ex.getMessage());
  73. return false;
  74. }
  75. }
  76. public static void CreateChatListMessage(EntityBareJid jid, int message_count){
  77. try {
  78. MamManager mamManager = MamManager.getInstanceFor(connection);
  79. MamManager.MamQueryArgs mamQueryArgs = MamManager.MamQueryArgs.builder()
  80. .limitResultsToJid(jid)
  81. .setResultPageSizeTo(message_count)
  82. .queryLastPage()
  83. .build();
  84. MamManager.MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);
  85. messages = mamQuery.getMessages();
  86. }catch (Exception ex){
  87. System.out.println(ex.getMessage());
  88. }
  89. }
  90. public static List<Message> CreateRoomListMessage(int message_count, MultiUserChat muc_conn){
  91. try {
  92. MamManager mamManager = MamManager.getInstanceFor(muc_conn);
  93. MamManager.MamQueryArgs mamQueryArgs = MamManager.MamQueryArgs.builder()
  94. .setResultPageSizeTo(message_count)
  95. .queryLastPage()
  96. .build();
  97. MamManager.MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);
  98. return mamQuery.getMessages();
  99. }catch (Exception ex){
  100. return null;
  101. }
  102. }
  103. public static List<MultiUserChat> GenerateRoomList() {
  104. try {
  105. List<DomainBareJid> domains = manager.getMucServiceDomains();
  106. for (DomainBareJid domain : domains){
  107. Map<EntityBareJid, HostedRoom> map = manager.getRoomsHostedBy(domain);
  108. listMuc.clear();
  109. for(EntityBareJid ent : map.keySet()){
  110. //listRoom.add(ent);
  111. try {
  112. EntityBareJid JIDRoom = JidCreate.entityBareFrom(ent);
  113. MultiUserChat muc = manager.getMultiUserChat(JIDRoom);
  114. listMuc.add(muc);
  115. Resourcepart room = Resourcepart.from(nickname_local);
  116. if(!muc.isJoined()){
  117. muc.join(room);
  118. }
  119. }catch (Exception ex){
  120. System.out.println(ex);
  121. }
  122. //System.out.println(ent);
  123. }
  124. }
  125. } catch (Exception e) {
  126. System.out.println(e.getMessage());
  127. }
  128. return listMuc;
  129. }
  130. public static void GenerateChatList(){
  131. try {
  132. Collection<RosterEntry> entries = roster.getEntries();
  133. Presence presence;
  134. chatItems.clear();
  135. for (RosterEntry entry : entries){
  136. presence = roster.getPresence(entry.getJid());
  137. ChatItem chatItem = new ChatItem();
  138. chatItem.jid = presence.getFrom().asBareJid().toString().trim();
  139. if(entry.getName() != null){
  140. chatItem.name = entry.getName().trim();
  141. }
  142. else {
  143. chatItem.name = null;
  144. }
  145. if (presence.getType().toString().trim().equals("unavailable")){
  146. chatItem.status = "Offline";
  147. }
  148. else chatItem.status = "Online";
  149. chatItem.message = null;
  150. chatItems.add(chatItem);
  151. }
  152. } catch (Exception e) {
  153. System.out.println(e.getMessage());
  154. }
  155. }
  156. }