You are on page 1of 12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

p a c k a g ec o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . i m p l ; i m p o r tj a v a . s q l . C o n n e c t i o n ; i m p o r tj a v a . s q l . P r e p a r e d S t a t e m e n t ; i m p o r tj a v a . s q l . R e s u l t S e t ; i m p o r tj a v a . s q l . S Q L E x c e p t i o n ; i m p o r tj a v a . t e x t . D a t e F o r m a t ; i m p o r tj a v a . u t i l . A r r a y L i s t ; i m p o r tj a v a . u t i l . C o l l e c t i o n ; i m p o r tj a v a . u t i l . C o l l e c t i o n s ; i m p o r tj a v a . u t i l . D a t e ; i m p o r tj a v a . u t i l . H a s h M a p ; i m p o r tj a v a . u t i l . H a s h S e t ; i m p o r tj a v a . u t i l . L i s t ; i m p o r to r g . j i v e s o f t w a r e . d a t a b a s e . D b C o n n e c t i o n M a n a g e r ; i m p o r to r g . j i v e s o f t w a r e . o p e n f i r e . a r c h i v e . C o n v e r s a t i o n M a n a g e r ; i m p o r to r g . j i v e s o f t w a r e . u t i l . J i v e C o n s t a n t s ; i m p o r to r g . j i v e s o f t w a r e . u t i l . J i v e G l o b a l s ; i m p o r to r g . j i v e s o f t w a r e . u t i l . L o g ; i m p o r to r g . x m p p . p a c k e t . J I D ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . A r c h i v e d M e s s a g e C o n s u m e r ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . P e r s i s t e n c e M a n a g e r ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . m o d e l . A r c h i v e d M e s s a g e ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . m o d e l . A r c h i v e d M e s s a g e . D i r e c t i o n ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . m o d e l . C o n v e r s a t i o n ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . m o d e l . P a r t i c i p a n t ; i m p o r tc o m . r e u c o n . o p e n f i r e . p l u g i n . a r c h i v e . x e p 0 0 5 9 . X m p p R e s u l t S e t ; / * * *M a n a g e sd a t a b a s ep e r s i s t e n c e . * / p u b l i cc l a s sJ d b c P e r s i s t e n c e M a n a g e ri m p l e m e n t sP e r s i s t e n c e M a n a g e r{ p u b l i cs t a t i cf i n a li n tD E F A U L T _ M A X=1 0 0 0 ; p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ M E S S A G E S _ B Y _ C O N V E R S A T I O N=" S E L E C T D I S T I N C T"+" o f C o n v e r s a t i o n . c o n v e r s a t i o n I D ,"+" o f C o n v e r s a t i o n . r o o m ," +" o f C o n v e r s a t i o n . i s E x t e r n a l ,"+" o f C o n v e r s a t i o n . s t a r t D a t e , "+" o f C o n v e r s a t i o n . l a s t A c t i v i t y ,"+" o f C o n v e r s a t i o n . m e s s a g e C o u n t ," +" o f C o n P a r t i c i p a n t . j o i n e d D a t e ,"+ " o f C o n P a r t i c i p a n t . l e f t D a t e ,"+" o f C o n P a r t i c i p a n t . b a r e J I D ,"+ " o f C o n P a r t i c i p a n t . j i d R e s o u r c e ," +" o f C o n P a r t i c i p a n t . n i c k n a m e ,"+" o f M e s s a g e A r c h i v e . f r o m J I D , "+" o f M e s s a g e A r c h i v e . t o J I D ,"+" o f M e s s a g e A r c h i v e . s e n t D a t e ," +" o f M e s s a g e A r c h i v e . b o d y"+" F R O Mo f C o n v e r s a t i o n" +" I N N E RJ O I No f C o n P a r t i c i p a n tO N o f C o n v e r s a t i o n . c o n v e r s a t i o n I D=o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D" +" I N N E RJ O I No f M e s s a g e A r c h i v eO N o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D=o f M e s s a g e A r c h i v e . c o n v e r s a t i o n I D" +" W H E R Eo f C o n v e r s a t i o n . c o n v e r s a t i o n I D=?A N D o f C o n P a r t i c i p a n t . b a r e J I D=?O R D E RB Yo f M e s s a g e A r c h i v e . s e n t D a t e " ; / /p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ M E S S A G E S _ B Y _ C O N V E R S A T I O N= / /" S E L E C Tm e s s a g e I d , t i m e , d i r e c t i o n , t y p e , s u b j e c t , b o d y" / /+" F R O Ma r c h i v e M e s s a g e sW H E R Ec o n v e r s a t i o n I d=?O R D E RB Yt i m e " ; p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ C O N V E R S A T I O N S=" S E L E C TD I S T I N C T"+

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

1/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

" o f C o n v e r s a t i o n . c o n v e r s a t i o n I D ,"+" o f C o n v e r s a t i o n . r o o m ," +" o f C o n v e r s a t i o n . i s E x t e r n a l ,"+" o f C o n v e r s a t i o n . s t a r t D a t e , "+" o f C o n v e r s a t i o n . l a s t A c t i v i t y ,"+" o f C o n v e r s a t i o n . m e s s a g e C o u n t ," +" o f C o n P a r t i c i p a n t . j o i n e d D a t e ,"+ " o f C o n P a r t i c i p a n t . l e f t D a t e ,"+" o f C o n P a r t i c i p a n t . b a r e J I D ,"+ " o f C o n P a r t i c i p a n t . j i d R e s o u r c e ," +" o f C o n P a r t i c i p a n t . n i c k n a m e ,"+" o f M e s s a g e A r c h i v e . f r o m J I D , "+" o f M e s s a g e A r c h i v e . t o J I D ,"+" o f M e s s a g e A r c h i v e . s e n t D a t e ," +" o f M e s s a g e A r c h i v e . b o d y"+" F R O Mo f C o n v e r s a t i o n" +" I N N E RJ O I No f C o n P a r t i c i p a n tO N o f C o n v e r s a t i o n . c o n v e r s a t i o n I D=o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D" +" I N N E RJ O I No f M e s s a g e A r c h i v eO N o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D=o f M e s s a g e A r c h i v e . c o n v e r s a t i o n I D " ; / /p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ C O N V E R S A T I O N S= / /" S E L E C T c . c o n v e r s a t i o n I d , c . s t a r t T i m e , c . e n d T i m e , c . o w n e r J i d , c . o w n e r R e s o u r c e , c . w i t h J i d , c . w i t h R e s o u r c e , " / /+"c . s u b j e c t , c . t h r e a d"+" F R O Ma r c h i v e C o n v e r s a t i o n sA Sc " ; p u b l i cs t a t i cf i n a lS t r i n gC O U N T _ C O N V E R S A T I O N S=" S E L E C TC O U N T ( D I S T I N C T o f C o n v e r s a t i o n . c o n v e r s a t i o n I D )F R O Mo f C o n v e r s a t i o n" +" I N N E RJ O I No f C o n P a r t i c i p a n tO N o f C o n v e r s a t i o n . c o n v e r s a t i o n I D=o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D" +" I N N E RJ O I No f M e s s a g e A r c h i v eO N o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D=o f M e s s a g e A r c h i v e . c o n v e r s a t i o n I D " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O U N T _ C O N V E R S A T I O N S= / /" S E L E C Tc o u n t ( * )F R O Ma r c h i v e C o n v e r s a t i o n sA Sc " ; p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ I D= " o f C o n v e r s a t i o n . c o n v e r s a t i o n I D " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ I D=" c . c o n v e r s a t i o n I d " ; p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ S T A R T _ T I M E= " o f C o n v e r s a t i o n . s t a r t D a t e " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ S T A R T _ T I M E=" c . s t a r t T i m e " ; p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ E N D _ T I M E= " o f C o n v e r s a t i o n . l a s t A c t i v i t y " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ E N D _ T I M E=" c . e n d T i m e " ; p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ O W N E R _ J I D= " o f C o n P a r t i c i p a n t . b a r e J I D " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ O W N E R _ J I D=" c . o w n e r J i d " ; p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ W I T H _ J I D=" ( o f M e s s a g e A r c h i v e . t o J I D =?O Ro f M e s s a g e A r c h i v e . f r o m J I D=? ) " ; / /p u b l i cs t a t i cf i n a lS t r i n gC O N V E R S A T I O N _ W I T H _ J I D=" c . w i t h J i d " ; p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ A C T I V E _ C O N V E R S A T I O N S=" S E L E C TD I S T I N C T" +" o f C o n v e r s a t i o n . c o n v e r s a t i o n I D ,"+" o f C o n v e r s a t i o n . r o o m ," +" o f C o n v e r s a t i o n . i s E x t e r n a l ,"+" o f C o n v e r s a t i o n . s t a r t D a t e , "+" o f C o n v e r s a t i o n . l a s t A c t i v i t y ,"+" o f C o n v e r s a t i o n . m e s s a g e C o u n t ," +" o f C o n P a r t i c i p a n t . j o i n e d D a t e ,"+ " o f C o n P a r t i c i p a n t . l e f t D a t e ,"+" o f C o n P a r t i c i p a n t . b a r e J I D ,"+ " o f C o n P a r t i c i p a n t . j i d R e s o u r c e ," +" o f C o n P a r t i c i p a n t . n i c k n a m e ,"+" o f M e s s a g e A r c h i v e . f r o m J I D ,

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

2/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

"+" o f M e s s a g e A r c h i v e . t o J I D ,"+" o f M e s s a g e A r c h i v e . s e n t D a t e ," +" o f M e s s a g e A r c h i v e . b o d y"+" F R O Mo f C o n v e r s a t i o n" +" I N N E RJ O I No f C o n P a r t i c i p a n tO N o f C o n v e r s a t i o n . c o n v e r s a t i o n I D=o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D" +" I N N E RJ O I No f M e s s a g e A r c h i v eO N o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D=o f M e s s a g e A r c h i v e . c o n v e r s a t i o n I D" +" W H E R Eo f C o n v e r s a t i o n . l a s t A c t i v i t y>? " ; / /p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ A C T I V E _ C O N V E R S A T I O N S= / /" S E L E C T c . c o n v e r s a t i o n I d , c . s t a r t T i m e , c . e n d T i m e , c . o w n e r J i d , c . o w n e r R e s o u r c e , w i t h J i d , c . w i t h R e s o u r c e , " / /+"c . s u b j e c t , c . t h r e a d" / /+" F R O Ma r c h i v e C o n v e r s a t i o n sA ScW H E R Ec . e n d T i m e>? " ; p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ P A R T I C I P A N T S _ B Y _ C O N V E R S A T I O N=" S E L E C T D I S T I N C T"+" o f C o n v e r s a t i o n . c o n v e r s a t i o n I D ," +" o f C o n v e r s a t i o n . s t a r t D a t e ,"+ " o f C o n v e r s a t i o n . l a s t A c t i v i t y ,"+" o f C o n P a r t i c i p a n t . b a r e J I D"+" F R O Mo f C o n v e r s a t i o n " +" I N N E RJ O I No f C o n P a r t i c i p a n tO N o f C o n v e r s a t i o n . c o n v e r s a t i o n I D=o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D" +" I N N E RJ O I No f M e s s a g e A r c h i v eO N o f C o n P a r t i c i p a n t . c o n v e r s a t i o n I D=o f M e s s a g e A r c h i v e . c o n v e r s a t i o n I D" +" W H E R Eo f C o n v e r s a t i o n . c o n v e r s a t i o n I D=?O R D E RB Y o f C o n v e r s a t i o n . s t a r t D a t e " ; / /p u b l i cs t a t i cf i n a lS t r i n gS E L E C T _ P A R T I C I P A N T S _ B Y _ C O N V E R S A T I O N= / /" S E L E C Tp a r t i c i p a n t I d , s t a r t T i m e , e n d T i m e , j i dF R O Ma r c h i v e P a r t i c i p a n t s W H E R Ec o n v e r s a t i o n I d= ?O R D E RB Ys t a r t T i m e " ; p u b l i cb o o l e a nc r e a t e M e s s a g e ( A r c h i v e d M e s s a g em e s s a g e ){ / *r e a do n l y* / r e t u r nf a l s e ; } p u b l i ci n tp r o c e s s A l l M e s s a g e s ( A r c h i v e d M e s s a g e C o n s u m e rc a l l b a c k ){ r e t u r n0 ; } p u b l i cb o o l e a nc r e a t e C o n v e r s a t i o n ( C o n v e r s a t i o nc o n v e r s a t i o n ){ / *r e a do n l y* / r e t u r nf a l s e ; } p u b l i cb o o l e a nu p d a t e C o n v e r s a t i o n E n d ( C o n v e r s a t i o nc o n v e r s a t i o n ){ / *r e a do n l y* / r e t u r nf a l s e ; } p u b l i cb o o l e a nc r e a t e P a r t i c i p a n t ( P a r t i c i p a n tp a r t i c i p a n t ,L o n g c o n v e r s a t i o n I d ){ r e t u r nf a l s e ; } p u b l i cL i s t < C o n v e r s a t i o n >f i n d C o n v e r s a t i o n s ( S t r i n g [ ]p a r t i c i p a n t s ,D a t e s t a r t D a t e ,D a t ee n d D a t e ){ f i n a lL i s t < C o n v e r s a t i o n >c o n v e r s a t i o n s=n e wA r r a y L i s t < C o n v e r s a t i o n >

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

3/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

( ) ; }

