123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package com.drinkertea.test2smack;
- import org.jivesoftware.smack.AbstractXMPPConnection;
- import org.jivesoftware.smack.MessageListener;
- import org.jivesoftware.smack.chat2.ChatManager;
- import org.jivesoftware.smack.packet.Message;
- import org.jivesoftware.smack.packet.Presence;
- import org.jivesoftware.smack.roster.Roster;
- import org.jivesoftware.smack.roster.RosterEntry;
- import org.jivesoftware.smack.tcp.XMPPTCPConnection;
- import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
- import org.jivesoftware.smackx.mam.MamManager;
- import org.jivesoftware.smackx.muc.HostedRoom;
- import org.jivesoftware.smackx.muc.MultiUserChat;
- import org.jivesoftware.smackx.muc.MultiUserChatManager;
- import org.jxmpp.jid.DomainBareJid;
- import org.jxmpp.jid.EntityBareJid;
- import org.jxmpp.jid.EntityFullJid;
- import org.jxmpp.jid.impl.JidCreate;
- import org.jxmpp.jid.parts.Resourcepart;
- import org.jxmpp.stringprep.XmppStringprepException;
- import org.minidns.record.A;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- import java.util.Map;
- public class XMPPClass {
- public static ChatManager chatManager;
- public static AbstractXMPPConnection connection;
- public static Roster roster;
- public static EntityBareJid chatJid;
- public static EntityBareJid myJid;
- public static ArrayList<ChatItem> chatItems = new ArrayList<>();
- public static List<Message> messages;
- public static MultiUserChatManager manager;
- public static List<MultiUserChat> listMuc = new ArrayList<>();
- public static MultiUserChat activeMuc;
- public static String nickname_local = "Test Room User";
- public static List<MultiUserChat> listForMessageListenerMuc = new ArrayList<>();
- public static void XMPP_JoinRoom(String room_name, String nickname){
- try {
- EntityBareJid JIDRoom = JidCreate.entityBareFrom(room_name);
- MultiUserChat muc = manager.getMultiUserChat(JIDRoom);
- //listMuc.add(muc);
- Resourcepart room = Resourcepart.from(nickname);
- if(!muc.isJoined()){
- muc.join(room);
- }
- activeMuc = muc;
- for(EntityFullJid jid1 : muc.getOccupants()){
- //System.out.println(jid1);
- }
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- }
- public static boolean XMPP_Connection(String login, String password){
- try {
- myJid = JidCreate.entityBareFrom(login + "@msg.sharix-app.org");
- nickname_local = login;
- XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
- .setXmppDomain("msg.sharix-app.org")
- .setHost("46.138.247.90")
- .build();
- connection = new XMPPTCPConnection(config);
- connection.connect();
- connection.login(login, password);
- chatManager = ChatManager.getInstanceFor(connection);
- roster = Roster.getInstanceFor(connection);
- manager = MultiUserChatManager.getInstanceFor(XMPPClass.connection);
- return true;
- }catch (Exception ex){
- System.out.println(ex.getMessage());
- return false;
- }
- }
- public static void CreateChatListMessage(EntityBareJid jid, int message_count){
- try {
- MamManager mamManager = MamManager.getInstanceFor(connection);
- MamManager.MamQueryArgs mamQueryArgs = MamManager.MamQueryArgs.builder()
- .limitResultsToJid(jid)
- .setResultPageSizeTo(message_count)
- .queryLastPage()
- .build();
- MamManager.MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);
- messages = mamQuery.getMessages();
- }catch (Exception ex){
- System.out.println(ex.getMessage());
- }
- }
- public static List<Message> CreateRoomListMessage(int message_count, MultiUserChat muc_conn){
- try {
- MamManager mamManager = MamManager.getInstanceFor(muc_conn);
- MamManager.MamQueryArgs mamQueryArgs = MamManager.MamQueryArgs.builder()
- .setResultPageSizeTo(message_count)
- .queryLastPage()
- .build();
- MamManager.MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);
- return mamQuery.getMessages();
- }catch (Exception ex){
- return null;
- }
- }
- public static List<MultiUserChat> GenerateRoomList() {
- try {
- List<DomainBareJid> domains = manager.getMucServiceDomains();
- for (DomainBareJid domain : domains){
- Map<EntityBareJid, HostedRoom> map = manager.getRoomsHostedBy(domain);
- listMuc.clear();
- for(EntityBareJid ent : map.keySet()){
- //listRoom.add(ent);
- try {
- EntityBareJid JIDRoom = JidCreate.entityBareFrom(ent);
- MultiUserChat muc = manager.getMultiUserChat(JIDRoom);
- listMuc.add(muc);
- Resourcepart room = Resourcepart.from(nickname_local);
- if(!muc.isJoined()){
- muc.join(room);
- }
- }catch (Exception ex){
- System.out.println(ex);
- }
- //System.out.println(ent);
- }
- }
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- return listMuc;
- }
- public static void GenerateChatList(){
- try {
- Collection<RosterEntry> entries = roster.getEntries();
- Presence presence;
- chatItems.clear();
- for (RosterEntry entry : entries){
- presence = roster.getPresence(entry.getJid());
- ChatItem chatItem = new ChatItem();
- chatItem.jid = presence.getFrom().asBareJid().toString().trim();
- if(entry.getName() != null){
- chatItem.name = entry.getName().trim();
- }
- else {
- chatItem.name = null;
- }
- if (presence.getType().toString().trim().equals("unavailable")){
- chatItem.status = "Offline";
- }
- else chatItem.status = "Online";
- chatItem.message = null;
- chatItems.add(chatItem);
- }
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- }
- }
|