1 29 38 39 package org.planetamessenger.protocols.icq; 40 41 import org.jcq2k.*; 42 import org.jcq2k.icq2k.*; 43 import org.planetamessenger.plugin.*; 44 45 46 public class JICQPlugin extends JPlugin implements MessagingNetworkListener, JMessengerEventListener { 47 48 ICQ2KMessagingNetwork session = null; 49 50 51 52 55 public JICQPlugin() { 56 57 } 58 59 63 public void onCreate() { 64 65 super.onCreate(); 66 67 JPluginCapabilities capabilities = getPluginCapabilities(); 68 69 capabilities.putBool( JPluginCapabilities.CAPABILITY_OFFLINE_MESSAGE, true ); 71 capabilities.putBool( JPluginCapabilities.CAPABILITY_UPDATE_SCREEN_NAME, true ); 72 setPluginCapabilities( capabilities ); 73 74 addMessengerEventListener( this ); 75 session = new ICQ2KMessagingNetwork(); 76 77 addStatus( JPlugin.STATUS_ONLINE, new Integer ( MessagingNetwork.STATUS_ONLINE ) ); 79 addStatus( JPlugin.STATUS_OFFLINE, new Integer ( MessagingNetwork.STATUS_OFFLINE ) ); 80 addStatus( JPlugin.STATUS_AWAY, new Integer ( MessagingNetwork.STATUS_AWAY) ); 81 addStatus( JPlugin.STATUS_DND, new Integer ( MessagingNetwork.STATUS_DND ) ); 82 addStatus( JPlugin.STATUS_FREE_CHAT, new Integer ( MessagingNetwork.STATUS_FREE_FOR_CHAT ) ); 83 addStatus( JPlugin.STATUS_IDLE, new Integer ( MessagingNetwork.STATUS_NA ) ); 84 addStatus( JPlugin.STATUS_BUSY, new Integer ( MessagingNetwork.STATUS_BUSY ) ); 85 addStatus( JPlugin.STATUS_INVISIBLE, new Integer ( MessagingNetwork.STATUS_INVISIBLE ) ); 86 87 try { 88 session.init(); 89 session.addMessagingNetworkListener( this ); 90 } catch( MessagingNetworkException e ) { 91 System.err.println( "JICQPlugin.onCreate() - " + e ); 92 } 93 } 94 95 99 public void onDestroy() { 100 101 super.onDestroy(); 102 session.destroy(); 103 } 104 105 109 public void onLogin( int nPluginStatus ) { 110 111 try { 112 int nStatus = ( ( Integer ) translateStatusToPlugin( nPluginStatus ) ).intValue(); 113 114 session.login( getUserId(), getPassword(), null, nStatus ); 115 fireOnLoginAccepted(); 116 fireOnRegisterUserSucessfull(); addToLibContactList(); 118 119 } catch( MessagingNetworkException e ) { 120 System.err.println( "JICQPlugin.onLogin(" + getUserId() + ") - Unable to login" ); 121 fireOnLoginFailed(); 122 fireOnRegisterUserFailed(); } 124 } 125 126 129 public void onLogout() { 130 131 String strUserId = getUserId(); 132 133 134 try { 135 java.util.Enumeration eContactList = getKernelManager().getContactListManager().getContactList( this ).keys(); 136 137 while( eContactList.hasMoreElements() ) { 138 String strBuddyId = eContactList.nextElement().toString(); 139 140 session.removeFromContactList( strUserId, strBuddyId ); 141 } 142 143 if( isConnected() ) 144 session.logout( strUserId ); 145 146 } catch( MessagingNetworkException e ) { 147 System.err.println( "JICQPlugin.onLogout(" + strUserId + ") - " + e ); 148 } 149 } 150 151 155 public void onAddUserToContactList( java.lang.String strUserId ) { 156 157 try { 158 Long.valueOf( strUserId ); 159 } 160 catch( NumberFormatException e ) { 161 System.err.println( "JICQPlugin.onAddUserToContactList() - Invalid user" ); 162 return; 163 } 164 165 try { 166 session.addToContactList( getUserId(), strUserId ); 167 } catch( MessagingNetworkException e ) { 168 System.err.println( "JICQPlugin.onAddToContactList(" + strUserId + ") - " + e ); 169 } 170 } 171 172 177 public void onRemoveUserFromContactList( java.lang.String strUserId ) { 178 179 try { 180 session.removeFromContactList( getUserId(), strUserId ); 181 } catch( MessagingNetworkException e ) { 182 System.err.println( "JICQPlugin.onRemoveUserFromContactList(" + strUserId + ") - " + e ); 183 } 184 } 185 186 195 public void onSendMessage( java.lang.String strToUser, java.lang.String msg, int nMsgType ) { 196 197 try { 198 session.sendMessage( getUserId(), strToUser, msg ); 199 } catch( MessagingNetworkException e ) { 200 System.err.println( "JICQPlugin.sendMessage(" + strToUser + ") - Unable to send the message" ); 201 } 202 } 203 204 212 public void onRequestAuthorization( java.lang.String strUserId, java.lang.String strNickName ) { 213 214 } 215 216 221 public void onBuddyDetails( java.lang.String strUserId ) { 222 223 try { 224 UserDetails userDetails = session.getUserDetails( getUserId(), strUserId ); 225 226 getKernelManager().getContactListManager().updateScreenName( this, strUserId, userDetails.getNick() ); 227 } catch( MessagingNetworkException e ) { 228 System.err.println( "JICQPlugin.onBuddyDetails(" + strUserId + ") - " + e ); 229 } 230 } 231 232 236 public void onAuthorizeBuddy( java.lang.String strUserId ) { 237 238 onChangePrivacy( strUserId, PRIVACY_UNBLOCK_USER ); 239 } 240 241 245 public void onUnauthorizeBuddy( java.lang.String strUserId ) { 246 247 onChangePrivacy( strUserId, PRIVACY_BLOCK_USER ); 248 } 249 250 254 public void onPluginStatusChanged( int nStatus ) { 255 256 try { 257 session.setStatus( getUserId(), ( ( Integer ) translateStatusToPlugin( nStatus ) ).intValue() ); 258 } catch( MessagingNetworkException e ) { 259 System.err.println( "JICQPlugin.onPluginStatusChanged(" + getUserId() + ") - Error to set status" ); 260 } 261 } 262 263 272 public void onRegisterExistingUser( java.lang.String strNickName, java.lang.String strNewUserId, java.lang.String strPasswd ) { 273 274 JUserInfo userInfo = new JUserInfo( strNewUserId, strNickName, strPasswd, JPlugin.STATUS_ONLINE ); 275 276 setUserInfo( userInfo ); 277 fireOnLogin(); 278 } 279 280 289 public void onRegisterNewUser( java.lang.String strNickName, java.lang.StringBuffer strNewUserId, java.lang.String strPasswd ) { 290 291 fireOnRegisterUserFailed(); } 293 294 298 public void onUnregisterUser() { 299 300 if( isConnected() ) { 301 fireOnLogout(); 302 fireOnUnregisterUserSuccessfull(); 303 } 304 } 305 306 311 public void onChangePassword( java.lang.String strNewPasswd ) { 312 313 fireOnPasswordChangedSuccessfull( strNewPasswd ); 314 } 315 316 326 public void onChangePrivacy( java.lang.String strUserId, int nPrivacyType ) { 327 328 } 329 330 335 public void onPrivacyChanged() { 336 337 } 338 339 342 public void onPluginPropertiesUpdated() { 343 344 } 345 346 350 public boolean isConnected() { 351 352 try { 353 if( session.getStatus( getUserId() ) != MessagingNetwork.STATUS_OFFLINE ) 354 return true; 355 else 356 return false; 357 } catch( MessagingNetworkException e ) { 358 System.err.println( "JICQPlugin.isConnected(" + getUserId() + ") - Exception in isConnected()" ); 359 return false; 360 } 361 } 362 363 369 370 374 public void contactsReceived( byte networkId, String srcLoginId, String dstLoginId, String [] contactsLoginIds, String [] contactsNicks ) { 375 376 for( int nCount = 0; nCount < contactsNicks.length; nCount++ ) { 377 System.err.println( "contactsReceived() - " + contactsLoginIds[nCount] + " " + contactsNicks[nCount] ); 378 } 379 } 380 381 385 public void messageReceived( byte networkId, String srcLoginId, String dstLoginId, String text ) { 386 387 super.fireOnReceiveMessage( srcLoginId, null, text ); 389 } 390 391 395 public void statusChanged( byte networkId, String srcLoginId, String dstLoginId, int status, int reasonCategory, String reasonMessage ) { 396 397 System.err.println( "JICQPlugin.statusChanged() - User [" + dstLoginId + "] changed status to " + status ); 398 399 if( !srcLoginId.equals( dstLoginId ) ) 400 fireOnBuddyStatusChanged( dstLoginId, translateStatusFromPlugin( new Integer ( status ) ) ); 401 else { 402 if( status == MessagingNetwork.STATUS_OFFLINE ) 403 fireOnLogout(); 404 } 405 } 406 407 411 void addToLibContactList() { 412 413 try { 414 415 java.util.Enumeration eContactList = getKernelManager().getContactListManager().getContactList( this ).keys(); 416 417 while( eContactList.hasMoreElements() ) { 418 String strUserId = eContactList.nextElement().toString(); 419 420 session.addToContactList( getUserId(), strUserId ); 421 } 422 } catch( MessagingNetworkException e ) { 423 System.err.println( "JICQPlugin.addToLibContactList(" + getUserId() + ") - " + e ); 424 } 425 } 426 } 427 428 | Popular Tags |