'GoogleTalkConnection을 확장한 GoogleTalkClient 제작!'에 해당되는 글 1건

  1. 2010.06.25 GoogleTalkConnection을 확장한 GoogleTalkClient 제작!
04.Anddoid2010. 6. 25. 14:37
반응형
저번에 XMPPConnection를 상속받아서 GoogleTalkConnection을 만들어보왔는데 그모든기능을 하나의 객체안에서 쓰기 편하게 하기 위해서 GoogleTalkClient를 제작을 해보았다. 코드는 아직 초보라서 잘하지는 못했지만 간단한 기능은 제공한다고 생각해서 올려본다.
 

* GoogleTalkConnection 소스를 보실려면 여기 ▶ XMPPConnection 소스보기

001 import org.jivesoftware.smack.*;
002 import org.jivesoftware.smack.filter.PacketFilter;
003   
004 /**
005  * @author GoogleTalk Client 프로그램으로서 XMPP통신으로 채팅을 지원하는 객체
006  * smack.jar 파일이 잇어야함!
007  * has-a : GoogleTalkConnection, MessageListener;
008  *  
009  */
010 public class GoogleTalkClient {
011       
012     private final GoogleTalkConnection connection;
013     private final String username;
014     private final String password;
015     private String recipientsName;
016     private MessageListener listener = null;
017       
018     /**
019      * GoogleTalkClient 생성자!
020      * @param username 접속자의 Gmail 주소 입니다.
021      * @param password Gmail의 비밀번호 입니다.
022      * @throws XMPPException 접속과 로그인에서의 예외처리입니다.
023      */
024     public GoogleTalkClient(String username, String password) throws XMPPException {
025          connection = new GoogleTalkConnection();
026          connection.login(username, password);
027          this.username = username;
028          this.password = password;
029     }
030       
031     /**
032      * public void open() throws XMPPException {
033      
034      * XMPPConnection 의 접속및 로그인을 합니다. 
035      * @throws XMPPException
036      */
037     public void open() throws XMPPException {
038         if (isConnected()) {
039             connection.connect();
040             connection.login(username, password);
041         }
042     }
043       
044     /**
045      * public void close(){ 
046      
047      * 커넥션 접속 해제를 합니다.
048      */
049     public void close() {
050         if (!isConnected()){
051             connection.disconnect();
052         }
053     }
054       
055     /**
056      * public boolean isConnected()
057      
058      * 커넥션의 접속된 정보를 표현합니다.
059      * @return 커넥션접속정보!
060      */
061     public boolean isConnected() {
062         return connection.isConnected();
063     }
064       
065     /**
066      * public void addMessageListener(MessageListener listener)
067      
068      * 상대방의 보낸메세지를 담당하는 MessageLisener 추가 메서드
069      * @param listener MessageListener
070      */
071     public void addMessageListener(MessageListener listener) {
072         this.listener = listener;
073     }
074       
075     /**
076      * public void addWriterListener(PackteListener listener)
077      
078      * 내가 보낸메세지를 담당하는 추가메서드
079      * @param listener PacketListener
080      */
081     public void addWriterListener(PacketListener listener) {
082         addWriterListener(listener, null);
083     }
084       
085     /**
086      * public void addWriterListener(PacketListener listener, PacketFilter filter) {
087      
088      * 내가 보낸메세지를 담당하는 추가메서드
089      * @param listener PacketListener
090      * @param filter PacketFilter
091      */
092     public void addWriterListener(PacketListener listener, PacketFilter filter) {
093         connection.addPacketWriterListener(listener, filter);
094     }
095       
096     /**
097      * public String getUserName(){
098      
099      * 사용자의 gmail 주소를 리턴합니다.
100      * @return 사용자의 gmail 주소
101      */
102     public String getUserName() {
103         return username;
104     }
105       
106     /**
107      * public String getPassWord(){ 
108      
109      * 사용자의 비밀번호를 리턴합니다.  
110      * @return 사용자의 비밀번호 리턴
111      */
112     public String getPassWord(){
113         return password;
114     }
115       
116     /**
117      * public void setRecipientsName(String name) {
118      
119      * 받는사람의 Gmail 주소를 등록한다.
120      * @param 받는사람
121      */
122     public void setRecipientsName(String name) {
123         this.recipientsName = name;
124     }
125       
126     /**
127      * public String getRecipientsName(){
128      
129      * 받는사람의 Gmail 주소를 리턴합니다.
130      * @return 받는사람
131      */
132     public String getRecipientsName() {
133         return recipientsName;
134     }
135       
136     /**
137      * public void sendMessage(String message) throws XMPPException {
138      
139      * setRecipientsName을 통해 미리 등록이 되있어야만 쪽지를 보낼수있다. 
140      * @param message 보낼 쪽지를 의미 합니다.
141      * @throws XMPPException 
142      */
143     public void sendMessage(String message) throws XMPPException {
144         sendMessage(recipientsName, message);
145     }
146       
147     /**
148      * public void sendMessage(String to, String message) throws XMPPException {
149      
150      * 상대방에게 메세지를 보냅니다.
151      
152      * @param to 상대방의 Gmail 아이디 입니다.
153      * @param message  상대방에게 보낼 메세지입니다.
154      * @throws XMPPException XMPPException입니다.
155      */
156     public void sendMessage(String to, String message) throws XMPPException {
157         Chat chat = connection.getChatManager().createChat(to, this.listener);
158         chat.sendMessage(message);
159     }
Posted by 1010