r e t u r nc o n v e r s a t i o n s ;

p u b l i cD a t eg e t A u d i t e d S t a r t D a t e ( D a t es t a r t D a t e ){ l o n gm a x R e t r i e v a b l e= J i v e G l o b a l s . g e t I n t P r o p e r t y ( " c o n v e r s a t i o n . m a x R e t r i e v a b l e " , C o n v e r s a t i o n M a n a g e r . D E F A U L T _ M A X _ R E T R I E V A B L E ) *J i v e C o n s t a n t s . D A Y ; D a t er e s u l t=n u l l ; i f( m a x R e t r i e v a b l e>0 ){ D a t en o w=n e wD a t e ( ) ; D a t em a x R e t r i e v a b l e D a t e=n e wD a t e ( n o w . g e t T i m e ( )m a x R e t r i e v a b l e ) ; i f( s t a r t D a t e= =n u l l ){ r e s u l t=m a x R e t r i e v a b l e D a t e ; }e l s ei f( s t a r t D a t e . b e f o r e ( m a x R e t r i e v a b l e D a t e ) ){ r e s u l t=m a x R e t r i e v a b l e D a t e ; } } r e t u r nr e s u l t ; } p u b l i cC o l l e c t i o n < C o n v e r s a t i o n >f i n d C o n v e r s a t i o n s ( D a t es t a r t D a t e ,D a t e e n d D a t e ,S t r i n go w n e r J i d ,S t r i n gw i t h J i d ,X m p p R e s u l t S e tx m p p R e s u l t S e t ){ f i n a lH a s h M a p < L o n g ,C o n v e r s a t i o n >c o n v e r s a t i o n s ; f i n a lS t r i n g B u i l d e rq u e r y S B ; f i n a lS t r i n g B u i l d e rw h e r e S B ; f i n a lS t r i n g B u i l d e rl i m i t S B ; c o n v e r s a t i o n s=n e wH a s h M a p < L o n g ,C o n v e r s a t i o n > ( ) ; q u e r y S B=n e wS t r i n g B u i l d e r ( S E L E C T _ C O N V E R S A T I O N S ) ; w h e r e S B=n e wS t r i n g B u i l d e r ( ) ; l i m i t S B=n e wS t r i n g B u i l d e r ( ) ; s t a r t D a t e=g e t A u d i t e d S t a r t D a t e ( s t a r t D a t e ) ; i f( s t a r t D a t e! =n u l l ){ a p p e n d W h e r e ( w h e r e S B ,C O N V E R S A T I O N _ S T A R T _ T I M E ,"> =? " ) ; } i f( e n d D a t e! =n u l l ){ a p p e n d W h e r e ( w h e r e S B ,C O N V E R S A T I O N _ E N D _ T I M E ,"< =? " ) ; } i f( o w n e r J i d! =n u l l ){ a p p e n d W h e r e ( w h e r e S B ,C O N V E R S A T I O N _ O W N E R _ J I D ,"=? " ) ; } i f( w i t h J i d! =n u l l ){ a p p e n d W h e r e ( w h e r e S B ,C O N V E R S A T I O N _ W I T H _ J I D ) ; } i f( x m p p R e s u l t S e t! =n u l l ){ I n t e g e rf i r s t I n d e x=n u l l ; i n tm a x=x m p p R e s u l t S e t . g e t M a x ( )! =n u l l? x m p p R e s u l t S e t . g e t M a x ( ):D E F A U L T _ M A X ; x m p p R e s u l t S e t . s e t C o u n t ( c o u n t C o n v e r s a t i o n s ( s t a r t D a t e , e n d D a t e ,o w n e r J i d ,w i t h J i d ,w h e r e S B . t o S t r i n g ( ) ) ) ; i f( x m p p R e s u l t S e t . g e t I n d e x ( )! =n u l l ){

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

4/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

f i r s t I n d e x=x m p p R e s u l t S e t . g e t I n d e x ( ) ; }e l s ei f( x m p p R e s u l t S e t . g e t A f t e r ( )! =n u l l ){ f i r s t I n d e x=c o u n t C o n v e r s a t i o n s B e f o r e ( s t a r t D a t e , e n d D a t e ,o w n e r J i d ,w i t h J i d ,x m p p R e s u l t S e t . g e t A f t e r ( ) ,w h e r e S B . t o S t r i n g ( ) ) ; f i r s t I n d e x+ =1 ; }e l s ei f( x m p p R e s u l t S e t . g e t B e f o r e ( )! =n u l l ){ f i r s t I n d e x=c o u n t C o n v e r s a t i o n s B e f o r e ( s t a r t D a t e , e n d D a t e ,o w n e r J i d ,w i t h J i d ,x m p p R e s u l t S e t . g e t B e f o r e ( ) ,w h e r e S B . t o S t r i n g ( ) ) ; f i r s t I n d e x=m a x ; i f( f i r s t I n d e x<0 ){ f i r s t I n d e x=0 ; } } f i r s t I n d e x=f i r s t I n d e x! =n u l l?f i r s t I n d e x:0 ; l i m i t S B . a p p e n d ( "L I M I T" ) . a p p e n d ( m a x ) ; l i m i t S B . a p p e n d ( "O F F S E T" ) . a p p e n d ( f i r s t I n d e x ) ; x m p p R e s u l t S e t . s e t F i r s t I n d e x ( f i r s t I n d e x ) ;

i f( w h e r e S B . l e n g t h ( )! =0 ){ q u e r y S B . a p p e n d ( "W H E R E" ) . a p p e n d ( w h e r e S B ) ; } q u e r y S B . a p p e n d ( "O R D E RB Y" ) . a p p e n d ( C O N V E R S A T I O N _ I D ) ; q u e r y S B . a p p e n d ( l i m i t S B ) ; C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; t r y{ c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( q u e r y S B . t o S t r i n g ( ) ) ; b i n d C o n v e r s a t i o n P a r a m e t e r s ( s t a r t D a t e ,e n d D a t e ,o w n e r J i d , w i t h J i d ,p s t m t ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; L o g . d e b u g ( " f i n d C o n v e r s a t i o n s :S E L E C T _ C O N V E R S A T I O N S :"+ p s t m t . t o S t r i n g ( ) ) ; w h i l e( r s . n e x t ( ) ){ C o n v e r s a t i o nc o n v=e x t r a c t C o n v e r s a t i o n ( r s ) ; c o n v e r s a t i o n s . p u t ( c o n v . g e t I d ( ) ,c o n v ) ; } }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rs e l e c t i n gc o n v e r s a t i o n s " ,s q l e ) ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } i f( x m p p R e s u l t S e t! =n u l l& &c o n v e r s a t i o n s . s i z e ( )>0 ){ A r r a y L i s t < L o n g >s o r t e d C o n v K e y s=n e wA r r a y L i s t < L o n g > ( c o n v e r s a t i o n s . k e y S e t ( ) ) ; C o l l e c t i o n s . s o r t ( s o r t e d C o n v K e y s ) ; x m p p R e s u l t S e t . s e t F i r s t ( s o r t e d C o n v K e y s . g e t ( 0 ) ) ; x m p p R e s u l t S e t . s e t L a s t ( s o r t e d C o n v K e y s . g e t ( s o r t e d C o n v K e y s . s i z e ( )-1 ) ) ; } r e t u r nc o n v e r s a t i o n s . v a l u e s ( ) ; }

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

5/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

p r i v a t ev o i da p p e n d W h e r e ( S t r i n g B u i l d e rs b ,S t r i n g . . .f r a g m e n t s ){ i f( s b . l e n g t h ( )! =0 ){ s b . a p p e n d ( "A N D" ) ; } f o r( S t r i n gf r a g m e n t:f r a g m e n t s ){ s b . a p p e n d ( f r a g m e n t ) ; }

p r i v a t ei n tc o u n t C o n v e r s a t i o n s ( D a t es t a r t D a t e ,D a t ee n d D a t e ,S t r i n g o w n e r J i d ,S t r i n gw i t h J i d ,S t r i n gw h e r e C l a u s e ){ S t r i n g B u i l d e rq u e r y S B ; q u e r y S B=n e wS t r i n g B u i l d e r ( C O U N T _ C O N V E R S A T I O N S ) ; i f( w h e r e C l a u s e! =n u l l& &w h e r e C l a u s e . l e n g t h ( )! =0 ){ q u e r y S B . a p p e n d ( "W H E R E" ) . a p p e n d ( w h e r e C l a u s e ) ; } C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; t r y{ c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( q u e r y S B . t o S t r i n g ( ) ) ; b i n d C o n v e r s a t i o n P a r a m e t e r s ( s t a r t D a t e ,e n d D a t e ,o w n e r J i d , w i t h J i d ,p s t m t ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; i f( r s . n e x t ( ) ){ r e t u r nr s . g e t I n t ( 1 ) ; }e l s e{ r e t u r n0 ; } }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rc o u n t i n gc o n v e r s a t i o n s " ,s q l e ) ; r e t u r n0 ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } } p r i v a t ei n tc o u n t C o n v e r s a t i o n s B e f o r e ( D a t es t a r t D a t e ,D a t ee n d D a t e ,S t r i n g o w n e r J i d ,S t r i n gw i t h J i d ,L o n gb e f o r e ,S t r i n gw h e r e C l a u s e ){ S t r i n g B u i l d e rq u e r y S B ; q u e r y S B=n e wS t r i n g B u i l d e r ( C O U N T _ C O N V E R S A T I O N S ) ; q u e r y S B . a p p e n d ( "W H E R E" ) ; i f( w h e r e C l a u s e! =n u l l& &w h e r e C l a u s e . l e n g t h ( )! =0 ){ q u e r y S B . a p p e n d ( w h e r e C l a u s e ) ; q u e r y S B . a p p e n d ( "A N D" ) ; } q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ I D ) . a p p e n d ( "<? " ) ; C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; t r y{ i n tp a r a m e t e r I n d e x ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

6/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( q u e r y S B . t o S t r i n g ( ) ) ; p a r a m e t e r I n d e x=b i n d C o n v e r s a t i o n P a r a m e t e r s ( s t a r t D a t e , e n d D a t e ,o w n e r J i d ,w i t h J i d ,p s t m t ) ; p s t m t . s e t L o n g ( p a r a m e t e r I n d e x ,b e f o r e ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; i f( r s . n e x t ( ) ){ r e t u r nr s . g e t I n t ( 1 ) ; }e l s e{ r e t u r n0 ; } }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rc o u n t i n gc o n v e r s a t i o n s " ,s q l e ) ; r e t u r n0 ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } } p r i v a t ei n tb i n d C o n v e r s a t i o n P a r a m e t e r s ( D a t es t a r t D a t e ,D a t ee n d D a t e ,S t r i n g o w n e r J i d ,S t r i n gw i t h J i d ,P r e p a r e d S t a t e m e n tp s t m t ) t h r o w sS Q L E x c e p t i o n{ i n tp a r a m e t e r I n d e x=1 ; i f( s t a r t D a t e! =n u l l ){ p s t m t . s e t L o n g ( p a r a m e t e r I n d e x + + ,d a t e T o M i l l i s ( s t a r t D a t e ) ) ; } i f( e n d D a t e! =n u l l ){ p s t m t . s e t L o n g ( p a r a m e t e r I n d e x + + ,d a t e T o M i l l i s ( e n d D a t e ) ) ; } i f( o w n e r J i d! =n u l l ){ p s t m t . s e t S t r i n g ( p a r a m e t e r I n d e x + + ,o w n e r J i d ) ; } i f( w i t h J i d! =n u l l ){ p s t m t . s e t S t r i n g ( p a r a m e t e r I n d e x + + ,w i t h J i d ) ; p s t m t . s e t S t r i n g ( p a r a m e t e r I n d e x + + ,w i t h J i d ) ; } r e t u r np a r a m e t e r I n d e x ;

p u b l i cC o l l e c t i o n < C o n v e r s a t i o n >g e t A c t i v e C o n v e r s a t i o n s ( i n t c o n v e r s a t i o n T i m e o u t ){ f i n a lC o l l e c t i o n < C o n v e r s a t i o n >c o n v e r s a t i o n s ; f i n a ll o n gn o w=S y s t e m . c u r r e n t T i m e M i l l i s ( ) ; c o n v e r s a t i o n s=n e wA r r a y L i s t < C o n v e r s a t i o n > ( ) ; C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; t r y{ c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( S E L E C T _ A C T I V E _ C O N V E R S A T I O N S ) ; p s t m t . s e t L o n g ( 1 ,n o w-c o n v e r s a t i o n T i m e o u t*6 0 L*1 0 0 0 L ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; w h i l e( r s . n e x t ( ) ){ c o n v e r s a t i o n s . a d d ( e x t r a c t C o n v e r s a t i o n ( r s ) ) ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

7/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

} }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rs e l e c t i n gc o n v e r s a t i o n s " ,s q l e ) ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } } { r e t u r nc o n v e r s a t i o n s ;

p u b l i cL i s t < C o n v e r s a t i o n >g e t C o n v e r s a t i o n s ( C o l l e c t i o n < L o n g >c o n v e r s a t i o n I d s ) f i n a lL i s t < C o n v e r s a t i o n >c o n v e r s a t i o n s ; f i n a lS t r i n g B u i l d e rq u e r y S B ; c o n v e r s a t i o n s=n e wA r r a y L i s t < C o n v e r s a t i o n > ( ) ; i f( c o n v e r s a t i o n I d s . i s E m p t y ( ) ){ r e t u r nc o n v e r s a t i o n s ; } q u e r y S B=n e wS t r i n g B u i l d e r ( S E L E C T _ C O N V E R S A T I O N S ) ; q u e r y S B . a p p e n d ( "W H E R E" ) ; q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ I D ) ; q u e r y S B . a p p e n d ( "I N(" ) ; f o r( i n ti=0 ;i<c o n v e r s a t i o n I d s . s i z e ( ) ;i + + ){ i f( i= =0 ){ q u e r y S B . a p p e n d ( " ? " ) ; }e l s e{ q u e r y S B . a p p e n d ( " , ? " ) ; } } q u e r y S B . a p p e n d ( ") " ) ; q u e r y S B . a p p e n d ( "O R D E RB Y" ) . a p p e n d ( C O N V E R S A T I O N _ E N D _ T I M E ) ; C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; t r y{ c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( q u e r y S B . t o S t r i n g ( ) ) ; i n ti=0 ; f o r( L o n gi d:c o n v e r s a t i o n I d s ){ p s t m t . s e t L o n g ( + + i ,i d ) ; } r s=p s t m t . e x e c u t e Q u e r y ( ) ; w h i l e( r s . n e x t ( ) ){ c o n v e r s a t i o n s . a d d ( e x t r a c t C o n v e r s a t i o n ( r s ) ) ; } }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rs e l e c t i n gc o n v e r s a t i o n s " ,s q l e ) ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } } r e t u r nc o n v e r s a t i o n s ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

8/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

p u b l i cC o n v e r s a t i o ng e t C o n v e r s a t i o n ( S t r i n go w n e r J i d ,S t r i n gw i t h J i d ,D a t e s t a r t ){ r e t u r ng e t C o n v e r s a t i o n ( n u l l ,o w n e r J i d ,w i t h J i d ,s t a r t ) ; } p u b l i cC o n v e r s a t i o ng e t C o n v e r s a t i o n ( L o n gc o n v e r s a t i o n I d ){ r e t u r ng e t C o n v e r s a t i o n ( c o n v e r s a t i o n I d ,n u l l ,n u l l ,n u l l ) ; } p r i v a t eC o n v e r s a t i o ng e t C o n v e r s a t i o n ( L o n gc o n v e r s a t i o n I d ,S t r i n go w n e r J i d , S t r i n gw i t h J i d ,D a t es t a r t ){ C o n v e r s a t i o nc o n v e r s a t i o n=n u l l ; S t r i n g B u i l d e rq u e r y S B ; C o n n e c t i o nc o n=n u l l ; P r e p a r e d S t a t e m e n tp s t m t=n u l l ; R e s u l t S e tr s=n u l l ; q u e r y S B=n e wS t r i n g B u i l d e r ( S E L E C T _ C O N V E R S A T I O N S ) ; q u e r y S B . a p p e n d ( "W H E R E" ) ; i f( c o n v e r s a t i o n I d! =n u l l ){ q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ I D ) . a p p e n d ( "=?" ) ; }e l s e{ q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ O W N E R _ J I D ) . a p p e n d ( "=? " ) ; i f( w i t h J i d! =n u l l ){ q u e r y S B . a p p e n d ( "A N D" ) ; q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ W I T H _ J I D ) ; } i f( s t a r t! =n u l l ){ q u e r y S B . a p p e n d ( "A N D" ) ; q u e r y S B . a p p e n d ( C O N V E R S A T I O N _ S T A R T _ T I M E ) . a p p e n d ( "=? } t r y{ }

" ) ;

c o n=D b C o n n e c t i o n M a n a g e r . g e t C o n n e c t i o n ( ) ; p s t m t=c o n . p r e p a r e S t a t e m e n t ( q u e r y S B . t o S t r i n g ( ) ) ; i n ti=1 ; i f( c o n v e r s a t i o n I d! =n u l l ){ p s t m t . s e t L o n g ( 1 ,c o n v e r s a t i o n I d ) ; }e l s e{ p s t m t . s e t S t r i n g ( i + + ,o w n e r J i d ) ; i f( w i t h J i d! =n u l l ){ p s t m t . s e t S t r i n g ( i + + ,w i t h J i d ) ; p s t m t . s e t S t r i n g ( i + + ,w i t h J i d ) ; } i f( s t a r t! =n u l l ){ p s t m t . s e t L o n g ( i + + ,d a t e T o M i l l i s ( s t a r t ) ) ; } } r s=p s t m t . e x e c u t e Q u e r y ( ) ; L o g . d e b u g ( " g e t C o n v e r s a t i o n :S E L E C T _ C O N V E R S A T I O N S :"+ i f( r s . n e x t ( ) ){ c o n v e r s a t i o n=e x t r a c t C o n v e r s a t i o n ( r s ) ; }e l s e{

p s t m t . t o S t r i n g ( ) ) ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersist

9/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

r e t u r nn u l l ;

r s . c l o s e ( ) ; p s t m t . c l o s e ( ) ; p s t m t= c o n . p r e p a r e S t a t e m e n t ( S E L E C T _ P A R T I C I P A N T S _ B Y _ C O N V E R S A T I O N ) ; p s t m t . s e t L o n g ( 1 ,c o n v e r s a t i o n . g e t I d ( ) ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; L o g . d e b u g ( " g e t C o n v e r s a t i o n : S E L E C T _ P A R T I C I P A N T S _ B Y _ C O N V E R S A T I O N :"+p s t m t . t o S t r i n g ( ) ) ; w h i l e( r s . n e x t ( ) ){ f o r( P a r t i c i p a n tp a r t i c i p a n t: e x t r a c t P a r t i c i p a n t ( r s ) ){ c o n v e r s a t i o n . a d d P a r t i c i p a n t ( p a r t i c i p a n t ) ; } } r s . c l o s e ( ) ; p s t m t . c l o s e ( ) ; p s t m t= c o n . p r e p a r e S t a t e m e n t ( S E L E C T _ M E S S A G E S _ B Y _ C O N V E R S A T I O N ) ; p s t m t . s e t L o n g ( 1 ,c o n v e r s a t i o n . g e t I d ( ) ) ; p s t m t . s e t S t r i n g ( 2 ,c o n v e r s a t i o n . g e t O w n e r J i d ( ) ) ; r s=p s t m t . e x e c u t e Q u e r y ( ) ; L o g . d e b u g ( " g e t C o n v e r s a t i o n :S E L E C T _ M E S S A G E S _ B Y _ C O N V E R S A T I O N : w h i l e( r s . n e x t ( ) ){ A r c h i v e d M e s s a g em e s s a g e ; m e s s a g e=e x t r a c t M e s s a g e ( r s ) ; m e s s a g e . s e t C o n v e r s a t i o n ( c o n v e r s a t i o n ) ; c o n v e r s a t i o n . a d d M e s s a g e ( m e s s a g e ) ;

"+p s t m t . t o S t r i n g ( ) ) ;

} }c a t c h( S Q L E x c e p t i o ns q l e ){ L o g . e r r o r ( " E r r o rs e l e c t i n gc o n v e r s a t i o n " ,s q l e ) ; }f i n a l l y{ D b C o n n e c t i o n M a n a g e r . c l o s e C o n n e c t i o n ( r s ,p s t m t ,c o n ) ; } } r e t u r nc o n v e r s a t i o n ;

p r i v a t eS t r i n gg e t W i t h J i d C o n v e r s a t i o n s ( R e s u l t S e tr s )t h r o w sS Q L E x c e p t i o n{ S t r i n gb a r e J i d=r s . g e t S t r i n g ( " b a r e J I D " ) ; S t r i n gf r o m J i d=r s . g e t S t r i n g ( " f r o m J I D " ) ; S t r i n gt o J i d=r s . g e t S t r i n g ( " t o J I D " ) ; S t r i n gr o o m=r s . g e t S t r i n g ( " r o o m " ) ; S t r i n gr e s u l t=n u l l ; i f( b a r e J i d! =n u l l& &f r o m J i d! =n u l l& &t o J i d! =n u l l ){ i f( r o o m! =n u l l& &! r o o m . e q u a l s ( " " ) ){ r e s u l t=r o o m ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersi

10/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

} r e t u r nr e s u l t ;

}e l s ei f( f r o m J i d . c o n t a i n s ( b a r e J i d ) ){ r e s u l t=t o J i d ; }e l s e{ r e s u l t=f r o m J i d ; }

p r i v a t eD i r e c t i o ng e t D i r e c t i o n ( R e s u l t S e tr s )t h r o w sS Q L E x c e p t i o n{ D i r e c t i o nd i r e c t i o n=n u l l ; S t r i n gb a r e J i d=r s . g e t S t r i n g ( " b a r e J I D " ) ; S t r i n gf r o m J i d=r s . g e t S t r i n g ( " f r o m J I D " ) ; S t r i n gt o J i d=r s . g e t S t r i n g ( " t o J I D " ) ; i f( b a r e J i d! =n u l l& &f r o m J i d! =n u l l& &t o J i d! =n u l l ){ i f( b a r e J i d . e q u a l s ( f r o m J i d ) ){ / * *i fm e s s a g ef r o mm et ow i t h J i dt h e ni ti st ot h e w i t h J i dp a r t i c i p a n t * / d i r e c t i o n=D i r e c t i o n . t o ; }e l s e{ / * *i fm e s s a g et om ef r o mw i t h J i dt h e ni ti sf r o mt h e w i t h J i dp a r t i c i p a n t * / d i r e c t i o n=D i r e c t i o n . f r o m ; } } r e t u r nd i r e c t i o n ; } p r i v a t eC o n v e r s a t i o ne x t r a c t C o n v e r s a t i o n ( R e s u l t S e tr s )t h r o w sS Q L E x c e p t i o n{ f i n a lC o n v e r s a t i o nc o n v e r s a t i o n ; l o n gi d=r s . g e t L o n g ( " c o n v e r s a t i o n I D " ) ; D a t es t a r t D a t e=m i l l i s T o D a t e ( r s . g e t L o n g ( " s t a r t D a t e " ) ) ; S t r i n go w n e r J i d=r s . g e t S t r i n g ( " b a r e J I D " ) ; S t r i n go w n e r R e s o u r c e=n u l l ; S t r i n gw i t h J i d=g e t W i t h J i d C o n v e r s a t i o n s ( r s ) ; S t r i n gw i t h R e s o u r c e=n u l l ; S t r i n gs u b j e c t=n u l l ; S t r i n gt h r e a d=S t r i n g . v a l u e O f ( i d ) ; c o n v e r s a t i o n=n e wC o n v e r s a t i o n ( s t a r t D a t e ,o w n e r J i d ,o w n e r R e s o u r c e , w i t h J i d ,w i t h R e s o u r c e ,s u b j e c t ,t h r e a d ) ; c o n v e r s a t i o n . s e t I d ( i d ) ; r e t u r nc o n v e r s a t i o n ; } p r i v a t eC o l l e c t i o n < P a r t i c i p a n t >e x t r a c t P a r t i c i p a n t ( R e s u l t S e tr s )t h r o w s S Q L E x c e p t i o n{ C o l l e c t i o n < P a r t i c i p a n t >p a r t i c i p a n t s=n e wH a s h S e t < P a r t i c i p a n t > ( ) ; D a t es t a r t D a t e=m i l l i s T o D a t e ( r s . g e t L o n g ( " s t a r t D a t e " ) ) ; S t r i n gp a r t i c i p a n t J i d=r s . g e t S t r i n g ( " b a r e J I D " ) ; D a t ee n d D a t e=m i l l i s T o D a t e ( r s . g e t L o n g ( " l a s t A c t i v i t y " ) ) ;

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersi

11/12

7/18/13

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPer

i f( p a r t i c i p a n t J i d! =n u l l ){ P a r t i c i p a n tp a r t i c i p a n t=n e wP a r t i c i p a n t ( s t a r t D a t e , p a r t i c i p a n t J i d ) ; p a r t i c i p a n t . s e t E n d ( e n d D a t e ) ; p a r t i c i p a n t s . a d d ( p a r t i c i p a n t ) ; } / /S t r i n gw i t h J i d=g e t W i t h J i d ( r s ) ; / /i f( w i t h J i d! =n u l l ){ / /P a r t i c i p a n tp a r t i c i p a n t=n e wP a r t i c i p a n t ( s t a r t D a t e , p a r t i c i p a n t J i d ) ; / /p a r t i c i p a n t . s e t E n d ( e n d D a t e ) ; / /p a r t i c i p a n t s . a d d ( p a r t i c i p a n t ) ; / /} } r e t u r np a r t i c i p a n t s ;

p r i v a t eA r c h i v e d M e s s a g ee x t r a c t M e s s a g e ( R e s u l t S e tr s )t h r o w sS Q L E x c e p t i o n{ f i n a lA r c h i v e d M e s s a g em e s s a g e ; D a t et i m e=m i l l i s T o D a t e ( r s . g e t L o n g ( " s e n t D a t e " ) ) ; D i r e c t i o nd i r e c t i o n=g e t D i r e c t i o n ( r s ) ; S t r i n gt y p e=n u l l ; S t r i n gs u b j e c t=n u l l ; S t r i n gb o d y=r s . g e t S t r i n g ( " b o d y " ) ; S t r i n gb a r e J i d=r s . g e t S t r i n g ( " b a r e J I D " ) ; J I Dw i t h J i d=n u l l ; i f( D i r e c t i o n . f r o m= =d i r e c t i o n ){ w i t h J i d=n e wJ I D ( r s . g e t S t r i n g ( " f r o m J I D " ) ) ; } m e s s a g e=n e wA r c h i v e d M e s s a g e ( t i m e ,d i r e c t i o n ,n u l l ,w i t h J i d ) ; / /m e s s a g e . s e t I d ( i d ) ; / /m e s s a g e . s e t S u b j e c t ( s u b j e c t ) ; m e s s a g e . s e t B o d y ( b o d y ) ; r e t u r nm e s s a g e ;

p r i v a t eL o n gd a t e T o M i l l i s ( D a t ed a t e ){ r e t u r nd a t e= =n u l l?n u l l:d a t e . g e t T i m e ( ) ; } p r i v a t eD a t em i l l i s T o D a t e ( L o n gm i l l i s ){ r e t u r nm i l l i s= =n u l l?n u l l:n e wD a t e ( m i l l i s ) ; }

svn.igniterealtime.org/svn/repos/openfire/trunk/src/plugins/monitoring/src/java/com/reucon/openfire/plugin/archive/impl/JdbcPersi

12/12

You might also like