Model-Based Migration of Software Systems to Cloud-Optimized Applications: The CloudMIG Approach

Size: px
Start display at page:

Download "Model-Based Migration of Software Systems to Cloud-Optimized Applications: The CloudMIG Approach"

Transcription

1 Model-Based Migration of Software Systems to Cloud-Optimized Applications: The CloudMIG Approach Sören Frey Software Engineering Group Dept. Computer Science Kiel University, Kiel, Germany April, 203 Sören Frey The CloudMIG Approach April, 203 / 43

2 Migration to the Cloud - Challenges Motivation Which cloud environment to use? Performance? SLAs? Costs? Sören Frey The CloudMIG Approach April, / 43

3 Migration to the Cloud - Challenges Motivation Which cloud environment to use? Performance? SLAs? Costs?,260 companies and,97 cloud solutions listed in Cloud computing product & services directory [CLO3] Sören Frey The CloudMIG Approach April, / 43

4 Migration to the Cloud - Challenges (cont d) Motivation Conformance with a specific cloud environment? Your system may crash if it spawns a thread on Google App Engine establishes a UDP connection on Microsoft Azure You may undergo data loss if your system uses the local file system to cache data during requests on Heroku to store data on Amazon EC2 instances Sören Frey The CloudMIG Approach April, / 43

5 Migration to the Cloud - Challenges (cont d) Motivation Conformance with a specific cloud environment? Your system may crash if it spawns a thread on Google App Engine establishes a UDP connection on Microsoft Azure You may undergo data loss if your system uses the local file system to cache data during requests on Heroku to store data on Amazon EC2 instances We call those restrictions Cloud Environment Constraints (CECs) Applications may cause CEC violations The Violation severity can be Warning, Critical, or Breaking Sören Frey The CloudMIG Approach April, / 43

6 Migration to the Cloud - Challenges (cont d) Motivation How to detect CEC violations? Sören Frey The CloudMIG Approach April, / 43

7 Migration to the Cloud - Challenges (cont d) Motivation How to detect CEC violations? Example: JavaBB 0.99 and Google App Engine for Java Sören Frey The CloudMIG Approach April, / 43

8 Migration to the Cloud - Challenges (cont d) Motivation How to detect CEC violations? Example: JavaBB 0.99 and Google App Engine for Java org javabb dao vo transaction migration lucene interceptor component action quartz dwr bbcode log infra exception vh thread -badwords : List = new ArrayList() -id : Long -word : String -replacement : String +listbadwords() : String +loadbadword() : String +delbadword() : String +editbadword() : String +addbadword() : String BadWordAction -lstcategory : List = new ArrayList() +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +listcategory() : String +loadcategory() : String -setstaffhome() : void +markalltopicsincatasread() : String +updatecategory() : String +insertcategory() : String +showeditcategory() : String +listallcategory() : String +deletecategory() : String CategoryAction -serialversionuid : long = L -fileid : Long -attachment : byte[] -bytesa : int ~bis : BufferedInputStream +loadfile() : String +getdownloadfile(response : HttpServletResponse, attachment : byte [], bis : BufferedInputStream) : void FileAction #forums : List = new ArrayList() -removeforum : int = 0 -themes : List = new ArrayList() -langs : List -btnlang : List = new ArrayList() -destorder : Integer -position : Integer +forumconfig() : String +listaforum() : String +loadforum() : String +updateforum() : String +insertforum() : String +deleteforum() : String +sortforum() : String +saveforumconfig() : String +sortuserrankbyforum() : String ForumAction GroupAction +createindex() : String LuceneIndexAction -serialversionuid : long = L -newslist : List +getnews() : String +loadnews() : String +insert() : String +delete() : String +edit() : String +activenews() : String NewsAction -serialversionuid : long = L -_posts : List = new ArrayList() -quote : String -whoquote : String -attachfiles : String[] +setforumtransaction(forumtransaction : ForumTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +doupload() : String +listapost() : String +returnquotemsg() : String +loadpost() : String +updatepost() : String +updateposttopic() : String +insertpost() : String +inserttopicpost() : String +deletepost() : String +searchauthor() : String +listunanswaredposts() : String +listalllastposts() : String +getpost() : Post +getposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +gettopic() : Topic PostAction -lstmsgs : List -title : String -userid : Long -username : String -msg : String -act : String -idpm : Long[] +inbox() : String +outbox() : String +readin() : String +readout() : String +deleteselectedinbox() : String +deleteinbox() : String +deleteselectedoutbox() : String +deleteoutbox() : String +send() : String +newpm() : String +quote() : String +reply() : String +externalsend() : String +formattexttobbcode(text : String) : String PrivMsgAction -serialversionuid : long = L +EMPTY : String = "empty" -query : String -page : int -totalrowsfound : int -empty : boolean = false -typesearch : Integer = new Integer() -posts : List +getlstcategory() : List +searchinposts() : String +formatpost(post : Post) : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +execute() : String +search() : String -maintainsearchlist(query : String, forumid : Long) : void +formatpostwithoutbbcode(post : Post) : String +isempty() : boolean SearchAction -_smiles : List = new ArrayList() -_emoticon : String = "" -_symbol : String = "" -_filename : String = "" +setfilename(filename : String) : void +setsymbol(symbol : String) : void +setemoticon(emotion : String) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +listsmiles() : String +loadsmile() : String +removesmile() : String +updatesmile() : String +addsmile() : String +getsmile() : Smile +getsmiles() : List SmileAction -serialversionuid : long = L -_topics : List = new ArrayList() -_movetoforum : Long -_reverseposts : List = new ArrayList() -_posts : List = new ArrayList() -lstcategory : List = new ArrayList() -_users : List = new ArrayList() -userranks : List = new ArrayList() -message : String = "" -_founditemstotalcount : long -favoritetopic : int +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setforumtransaction(forumtransaction : ForumTransaction) : void +settopictransaction(topictransaction : TopicTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +setpostformatter(postformatter : PostFormatter) : void +setusertransaction(transaction : UserTransaction) : void +listatopics() : String +loadtopic() : String +showtopic() : String +loadtopicnosumview() : String +deletetopic() : String +listunreadtopics() : String +locktopic() : String +unlocktopic() : String +movetopic() : String +reviewtopic() : String +watchtopicbyuser() : String +watchtopicsbytopic() : String +favoritetopicbyuser() : String +favoritetopicsbytopic() : String +findalllasttopics() : String +findfavoritetopics() : String +gettopic() : Topic +gettopics() : List +getmovetoforum() : Long +setmovetoforum(movetoforum : Long) : void +getreverseposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +getposts() : List +getforum() : Forum +getfounditemstotalcount() : long +getusers() : List +setusers(_users : List) : void +getpost() : Post +setpost(_post : Post) : void TopicAction -serialversionuid : long = L -lstusersportal : List = new ArrayList() -cookie : int = -sortby : String -sortorder : String -username : String -userhash : String -userranks : List = new ArrayList() -confirmpassword : String -file : File -contenttype : String -filename : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +loadusersportal() : String +deleteusersportal() : String +viewlegend() : String +loadeditusersportal() : String -validateedituser(editbyadmin : boolean) : String +updateusersportal() : String +updateuserbyadmin() : String +manageadmrights() : String -validateinsertuser() : String +insertusersportal() : String +uploadavatar() : String +verifylogin() : String +logout() : String +listusersbywhere() : String +finduserbyusername() : String +verifyforgetpwd() : String +listallregisteredusers() : String +listbyusername() : String +uploadprofileimage() : String +getuser() : User UserAction -CR_LF : String = "(?:\r\n \r \n)?" -accepthtml : boolean = false -acceptbbcode : boolean = true +prepareposttext(texto : String) : String -process(string : String) : String -processcode(buffer : StringBuffer) : void +escapebbcode(content : String) : String -escapehtml(content : String) : String -replaceall(str : String, chars : char [], replacement : String []) : String -processnestedtags(buffer : StringBuffer, tagname : String, opensubstwithparam : String, closesubstwithparam : String, opensubstwithoutparam : String, closesubstwithoutparam : String, internalsubst : String, processinternaltags : boolean, acceptparam : boolean, requiresquotedparam : boolean) : void ProcessBBCode +base : CharSequence +start : int +length : int +param : String = null +MutableCharSequence() +MutableCharSequence(base : CharSequence, start : int, length : int) +length() : int +charat(index : int) : char +subsequence(pstart : int, end : int) : CharSequence +reset(pbase : CharSequence, pstart : int, plength : int) : CharSequence MutableCharSequence +IMAGE_JPEG : int = 0 +IMAGE_PNG : int = +resizeimage(imgname : String, type : int, maxwidth : int, maxheight : int) : BufferedImage +resizeimage(image : Image, type : int, maxwidth : int, maxheight : int) : BufferedImage +saveimage(image : BufferedImage, tofilename : String, type : int) : boolean +savecompressedimage(image : BufferedImage, tofilename : String, type : int) : void +createbufferedimage(image : Image, type : int, w : int, h : int) : BufferedImage +hasalpha(image : Image) : boolean +resizeimage(postfile : PostFile) : void +main(args : String []) : void ImageUtils -hashnews : HashMap = new HashMap() +getstatusnews(idnews : Long) : boolean +setstatusnews(idnews : Long, status : Boolean) : void NewsletterStatus #log : Log = LogFactory.getLog(this.getClass()) +setbadwordtransaction(badwordtransaction : BadWordTransaction) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +formatpost(post : Post) : String +formatwithoutbbcode(post : Post) : String +formattexttobbcode(texttobbcode : String) : String +formatescaped(text : String) : String PostFormatter +topicviews : String = "" +addspytopic(topicid : Long, topictitle : String, forumname : String, forumid : Long, userid : Long, username : String) : void +set8messages(values : Map) : void Spy +getuserrank(postcount : Long) : UserRank +getuserstatus(user : User) : int UserFormatter #log : Log = LogFactory.getLog(VelocityTemplate.class) +maketemplate(velvalues : Map, template : String) : String VelocityTemplate +ALL_PAGES : int = - +add(obj : Object) : Object DAOConstants -serialversionuid : long = L +ExtensionNotAllowedException(err : String) ExtensionNotAllowedException -serialversionuid : long = L +FieldException(str : String) FieldException -serialversionuid : long = L +FileTransferException(err : String) FileTransferException #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String ConfigInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -_isflood : boolean = false #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String DelayInterceptor #log : Log = LogFactory.getLog(this.getClass()) +destroy() : void +init() : void +intercept(actioninvocation : ActionInvocation) : String ExceptionInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginAdminInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginInterceptor #logger : Log = LogFactory.getLog(LuceneIndexerInterceptor.class) +LuceneIndexerInterceptor() +LuceneIndexerInterceptor(index : Indexer) +invoke(invocation : MethodInvocation) : Object LuceneIndexerInterceptor ~allowedbeans : String = "" +setallowedbeans(allowedbeans : String []) : void +intercept(invocation : ActionInvocation) : String +destroy() : void +init() : void ParameterInterceptor +destroy() : void +init() : void +intercept(arg0 : ActionInvocation) : String QueryFormatInterceptor -AUTOMATIC_LOGIN_COOKIE : String = "automatic_cookie_login" #after(invocation : ActionInvocation, result : String) : void #before(invocation : ActionInvocation) : void +addcookie(u : User) : void +getcookie() : User +removecookie() : void VerifyCookieInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -indexposts() : void #executeinternal(arg0 : JobExecutionContext) : void IndexPostsJob #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshFeeds #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshUserRankForum #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void UserSecurityCodeRenew #_log : Log = LogFactory.getLog(this.getClass()) -users : List +NewsThread() +NewsThread(users : List, newsletter : Newsletter) +run() : void NewsThread +badwords : List +setbadworddao(dao : IBadWordDAO) : void +listall() : List +verifybadwords(post : String) : String +getbadword(id : Long) : BadWord +delete(badword : BadWord) : void +update(badword : BadWord) : void +save(badword : BadWord) : void BadWordTransaction -forumtransaction : ForumTransaction -topictransaction : TopicTransaction +listcategory() : List +findall() : List +deletecategory(cat : Category) : void +loadcategory(idcat : Long) : Category +obtaincategory(category : Category) : Category +countallposts() : long +countallusers() : long +countalltopics() : long +lastregistereduser() : Stats +updatecategory(catid : Long, cat : Category) : void +insertcategory(cat : Category) : void +updateunreadforuns(lstcategory : List) : void CategoryTransaction +setforumdao(forumdao : IForumDAO) : void +setuserrankdao(rankdao : IUserRankDAO) : void +setrefreshstatsdao(refreshstatsdao : IRefreshStatsDAO) : void +loadforum(id : Long) : Forum +findall() : List +findall(category : Category) : List +findnrototalforuns() : Long +deleteforum(forum : Forum) : void +transferforum(forum : Forum, forumto : int) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +update(forumid : Long, forum : Forum) : void +insertforum(forum : Forum) : Forum +listbuttons() : List +saveconfigforum(forum : ForumConfigView) : void +sortforuns(idcategory : Long, destorder : Integer, position : Integer) : void +setunreadforumids() : void +refreshforumuserrank() : void +feedempregos() : List +feedinfoblogs() : List ForumTransaction GroupTransaction #_log : Log = LogFactory.getLog(this.getClass()) +getnews() : List +loadnews(id : Long) : Newsletter +insertnews(news : Newsletter) : void +deletenews(news : Newsletter) : void +updatenews(news : Newsletter) : void +sendnewsletter(id : Long) : void NewsTransaction -_usertransaction : UserTransaction +setusertransaction(usertransaction : UserTransaction) : void +setpostdao(postdao : IPostDAO) : void +settopicdao(topicdao : ITopicDAO) : void +loadpost(id : Long) : Post +findbytopic(topicid : Long, pagenumber : int) : List +findidlastpost() : int +findbytopicdesc(topic : Topic) : Post +findpagesbytopic(topic : Topic) : List +findlastpostbyforum(forum : Forum) : Post +getpageoflastpostbytopic(topic : Topic) : Integer +findcountofpostsbyforum(forum : Forum) : Integer +candeletepost(post : Post) : boolean +deleteallpostsbytopic(topic : Topic) : void +listpostsbytopicrev(topic : Topic) : List +listpostsbyuser(userid : Long, pagenumber : int) : List +listunanswaredposts(pagenumber : int) : List +findbyquery(query : String, forumid : Long, pagenumber : int) : List +gettotalrowsoflucene(query : String, forumid : Long) : int +updatepost(post : Post) : void +findlasposts() : List +findallbytopicdesc(topic : Topic) : List +findinposts(query : String, page : int) : List +notifyusertopicbymail(topic : Topic) : void +nofitywatchusers(topic : Topic, url : String, message_i8n : String, message2_i8n : String, topic_i8n : String, watch_i8n : String) : void +indexpost(post : Post) : void +createpost(post : Post) : Long +deletepost(postid : Long) : void +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +insertsearchlockup(query : String, forumid : Long) : void PostTransaction -_usertransaction : UserTransaction +PrivMsgTransaction() +setprivmsgrecivieddao(privmsgrecivieddao : IPrivMsgReciviedDAO) : void +setprivmsgsentdao(privmsgsentdao : IPrivMsgSentDAO) : void +setusertransaction(usertransaction : UserTransaction) : void +getuserinbox(u : User) : List +countmsgbyuser(u : User) : int +getuseroutbox(u : User) : List +send(p : PrivMsg) : Long +deletesent(p : PrivMsg) : void +deleterecivied(p : PrivMsg) : void +loadsent(p : PrivMsg) : PrivMsg +loadrecivied(p : PrivMsg) : PrivMsg +deleteselectedinbox(list : List) : void +deleteselectedoutbox(list : List) : void +asprivmsglist(id : Long []) : List +delegat (message_8n : String, iduserto : Long, mpid : Long) : void -sendmailtouser(message_8n : String, pmid : Long, usermail : String) : void PrivMsgTransaction -_smilecache : List +setsmiledao(smiledao : ISmileDAO) : void +addsmile(emotion : String, symbol : String, filename : String) : void +listall() : List +getsmile(id : Long) : Smile +delete(emoticonid : Long) : void +updatesmile(emoticonid : Long, emotion : String, symbol : String, filename : String) : void +replacesmiles(text : String) : String SmileTransaction +settopicdao(topicdao : ITopicDAO) : void +findall() : List +getlasttopicsbylastposts(forumid : Long, pagenumber : int) : List +getalltopicperforum(forumid : Long) : List -settopicidsbylist(topics : List) : List -putarraytopics(fromarrtopics : List, toarrtopics : List) : void +loadtopicforvisualization(id : Long) : Topic +findidlasttopic() : int +updatedateposttopic(topicid : Long, dt : Date) : void +sumnumberreplysbytopic(topicid : Long) : void +subnumberreplysbytopic(lng : Long) : void +findcountoftopicsbyforum(forum : Forum) : Integer +locktopic(topic : Topic) : void +unlocktopic(topic : Topic) : void +movetopic(topic : Topic, idforumdest : Long, message : String, ffrom_i8n : String, fto_i8n : String, topic_i8n : String) : void +loadtopic(id : Long) : Topic +createtopic(topic : Topic, lastpostdate : Date) : Long +deletetopic(topicid : Long) : void +updatetopic(topic : Topic) : void +listunreadtopics(pagenumber : int) : List +iswatchtopic(topicid : Long, userid : Long) : int +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +watchtopicsbyuserid(userid : Long) : List +favoritetopicsbyuserid(userid : Long) : List +watchtopicsbytopic(topicid : Long) : List +favoritetopicsbytopic(topicid : Long) : List +favoritetopics() : List +findlasttopics() : List +isfavoritetopic(topicid : Long, userid : Long) : int TopicTransaction #log : Log = LogFactory.getLog(getClass()) +add(instance : Object) : void +loadall(instance : Object) : List +load(instance : Object, id : Long) : Object +delete(instance : Object) : void Transaction -userrankscache : List +setuserdao(userdao : IUserDAO) : void +getuser(userid : Long) : User +sumnumbermsguser(userid : Long) : void +subnumbermsguser(userid : Long) : void +verifylogin(name : String, passwd : String) : User +verifyusercode(userid : Long, usercode : String) : User +finduserbyusername(username : String) : User +finduserlistbyusername(username : String) : List +is valid( String, userid : Long) : boolean +is valid( String) : boolean +lastuserregistered() : User +deleteuser(user : User) : void +listallregisteredusers(sortby : String, sortorder : String, pagenumber : int) : List +listusersbywhere(user : User, pagenumber : int) : List +updateprofileuser(_user : User, byadmin : boolean) : User +updateamrights(_user : User) : void +createuser(user : User) : Long +updatevisittimestamp() : void +sendsecuritycode(user : User, lang : Map) : void +verifyforgetpwd(userid : Long, hash : String, lang : Map) : boolean +getuserranks() : List +getuserrank(postcount : Long) : UserRank -getuniqueuserrankbycache(postcount : Long) : UserRank +renewusersecuritycode() : void +updateavatar(imgavatar : String, userid : Long) : User UserTransaction +getdomain() : String +getforumname() : String +getlang() : String +gettheme() : String +getdateformat() : String +getpostspage() : String +gettimeformat() : String +gettopicspage() : String +getbuttonlang() : String +getnotifytopic() : String +getsmtphost() : String +getsmtppassword() : String +getsmtpuser() : String +getadminmail() : String +getfloodcontrol() : String +getforumannouncetext() : String +getactivecaptcha() : String ForumConfig -theme : String -domain : String -forumname : String -lang : String -dateformat : String -timeformat : String -buttonlang : String -topicspage : String -postspage : String -notifytopic : String -smtphost : String -smtpuser : String -smtppassword : String -adminmail : String -floodcontrol : String -forumannouncetext : String -activecaptcha : String ForumConfigView -idstats : Long -recordusersonline : Long -totalpostcount : Integer -totaltopiccount : Integer -lastregistereduserid : Long -lastregisteredusername : String -totalregisteredusers : Integer Stats -comp_id : AnswerNotifyPK -user : User -topic : Topic +AnswerNotify(comp_id : AnswerNotifyPK, user : User, topic : Topic) +AnswerNotify() +AnswerNotify(comp_id : AnswerNotifyPK) +equals(other : Object) : boolean AnswerNotify -idtopic : Long -iduser : Long +AnswerNotifyPK(idTopic : Long, iduser : Long) +AnswerNotifyPK() +equals(other : Object) : boolean AnswerNotifyPK -word : String -replacement : String +BadWord() +BadWord(id : Long) +BadWord(word : String, replacement : String) +BadWord(id : Long, word : String, replacement : String) +getidbadword() : Long +setidbadword(id : Long) : void BadWord -namecategory : String -catorder : Integer -foruns : List +getidcategory() : Long +setidcategory(id : Long) : void Category -serialversionuid : long = L -comp_id : FavUserTopicPK -user : User -topic : Topic +FavUserTopic(comp_id : FavUserTopicPK, user : User, topic : Topic) +FavUserTopic(topic : Topic) +FavUserTopic() +FavUserTopic(comp_id : FavUserTopicPK) +equals(other : Object) : boolean FavUserTopic -serialversionuid : long = L -idtopic : Long -iduser : Long +FavUserTopicPK(idTopic : Long, iduser : Long) +FavUserTopicPK() +equals(other : Object) : boolean FavUserTopicPK -nome : String -descricao : String -forumstatus : Integer -topics : Set -forumorder : Integer -topiccount : Long -postcount : Long -lastpagepost : Long -lastpostusername : String -lastpostuserid : Long -lastpostid : Long -lastpostdate : Date -lasttopicid : Long -forumtopusers : Set +Forum() +Forum(id : Long) +Forum(name : String, description : String, sortingposition : Integer, status : Integer) +Forum(id : Long, name : String, description : String, sortingposition : Integer, status : Integer, topics : Set) +getidforum() : Long +setidforum(id : Long) : void +equals(other : Object) : boolean Forum +comp_id : ForumTopUserPK +user : User -postcount : Long -daterow : Date ForumTopUser -idforum : Long -iduser : Long +equals(other : Object) : boolean ForumTopUserPK -groupid : Long -groupname : String -user : User -usergroups : Set -GroupModerators : Set -GroupPermissions : Set +Group(groupId : Long, groupname : String, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +Group() +Group(groupId : Long, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +getgroupmoderators() : Set +setgroupmoderators(groupmoderators : Set) : void +getgrouppermissions() : Set +setgrouppermissions(grouppermissions : Set) : void +equals(other : Object) : boolean Group -comp_id : GroupModeratorPK +GroupModerator(comp_id : GroupModeratorPK, forum : Forum, jbbgroup : Group) +GroupModerator() +GroupModerator(comp_id : GroupModeratorPK) +equals(other : Object) : boolean GroupModerator -groupid : Long -idforum : Long +GroupModeratorPK(groupId : Long, idforum : Long) +GroupModeratorPK() +equals(other : Object) : boolean GroupModeratorPK -comp_id : GroupPermissionPK -permissiontype : Long +GroupPermission(comp_id : GroupPermissionPK, permissiontype : Long, forum : Forum, jbbgroup : Group) +GroupPermission() +GroupPermission(comp_id : GroupPermissionPK) +equals(other : Object) : boolean GroupPermission -groupid : Long -idforum : Long +GroupPermissionPK(groupId : Long, idforum : Long) +GroupPermissionPK() +equals(other : Object) : boolean GroupPermissionPK -serialversionuid : long = L -id : Long -name : String -active : Integer -htmltext : String +Newsletter(id : Long) +Newsletter() Newsletter -postdate : Date -subject : String -postbody : String -user : User -topic : Topic -sig : Integer -ip : String -post_state : Integer -accepthtml : boolean = false -acceptbbcode : boolean = true -showsignature : boolean = true -postfiles : Set +Post(idPost : Long, postdate : Date, subject : String, postbody : String, user : User, topic : Topic) +Post(postId : Long, userid : Long, topicid : Long, postdate : Date, forumid : Long, titletopic : String, subject : String, body : String) +Post(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer) +Post() +Post(id : Long) +Post(id : Long, user : User, topic : Topic) +getidpost() : Long +setidpost(idpost : Long) : void +sethtmlaccepted(accepthtml : boolean) : void +equals(other : Object) : boolean Post -serialversionuid : long = L -fileid : Long -filename : String -filepath : String -filesize : String -userfilename : String -downloads : Integer +PostFile(fileId : Long) +PostFile() +equals(obj : Object) : boolean PostFile -serialversionuid : long = L +postbody : String +PostText(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer, postbody : String) +PostText() +PostText(_pId : Long) PostText -userfrom : User -userto : User -topic : String -text : String -data : Date -allowbbcode : Integer = new Integer(0) -allowsmiles : Integer = new Integer(0) -attachsign : Integer = new Integer(0) -read : Integer = new Integer(0) +PrivMsg() +PrivMsg(p : PrivMsg) +PrivMsg(id : Long) +getidmsg() : Long +setidmsg(id : Long) : void PrivMsg +PrivMsgRecivied() +PrivMsgRecivied(p : PrivMsg) PrivMsgRecivied +PrivMsgSent() +PrivMsgSent(p : PrivMsg) PrivMsgSent -serialversionuid : long = L -lockupid : Long -keysearch : String -searchdate : Date -forumid : Long SearchLockUp -iduser : Long -idsession : String -ip : String -datasession : Date -user : User +getids() : Long +setids(id : Long) : void Session -_id : Long -_emoticon : String -_symbol : String -_filename : String +Smile(id : Long, emoticon : String, symbol : String, filename : String) +Smile(emoticon : String, symbol : String, filename : String) +Smile() +Smile(id : Long) +getid() : Long +setid(id : Long) : void +getemoticon() : String +setemoticon(emotion : String) : void +getsymbol() : String +setsymbol(symbol : String) : void +getfilename() : String +setfilename(imagefile : String) : void +equals(o : Object) : boolean Smile -serialversionuid : long = L -titletopic : String -datatopico : Date -user : User -posts : Set -visualizacoes : Integer -respostas : Integer -notifyme : Integer -topicstatus : Integer -topicmodel : Integer -lastpostdate : Date -pagelastpost : Integer -pagespertopic : List -lastpostid : Long -lastpostusername : String -lastpostuserid : Long -answernotifies : Set -favusertopics : Set +Topic(id : Long, titletopic : String, user : User, forum : Forum, posts : Set) +Topic() +Topic(id : Long) +Topic(id : Long, user : User, forum : Forum, posts : Set) +getidtopic() : Long +setidtopic(id : Long) : void +equals(other : Object) : boolean Topic -serialversionuid : long = L -user : String -passwordhash : String -name : String - String -user_posts : Long -admin : Integer -dataregistro : Date -posts : Set -topics : Set -localizacao : String -website : String -occupation : String -usersig : String -user_avatar : String -user_icq : String -user_interests : String -user_sig : String -user_aim : String -user_yim : String -user_msnm : String -_lastvisittimestamp : Date -user_lastvisit : Date -user_dateformat : String -user_allow_viewonline : String -hash_fpwd : String -show_mail : Integer -show_signature : Integer -userstatus : Integer -receivenews : Integer -usercode : String -forumtopusers : Set -postformatter : ProcessBBCode = new ProcessBBCode() -answernotifies : Set -favusertopics : Set +User(id : Long, user : String, passwordhash : String, name : String, String, user_posts : Long, posts : Set, topics : Set) +User() +User(id : Long, posts : Set, topics : Set) +User(id : Long) +getiduser() : Long +setiduser(iduser : Long) : void +equals(other : Object) : boolean +isadministrator() : boolean +getusersig_formated() : String +getlastvisittimestamp() : Date +setlastvisittimestamp(lastvisittimestamp : Date) : void User -comp_id : UserGroupPK +UserGroup(comp_id : UserGroupPK, jbbgroup : Group, user : User) +UserGroup() +UserGroup(comp_id : UserGroupPK) +equals(other : Object) : boolean UserGroup -groupid : Long -iduser : Long +UserGroupPK(groupId : Long, iduser : Long) +UserGroupPK() +equals(other : Object) : boolean UserGroupPK -rankid : Long -rankname : String -rankmin : Integer -rankmax : Integer -rankimage : String +compareto(object : Object) : int +equals(object : Object) : boolean UserRank +log : Log = LogFactory.getLog(VOObject.class) -id : Long VOObject test integration phpbb betweendbs search index analysis jdbc hibernate lucene entity feed +getcallerclass() : Class ClassLocator +main(args : String []) : void Demo ~aa() : void ISILog infra -LOG : Log = LogFactory.getLog(ApplicationContext.class) -KEY_APPLICATION_CONTEXT : String = "javabb.application.context" +getcontext() : ApplicationContext +getonlineguests() : Collection +getonlineregisteredusers() : Collection +isonline(user : User) : boolean ApplicationContext -log : Log = LogFactory.getLog(ApplicationContextFactory.class) -init : boolean -locations : List = new ArrayList() +addlocation(location : String) : ApplicationContextFactory +addlocation(location : File) : ApplicationContextFactory +containslocation(location : File) : boolean +containslocation(path : String) : boolean +init() : ApplicationContext ApplicationContextFactory +REPLACES : String[] = { "a", "e", "i", "o", "u", "c" } +PATTERNS : Pattern[] = null +compilepatterns() : void +replacespecial(text : String) : String CharFilter +getclassname() : String ClassLocator +realpath : String +showproperties : String = "" +theme : String = "" +domain : String = "" +forumname : String = "" +lang : String = "" +dateformat : String = "" +timeformat : String = "" +buttonlang : String = "" +topicspage : Integer +postspage : Integer +adminmail : String = "" +smtpserverhost : String = "" +smtpserverusername : String = "" +smtpserveruserpassword : String = "" + nofitytopic : String = "" +floodcontrol : String = "" +forumannouncetext : String = "" +activecaptcha : String = "" +Configuration() Configuration +getconf() : Configuration +refreshconfig() : void ConfigurationFactory +movetopicmailtemplate : String = "mail_move_topic.vm" +mpmailtemplate : String = "mp_mail.vm" +watchtopictemplate : String = "watch_topic.vm" +mailforgetpwd : String = "mail_forget_pwd.vm" +sendnewpassword : String = "send_new_password.vm" Constants -log : Log = LogFactory.getLog(getClass()) +contextinitialized(evt : ServletContextEvent) : void +contextdestroyed(evt : ServletContextEvent) : void ContextLoaderListener +dofilter(request : ServletRequest, response : ServletResponse, chain : FilterChain) : void CustomClickstreamFilter -log : Log = LogFactory.getLog(getClass()) +contextdestroyed(evt : ServletContextEvent) : void CustomClickstreamListener +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +setdatehourminute(dateparam : Date, hourminute : String, format : String) : Date +setdatesecond(dateparam : Date, second : int) : Date +getdataextenso(data : Date) : String +getdiasemana(data : Date) : String +getmesextenso(data : Date) : String +getdataabreviada(data : Date) : String +getdiadomes(data : Date) : String +getano(data : Date) : String +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateformat(date : Date, format : String) : String +gettotalofdays(month : int, year : int) : int +daterfcformat(date : Date) : String DateUtil #log : Log = LogFactory.getLog(DigitFormat.class) -currencyformat() : DecimalFormat +parservalue(paramvalue : String) : String +main(args : String []) : void DigitFormat +sendmail(mailfrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) : void +feedempregos : List = new ArrayList() +feedinfoblogs : List = new ArrayList() FeedConstantLists +uploadfile(multiwrapper : MultiPartRequestWrapper) : ArrayList +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper) : HashMap +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper, inputfilename : String, isavatar : boolean) : HashMap +getabsolutpathname(multiwrapper : MultiPartRequestWrapper) : String +deletefile(path : String, filename : String) : boolean +deletefilebylist(set : Set) : void +uploadfiles(req : HttpServletRequest, inputfilename : String, isavatar : boolean) : List FileTransfer -INSTANCE : JbbConfig = new JbbConfig() -numberofusers : int -totalmessagecount : int +getconfig() : JbbConfig +gettotalmessages() : int +gettotalusers() : int +getforumconfig() : ForumConfig JbbConfig +log : Log = LogFactory.getLog(LogWrappper.class) +ERROR(msg : String) : void +INFO(msg : String) : void +ERROR(reqId : String, msg : String) : void +INFO(reqId : String, msg : String) : void +TRACE(msg : String) : void +TRACE(reqId : String, msg : String) : void +DEBUG(msg : String) : void +DEBUG(reqId : String, msg : String) : void -createmsg(msg : String) : String -createmsg(reqid : String, msg : String) : String LogWrappper -localfile : FileInputStream = null -properties : Properties = null +MaintainProperties(file : FileInputStream) -loadproperties() : void +getproperty(nmproperty : String) : String MaintainProperties +MONITOR : Monitor = new Monitor() -Monitor() Monitor -log : Log = LogFactory.getLog(NotThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +NotThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void NotThreadMail +getguestsonline() : Collection +gettotalusersonline() : int +getusersonline() : Collection +getnumberusersonline() : int +getnumberguestesonline() : int Online -_pageitems : List -_pagenumber : int -_itemsperpage : int -_totalitemcount : int +PagedList(pageItems : List, pagenumber : int, itemsperpage : int, totalitemcount : int) +get(index : int) : Object +size() : int +getpageitems() : List +getpagenumber() : int -getitemsperpage() : int +gettotalitemcount() : int +gettotalpagecount() : int +isfirstpage() : boolean +islastpage() : boolean +isfirstpage(page : int) : boolean +islastpage(page : int) : boolean PagedList +getnropages(recordsperpage : long, nrorecords : long) : int +setpagelist(pagenumber : long, totalrows : long) : void +createquickpaging(nropages : int) : List Paging +replacehql(hql : String) : String +isint(param : String) : boolean +getlang(locale : String) : String +getcountry(locale : String) : String Parser -LOG : Log = LogFactory.getLog(UserContext.class) +setpmtransaction(pmtrans : PrivMsgTransaction) : void +getcountmessages() : int PMHelper +uploadpostfiles(post : Post, req : HttpServletRequest) : Set PostSupport -log : Log = LogFactory.getLog(ThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +ThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void +run() : void ThreadMail -DEFAULT_LAST_VISIT_TIMESTAMP : Date = new Date(0) +KEY_USER_CONTEXT : String = "javabb.user.context" -_lastvisittimestamp : Date = null -_readtopicids : Set = new HashSet() -_timereadtopic : Hashtable = new Hashtable() +_topicsincategory : Hashtable = new Hashtable() +_topicsinforum : Hashtable = new Hashtable() +getcontext() : UserContext +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +setforumtopics(forumid : Long, topics : List) : void +isactiveunreadforum() : boolean +setforumtopic(forumid : Long, topic : Topic) : void +settopicincat(catid : Long, topics : List) : void +setcattopic(catid : Long, topic : Topic) : void +setalltopicsincatasread(catid : Long) : void +getuser() : User +setuser(user : User) : void +isauthenticated() : boolean +deauthenticate() : void +getlastvisittimestamp() : Date +istopicread(topic : Topic) : boolean +settopicread(topicid : Long) : void +settopicunread(topicid : Long) : void UserContext -LOG : Log = LogFactory.getLog(Utils.class) -RANDOM : Random = new Random() +encrypt(str : String) : String +randomnumber() : String +validatewebsite(ws : String) : String +verifyurls(text : String) : String +replacehtml(texto : String) : String +getcodeuser(username : String) : String +avoidnull(string : String) : String +indexof(text : String, key : String) : List +isbetween(index : int, initcodepos : List, finalcodepos : List) : boolean +validate ( String) : boolean +compositeword(str : String) : boolean +main(args : String []) : void Utils #log : Log = LogFactory.getLog(VelocityHelper.class) +printobj(obj : Object) : String +isnull(obj : Object) : int +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateabrev(date : Date) : String +datenow() : String +dateextended() : String +dateextended(date : Date) : String +getpercentage(parcial : double, total : double) : String +daterfc() : String +daterfcformat(date : Date) : String +removehtml(text : String) : String +substring(txt : String, init : int, max : int) : String +escapebbcode(str : String) : String +formatdigitvalue(param : String) : String +formatfilename(filename : String) : String +captalizetitle(param : String) : String +parsestringtitle(text : String) : String +getlength(s : String) : int VelocityHelper ajax -serialversionuid : long = L -getrequest() : HttpServletRequest +addfavoritetopic(topicid : Long) : String +deletefavoritetopic(topicid : Long) : String +addwatchtopic(topicid : Long) : String +deletewatchtopic(topicid : Long) : String +spytemplate() : String +deletefile(fileid : Long) : String ActionFacade #log : Log = LogFactory.getLog(getClass()) -timer : Timer = new Timer() -online : Online -jbbconfig : JbbConfig -url : String #_page : int = -temp : String -captchafield : String -_pagedresult : PagedList +getapplication() : ApplicationContext +getpage() : int +setpage(page : int) : void +getpages() : List +getlastpage() : Integer +htmlescape(text : String) : String #setparameter(name : String, value : Object) : void #setviewobject(name : String, value : Object) : void +getsessionattribute(attributename : String) : Object +setsessionattribute(namesession : String, objectsession : Object) : void +removesessionattribute(attributename : String) : void +getpagedresult() : PagedList +setpagedresult(pagedresult : PagedList) : void +istopicread(topic : Topic) : boolean +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +checkcaptcha() : boolean +getuserlogged() : User +gettopicviews() : String ActionSuper -serialversionuid : long = L #_categoryid : Long #_forumid : Long #_topicid : Long #_postid : Long #_userid : Long #_smileid : Long #_badwordid : Long -subject : String -message : String #watchtopic : int -checksign : Integer #msgerrors : List #checkmessage() : void #checksubject() : void +setb(id : Long) : void +setc(id : Long) : void +sets(id : Long) : void +setf(id : Long) : void +setp(id : Long) : void +sett(id : Long) : void +setu(id : Long) : void +getbadwordid() : Long +getcategoryid() : Long +getsmileid() : Long +getforumid() : Long +getpostid() : Long +gettopicid() : Long +getuserid() : Long +getfeedempregos() : List +getfeedinfoblogs() : List BaseAction -singleton : Feeds -feeds : Map -Feeds() +getinstance() : Feeds +getfeed(name : String) : List Feeds -link : String -desc : String -title : String -date : Date +compareto(o : Object) : int ItenFeed +getfeeds(feedurl : String) : List ReadRSS ~timer : Timer ~channel : ChannelIF ~timesup : boolean = false ~blogfeedurl : String +ReadRSSTimerTask(seconds : int) +getchannelif(blogfeedurl : String) : ChannelIF ReadRSSTimerTask +run() : void RemindTask +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) -icon : Icon -channeltitle : String -itemsiterator : Iterator -item : RSSItem +RSSReader(feed : String) +ifhasnextthennext() : boolean +getitemtitle() : String +getdescription() : String +getlink() : String +getdate() : Date +getpubdate() : Date RSSReader +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) +compare(arg0 : Object, arg : Object) : int DateComparator +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void IBadWordDAO +ID : int = +SORTING_POSITION : int = 2 +NAME : int = 3 +countallposts() : int +countalltopics() : int +countallusers() : int +getstatistics() : Stats +load(categoryid : Long) : Category +findall(orderingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void ICategoryDAO +load(id : Long) : Forum +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +insertforum(forum : Forum) : Forum +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List IForumDAO IForumTopUserDAO IGroupDAO +updateindexposts() : List IIndexLucenePostsDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List INewsDAO +load(id : Long) : Post +findlastpost() : Post +findlastposts(limit : int) : List +findbytopicdesc(topic : Topic) : List +findbyforumdesc(forum : Forum) : List +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, numitems : int) : List +search(query : String, page : int) : List +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, rowsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +updatestate(post : Post) : void +create(post : Post) : Long +delete(postid : Long) : void +countallposts() : int +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void IPostDAO +updatedownloads(fileid : Long) : void IPostFileDAO +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void IPrivMsgReciviedDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void IPrivMsgSentDAO +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void IRefreshStatsDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(emoticonid : Long) : void +update(s : Smile) : void ISmileDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +create(topic : Topic) : Long +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +favoritetopicbyuser(userid : Long) : List +favoritetopics() : List ITopicDAO +loaduser(userid : Long) : User +findby ( String) : List +findby ( String, userid : Long) : List +loadbyusername(name : String) : User +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, page : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +update(user : User) : void +findall(pagenumber : int, itemsperpage : int) : List +create(user : User) : Long +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank IUserDAO +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void IUserRankDAO +createhashcode(userid : Long, hashcode : String) : void IUserSecurityDAO +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void BadWordHibernateDAO ~FIELD_NAMES : String[] = new String[] { null, "idcategory", "catorder", "namecategory" } +load(id : Long) : Category +countallposts() : int +countalltopics() : int +countallusers() : int #getfieldname(i : int) : String +getstatistics() : Stats +findall(sortingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void CategoryHibernateDAO -log : Log = LogFactory.getLog(ForumHibernateDAO.class) -posttransaction : PostTransaction -usertransaction : UserTransaction +load(id : Long) : Forum +insertforum(forum : Forum) : Forum +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List ForumHibernateDAO ForumTopUserHibernateDAO GroupHibernateDAO #pathvo : String = "org.javabb.vo." +deletefrom(query : String) : void #countrowsoftable(vo : String, index : String) : Integer #countrowsbywhere(nmclass : String, index : String, whereequalfield : String [], whereequalvalue : String []) : Integer #load(obj : VOObject) : VOObject #getlist(condicao : String) : List #getlist(condicao : String, firstres : int, maxres : int) : List #findall(nmclass : Class, orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String []) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #executesql(sql : String) : void #loadbyuniqueattribute(c : Class, attributename : String, attributevalue : Object) : Object #findbyattribute(c : Class, attributename : String, attributevalue : Object) : List #countrows(c : Class, indexattributename : String) : int #countrowswhere(c : Class, indexattributename : String, whereclause : String, params : Object []) : int #find(c : Class, where : String, params : Object [], orderby : String, pagenumber : int, itemsperpage : int) : List #find(hql : String, params : Object [], pagenumber : int, itemsperpage : int) : List #findall(c : Class, orderby : String, pagenumber : int, itemsperpage : int) : List #getfieldname(i : int) : String #findall(c : Class, sortingfields : int []) : List #load(cls : Class, id : Long) : Object +add(obj : Object) : Object +loadall(obj : Object) : List +load(obj : Object, id : Long) : Object +delete(obj : Object) : void HibernateDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List NewsHibernateDAO -searcher : LuceneSearcher -indexer : Indexer +load(id : Long) : Post +create(post : Post) : Long +delete(postid : Long) : void +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, itemsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +findbytopicdesc(topic : Topic) : List +findlastposts(limit : int) : List +findlastpost() : Post +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, itemsperpage : int) : List +searchidsbyqueryandfields(query : String, forumid : Long) : List -search(ids : List, start : int, limit : int) : List +search(query : String, page : int) : List +countallposts() : int +findbyforumdesc(forum : Forum) : List +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +updatestate(post : Post) : void PostHibernateDAO -ids : List -LuceneComparator(ids : List) +compare(o : Object, o2 : Object) : int LuceneComparator +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void PrivMsgReciviedHibernateDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void PrivMsgSentHibernateDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(id : Long) : void +update(s : Smile) : void SmileHibernateDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +create(topic : Topic) : Long +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +favoritetopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopics() : List TopicHibernateDAO #log : Log = LogFactory.getLog(UserHibernateDAO.class) -usersecuritydao : IUserSecurityDAO +loaduser(userid : Long) : User +update(user : User) : void +create(user : User) : Long +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +findby ( String, userid : Long) : List +findby ( String) : List +loadbyusername(username : String) : User +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, pagenumber : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +findall(pagenumber : int, itemsperpage : int) : List +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank UserHibernateDAO #log : Log = LogFactory.getLog(getClass()) -posttransaction : PostTransaction +updateindexposts() : List JdbcIndexLucenePosts +updatedownloads(fileid : Long) : void JdbcPostFileDAO -log : Log = LogFactory.getLog(JdbcRefreshStatsDAO.class) +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +refreshsession(obj : Object) : void JdbcRefreshStatsDAO +add(obj : Object) : Object JdbcSuper -log : Log = LogFactory.getLog(this.getClass()) +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void +refreshsession(obj : Object) : void JdbcUserRankDAO -log : Log = LogFactory.getLog(JdbcUserSecurityDAO.class) +createhashcode(userid : Long, hashcode : String) : void +refreshsession(obj : Object) : void JdbcUserSecurityDAO +STOP_WORDS : String[] = new String[] { "0", "", "2", "3", "4", "5", "6", "7", "8", "9", "a", "ainda", "alem", "algum", "alguma", "alguns", "ali", "além", "ambas", "ambos", "ano", "anos", "antes", "ao", "aonde", "aos", "apenas", "apos", "aquela", "aquele", "aqueles", "as", "assim", "ato", "até", "b", "bem", "boa", "bom", "c", "cada", "cargo", "carta", "casa", "com", "como", "consta", "contra", "contudo", "cuja", "cujas", "cujo", "cujos", "d", "da", "daquele", "dar", "das", "data", "de", "dela", "dele", "deles", "demais", "depois", "desde", "desta", "deste", "deu", "dia", "dias", "dispoe", "dispoem", "dito", "diversa", "diversas", "diversos", "diz", "do", "dois", "dos", "dr", "duas", "durante", "e", "ela", "elas", "ele", "eles", "em", "enfim", "entao", "entre", "então", "era", "eram", "essa", "essas", "esse", "esses", "esta", "estas", "estava", "este", "estes", "f", "fazer", "fez", "ficou", "fim", "foi", "foram", "fr", "g", "gente", "geral", "h", "ha", "havia", "hoje", "há", "i", "isso", "isto", "j", "já", "k", "l", "lhe", "lhes", "logo", "lugar", "m", "maior", "mais", "mas", "me", "mediante", "menos", "mesma", "mesmas", "mesmo", "mesmos", "muito", "muitos", "n", "na", "nao", "nas", "nem", "nesse", "nesta", "neste", "no", "nome", "nos", "nossa", "nosso", "nossos", "nova", "novo", "não", "nós", "o", "onde", "ordem", "os", "ou", "outra", "outras", "outro", "outros", "p", "para", "parte", "pela", "pelas", "pelo", "pelos", "perante", "pois", "por", "porque", "portanto", "porém", "pouco", "propios", "proprio", "q", "quais", "qual", "qualquer", "quando", "quanto", "que", "quem", "quer", "r", "rua", "s", "se", "segundo", "seja", "sem", "sempre", "sendo", "ser", "seu", "seus", "sob", "sobre", "sua", "suas", "são", "só", "sôbre", "t", "tal", "tambem", "também", "tanto", "tem", "tendo", "ter", "teu", "teus", "teve", "tinha", "tinham", "toda", "todas", "todo", "todos", "três", "tua", "tuas", "tudo", "tão", "u", "um", "uma", "umas", "uns", "v", "veio", "vem", "vez", "vê", "w", "x", "y", "z", "à", "às", "é", "êle" } -stopwords : Set = new HashSet() +PortugueseAnalyzer() +PortugueseAnalyzer(stopWords : String []) +PortugueseAnalyzer(words : String) +tokenstream(fieldname : String, reader : Reader) : TokenStream -makearray(words : String) : String [] PortugueseAnalyzer -REPLACES : String[] -PATTERNS : Pattern[] +SpecialCharFilter(in : TokenStream) +next() : Token -replacespecial(text : String) : String SpecialCharFilter -logger : Log = LogFactory.getLog(Indexer.class) -path : Directory -analyzer : Analyzer -optimize : boolean -createnew : boolean -initialized : boolean = false -monitor : Object = org.javabb.infra.monitor.monitor +Indexer(analyzer : Analyzer, path : Directory, opt : boolean, createnew : boolean) +Indexer(analyzer : Analyzer, path : Resource, opt : boolean, createnew : boolean) +isoptimize() : boolean +index(post : Post) : void -posttodocument(post : Post) : Document +createindex(posts : List) : void +update(post : Post) : void +delete(post : Post) : void +delete(postid : Long) : void -makewriter() : IndexWriter -indexdocument(doc : Document) : void -deleteusingterm(term : Term) : void -initialize() : void Indexer +LuceneIndexerException() +LuceneIndexerException(message : String) +LuceneIndexerException(message : String, cause : Throwable) +LuceneIndexerException(cause : Throwable) +LuceneIndexerException(ex : Exception) LuceneIndexerException -logger : Log -monitor : Object = org.javabb.infra.monitor.monitor -lucenepath : Directory -analyzer : Analyzer +LuceneOptimizeIndexTimerTask(lucenePath : Directory, analyzer : Analyzer) +LuceneOptimizeIndexTimerTask(lucenePath : Resource, analyzer : Analyzer) +run() : void LuceneOptimizeIndexTimerTask -cssclass : String -cssstyle : String +CSSFormatter(cssClass : String) +CSSFormatter(properties : Map) +highlightterm(originaltext : String, tokengroup : TokenGroup) : String -dohighlightterm(originaltext : String) : String -constructstyle(cssproperties : Map) : String CSSFormatter -CONTENTS_FIELD : String = "contents" -analyzer : Analyzer = new PortugueseAnalyzer() +highlight(text : String, query : String, separator : String, fragsize : int, numfrags : int, complete : boolean) : String -adddocument(actualtext : String, ramdir : Directory) : void -avoidempty(string : String, text : String) : String LuceneHighlighter +search(query : String [], field : String []) : List +search(query : String, field : String []) : List LuceneSearcher -path : Directory -analyzer : Analyzer -monitor : Object = org.javabb.infra.monitor.monitor +SimpleLuceneSearcher(path : Directory, analyzer : Analyzer) +SimpleLuceneSearcher(path : Resource, analyzer : Analyzer) +search(query : String, fields : String []) : List +search(query : String [], fields : String []) : List SimpleLuceneSearcher +main(args : String []) : void JavaBB_DBScript Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/javabb3?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" -javabb_url : String = "jdbc:postgresql://localhost/javabb" -javabb_user : String = "postgres" -javabb_pass : String = "postgres" -javabb_driver : String = "org.postgresql.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getdborigin() : Connection #getdbdest() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_post_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_post_text Jbb_topics Jbb_users +main(args : String []) : void JavaBB_DBScript JbbMerge Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/carlos?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" #phpbb_prefix : String = "phpbb_" -javabb_url : String = "jdbc:mysql://localhost:3306/bb_carlos?unicode=true" -javabb_user : String = "root" -javabb_pass : String = "root" -javabb_driver : String = "com.mysql.jdbc.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getphpbbconnection() : Connection #getjavabbconnection() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_posts_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_posts_text Jbb_topics Jbb_users +feedtitle : String +feedurl : String FeedEmpregoVH +feedtitle : String +feedurl : String FeedInfoBlogsVH ~indexer : Indexer ~directory : RAMDirectory +main(args : String []) : void +IndexerTest(name : String) #setup() : void +testindex() : void -verifydocs() : void +testupdate() : void +testdeletepost() : void +testdeletelong() : void -getpost() : Post IndexerTest +testando() : String JavaBBDWR -postformatter -_topic -indexer -forum -_smiledao -INSTANCE -forumtransaction -_topictransaction -_usertransaction -comp_id -posttransaction -pmtrans -config -topic -user -posttransaction -online -_user -_smiletransaction -_badwordtransaction -_privmsgsentdao -forumtransaction -comp_id -lastuserregistered -user -group -_badworddao -pm -_postdao #forumtransaction -newsletter -genericdao -_usertransaction -usertransaction -user -_topicdao -_user -forumtransaction -_smiletransaction -_categorytransaction -topictransaction -userformatter -newsletter -usersecuritydao +MONITOR -userformatter -lastpost -_userdao -posttransaction -_post -topictransaction -category -stats -topic -comp_id -category -postformatter -postfiledao -_userrankdao -userto -forumtransaction -group -indexlucenepostsdao -userfrom -_categorytransaction -forumconfigview -_forumtransaction -_refreshstatsdao -_categorytransaction -indexer -usertransaction -_usertransaction -_usertransaction -_pagedresult -user -post -_privmsgrecivieddao -_usertransaction -user -user -badword -postfile -jbbconfig -_postformatter -indexer -newstransaction indexer -categorydao -pmtransaction -topic -_post -_smile -group -posttransaction -usersecuritydao -usertransaction -usertransaction -comp_id -usertransaction +comp_id -postformatter -searcher +forum -newsstatus +user -comp_id -indexer -posttransaction -_categorytransaction -badwordtransaction -posttransaction -newsdao -forum -_posttransaction -_forum -_posttransaction #forum -stats -forum -topictransaction -usertransaction -_topic -_forumtransaction -postformatter -posttransaction -_forumdao -singleton -user -posttransaction -badwordtransaction -_topicdao Sören Frey The CloudMIG Approach April, / 43

9 Migration to the Cloud - Challenges (cont d) Motivation How to detect CEC violations? Example: JavaBB 0.99 and Google App Engine for Java Classes raising CEC violations org javabb dao vo transaction migration lucene interceptor component action quartz dwr bbcode log infra exception vh thread -badwords : List = new ArrayList() -id : Long -word : String -replacement : String +listbadwords() : String +loadbadword() : String +delbadword() : String +editbadword() : String +addbadword() : String BadWordAction -lstcategory : List = new ArrayList() +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +listcategory() : String +loadcategory() : String -setstaffhome() : void +markalltopicsincatasread() : String +updatecategory() : String +insertcategory() : String +showeditcategory() : String +listallcategory() : String +deletecategory() : String CategoryAction -serialversionuid : long = L -fileid : Long -attachment : byte[] -bytesa : int ~bis : BufferedInputStream +loadfile() : String +getdownloadfile(response : HttpServletResponse, attachment : byte [], bis : BufferedInputStream) : void FileAction #forums : List = new ArrayList() -removeforum : int = 0 -themes : List = new ArrayList() -langs : List -btnlang : List = new ArrayList() -destorder : Integer -position : Integer +forumconfig() : String +listaforum() : String +loadforum() : String +updateforum() : String +insertforum() : String +deleteforum() : String +sortforum() : String +saveforumconfig() : String +sortuserrankbyforum() : String ForumAction GroupAction +createindex() : String LuceneIndexAction -serialversionuid : long = L -newslist : List +getnews() : String +loadnews() : String +insert() : String +delete() : String +edit() : String +activenews() : String NewsAction -serialversionuid : long = L -_posts : List = new ArrayList() -quote : String -whoquote : String -attachfiles : String[] +setforumtransaction(forumtransaction : ForumTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +doupload() : String +listapost() : String +returnquotemsg() : String +loadpost() : String +updatepost() : String +updateposttopic() : String +insertpost() : String +inserttopicpost() : String +deletepost() : String +searchauthor() : String +listunanswaredposts() : String +listalllastposts() : String +getpost() : Post +getposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +gettopic() : Topic PostAction -lstmsgs : List -title : String -userid : Long -username : String -msg : String -act : String -idpm : Long[] +inbox() : String +outbox() : String +readin() : String +readout() : String +deleteselectedinbox() : String +deleteinbox() : String +deleteselectedoutbox() : String +deleteoutbox() : String +send() : String +newpm() : String +quote() : String +reply() : String +externalsend() : String +formattexttobbcode(text : String) : String PrivMsgAction -serialversionuid : long = L +EMPTY : String = "empty" -query : String -page : int -totalrowsfound : int -empty : boolean = false -typesearch : Integer = new Integer() -posts : List +getlstcategory() : List +searchinposts() : String +formatpost(post : Post) : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +execute() : String +search() : String -maintainsearchlist(query : String, forumid : Long) : void +formatpostwithoutbbcode(post : Post) : String +isempty() : boolean SearchAction -_smiles : List = new ArrayList() -_emoticon : String = "" -_symbol : String = "" -_filename : String = "" +setfilename(filename : String) : void +setsymbol(symbol : String) : void +setemoticon(emotion : String) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +listsmiles() : String +loadsmile() : String +removesmile() : String +updatesmile() : String +addsmile() : String +getsmile() : Smile +getsmiles() : List SmileAction -serialversionuid : long = L -_topics : List = new ArrayList() -_movetoforum : Long -_reverseposts : List = new ArrayList() -_posts : List = new ArrayList() -lstcategory : List = new ArrayList() -_users : List = new ArrayList() -userranks : List = new ArrayList() -message : String = "" -_founditemstotalcount : long -favoritetopic : int +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setforumtransaction(forumtransaction : ForumTransaction) : void +settopictransaction(topictransaction : TopicTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +setpostformatter(postformatter : PostFormatter) : void +setusertransaction(transaction : UserTransaction) : void +listatopics() : String +loadtopic() : String +showtopic() : String +loadtopicnosumview() : String +deletetopic() : String +listunreadtopics() : String +locktopic() : String +unlocktopic() : String +movetopic() : String +reviewtopic() : String +watchtopicbyuser() : String +watchtopicsbytopic() : String +favoritetopicbyuser() : String +favoritetopicsbytopic() : String +findalllasttopics() : String +findfavoritetopics() : String +gettopic() : Topic +gettopics() : List +getmovetoforum() : Long +setmovetoforum(movetoforum : Long) : void +getreverseposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +getposts() : List +getforum() : Forum +getfounditemstotalcount() : long +getusers() : List +setusers(_users : List) : void +getpost() : Post +setpost(_post : Post) : void TopicAction -serialversionuid : long = L -lstusersportal : List = new ArrayList() -cookie : int = -sortby : String -sortorder : String -username : String -userhash : String -userranks : List = new ArrayList() -confirmpassword : String -file : File -contenttype : String -filename : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +loadusersportal() : String +deleteusersportal() : String +viewlegend() : String +loadeditusersportal() : String -validateedituser(editbyadmin : boolean) : String +updateusersportal() : String +updateuserbyadmin() : String +manageadmrights() : String -validateinsertuser() : String +insertusersportal() : String +uploadavatar() : String +verifylogin() : String +logout() : String +listusersbywhere() : String +finduserbyusername() : String +verifyforgetpwd() : String +listallregisteredusers() : String +listbyusername() : String +uploadprofileimage() : String +getuser() : User UserAction -CR_LF : String = "(?:\r\n \r \n)?" -accepthtml : boolean = false -acceptbbcode : boolean = true +prepareposttext(texto : String) : String -process(string : String) : String -processcode(buffer : StringBuffer) : void +escapebbcode(content : String) : String -escapehtml(content : String) : String -replaceall(str : String, chars : char [], replacement : String []) : String -processnestedtags(buffer : StringBuffer, tagname : String, opensubstwithparam : String, closesubstwithparam : String, opensubstwithoutparam : String, closesubstwithoutparam : String, internalsubst : String, processinternaltags : boolean, acceptparam : boolean, requiresquotedparam : boolean) : void ProcessBBCode +base : CharSequence +start : int +length : int +param : String = null +MutableCharSequence() +MutableCharSequence(base : CharSequence, start : int, length : int) +length() : int +charat(index : int) : char +subsequence(pstart : int, end : int) : CharSequence +reset(pbase : CharSequence, pstart : int, plength : int) : CharSequence MutableCharSequence +IMAGE_JPEG : int = 0 +IMAGE_PNG : int = +resizeimage(imgname : String, type : int, maxwidth : int, maxheight : int) : BufferedImage +resizeimage(image : Image, type : int, maxwidth : int, maxheight : int) : BufferedImage +saveimage(image : BufferedImage, tofilename : String, type : int) : boolean +savecompressedimage(image : BufferedImage, tofilename : String, type : int) : void +createbufferedimage(image : Image, type : int, w : int, h : int) : BufferedImage +hasalpha(image : Image) : boolean +resizeimage(postfile : PostFile) : void +main(args : String []) : void ImageUtils -hashnews : HashMap = new HashMap() +getstatusnews(idnews : Long) : boolean +setstatusnews(idnews : Long, status : Boolean) : void NewsletterStatus #log : Log = LogFactory.getLog(this.getClass()) +setbadwordtransaction(badwordtransaction : BadWordTransaction) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +formatpost(post : Post) : String +formatwithoutbbcode(post : Post) : String +formattexttobbcode(texttobbcode : String) : String +formatescaped(text : String) : String PostFormatter +topicviews : String = "" +addspytopic(topicid : Long, topictitle : String, forumname : String, forumid : Long, userid : Long, username : String) : void +set8messages(values : Map) : void Spy +getuserrank(postcount : Long) : UserRank +getuserstatus(user : User) : int UserFormatter #log : Log = LogFactory.getLog(VelocityTemplate.class) +maketemplate(velvalues : Map, template : String) : String VelocityTemplate +ALL_PAGES : int = - +add(obj : Object) : Object DAOConstants -serialversionuid : long = L +ExtensionNotAllowedException(err : String) ExtensionNotAllowedException -serialversionuid : long = L +FieldException(str : String) FieldException -serialversionuid : long = L +FileTransferException(err : String) FileTransferException #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String ConfigInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -_isflood : boolean = false #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String DelayInterceptor #log : Log = LogFactory.getLog(this.getClass()) +destroy() : void +init() : void +intercept(actioninvocation : ActionInvocation) : String ExceptionInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginAdminInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginInterceptor #logger : Log = LogFactory.getLog(LuceneIndexerInterceptor.class) +LuceneIndexerInterceptor() +LuceneIndexerInterceptor(index : Indexer) +invoke(invocation : MethodInvocation) : Object LuceneIndexerInterceptor ~allowedbeans : String = "" +setallowedbeans(allowedbeans : String []) : void +intercept(invocation : ActionInvocation) : String +destroy() : void +init() : void ParameterInterceptor +destroy() : void +init() : void +intercept(arg0 : ActionInvocation) : String QueryFormatInterceptor -AUTOMATIC_LOGIN_COOKIE : String = "automatic_cookie_login" #after(invocation : ActionInvocation, result : String) : void #before(invocation : ActionInvocation) : void +addcookie(u : User) : void +getcookie() : User +removecookie() : void VerifyCookieInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -indexposts() : void #executeinternal(arg0 : JobExecutionContext) : void IndexPostsJob #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshFeeds #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshUserRankForum #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void UserSecurityCodeRenew #_log : Log = LogFactory.getLog(this.getClass()) -users : List +NewsThread() +NewsThread(users : List, newsletter : Newsletter) +run() : void NewsThread +badwords : List +setbadworddao(dao : IBadWordDAO) : void +listall() : List +verifybadwords(post : String) : String +getbadword(id : Long) : BadWord +delete(badword : BadWord) : void +update(badword : BadWord) : void +save(badword : BadWord) : void BadWordTransaction -forumtransaction : ForumTransaction -topictransaction : TopicTransaction +listcategory() : List +findall() : List +deletecategory(cat : Category) : void +loadcategory(idcat : Long) : Category +obtaincategory(category : Category) : Category +countallposts() : long +countallusers() : long +countalltopics() : long +lastregistereduser() : Stats +updatecategory(catid : Long, cat : Category) : void +insertcategory(cat : Category) : void +updateunreadforuns(lstcategory : List) : void CategoryTransaction +setforumdao(forumdao : IForumDAO) : void +setuserrankdao(rankdao : IUserRankDAO) : void +setrefreshstatsdao(refreshstatsdao : IRefreshStatsDAO) : void +loadforum(id : Long) : Forum +findall() : List +findall(category : Category) : List +findnrototalforuns() : Long +deleteforum(forum : Forum) : void +transferforum(forum : Forum, forumto : int) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +update(forumid : Long, forum : Forum) : void +insertforum(forum : Forum) : Forum +listbuttons() : List +saveconfigforum(forum : ForumConfigView) : void +sortforuns(idcategory : Long, destorder : Integer, position : Integer) : void +setunreadforumids() : void +refreshforumuserrank() : void +feedempregos() : List +feedinfoblogs() : List ForumTransaction GroupTransaction #_log : Log = LogFactory.getLog(this.getClass()) +getnews() : List +loadnews(id : Long) : Newsletter +insertnews(news : Newsletter) : void +deletenews(news : Newsletter) : void +updatenews(news : Newsletter) : void +sendnewsletter(id : Long) : void NewsTransaction -_usertransaction : UserTransaction +setusertransaction(usertransaction : UserTransaction) : void +setpostdao(postdao : IPostDAO) : void +settopicdao(topicdao : ITopicDAO) : void +loadpost(id : Long) : Post +findbytopic(topicid : Long, pagenumber : int) : List +findidlastpost() : int +findbytopicdesc(topic : Topic) : Post +findpagesbytopic(topic : Topic) : List +findlastpostbyforum(forum : Forum) : Post +getpageoflastpostbytopic(topic : Topic) : Integer +findcountofpostsbyforum(forum : Forum) : Integer +candeletepost(post : Post) : boolean +deleteallpostsbytopic(topic : Topic) : void +listpostsbytopicrev(topic : Topic) : List +listpostsbyuser(userid : Long, pagenumber : int) : List +listunanswaredposts(pagenumber : int) : List +findbyquery(query : String, forumid : Long, pagenumber : int) : List +gettotalrowsoflucene(query : String, forumid : Long) : int +updatepost(post : Post) : void +findlasposts() : List +findallbytopicdesc(topic : Topic) : List +findinposts(query : String, page : int) : List +notifyusertopicbymail(topic : Topic) : void +nofitywatchusers(topic : Topic, url : String, message_i8n : String, message2_i8n : String, topic_i8n : String, watch_i8n : String) : void +indexpost(post : Post) : void +createpost(post : Post) : Long +deletepost(postid : Long) : void +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +insertsearchlockup(query : String, forumid : Long) : void PostTransaction -_usertransaction : UserTransaction +PrivMsgTransaction() +setprivmsgrecivieddao(privmsgrecivieddao : IPrivMsgReciviedDAO) : void +setprivmsgsentdao(privmsgsentdao : IPrivMsgSentDAO) : void +setusertransaction(usertransaction : UserTransaction) : void +getuserinbox(u : User) : List +countmsgbyuser(u : User) : int +getuseroutbox(u : User) : List +send(p : PrivMsg) : Long +deletesent(p : PrivMsg) : void +deleterecivied(p : PrivMsg) : void +loadsent(p : PrivMsg) : PrivMsg +loadrecivied(p : PrivMsg) : PrivMsg +deleteselectedinbox(list : List) : void +deleteselectedoutbox(list : List) : void +asprivmsglist(id : Long []) : List +delegat (message_8n : String, iduserto : Long, mpid : Long) : void -sendmailtouser(message_8n : String, pmid : Long, usermail : String) : void PrivMsgTransaction -_smilecache : List +setsmiledao(smiledao : ISmileDAO) : void +addsmile(emotion : String, symbol : String, filename : String) : void +listall() : List +getsmile(id : Long) : Smile +delete(emoticonid : Long) : void +updatesmile(emoticonid : Long, emotion : String, symbol : String, filename : String) : void +replacesmiles(text : String) : String SmileTransaction +settopicdao(topicdao : ITopicDAO) : void +findall() : List +getlasttopicsbylastposts(forumid : Long, pagenumber : int) : List +getalltopicperforum(forumid : Long) : List -settopicidsbylist(topics : List) : List -putarraytopics(fromarrtopics : List, toarrtopics : List) : void +loadtopicforvisualization(id : Long) : Topic +findidlasttopic() : int +updatedateposttopic(topicid : Long, dt : Date) : void +sumnumberreplysbytopic(topicid : Long) : void +subnumberreplysbytopic(lng : Long) : void +findcountoftopicsbyforum(forum : Forum) : Integer +locktopic(topic : Topic) : void +unlocktopic(topic : Topic) : void +movetopic(topic : Topic, idforumdest : Long, message : String, ffrom_i8n : String, fto_i8n : String, topic_i8n : String) : void +loadtopic(id : Long) : Topic +createtopic(topic : Topic, lastpostdate : Date) : Long +deletetopic(topicid : Long) : void +updatetopic(topic : Topic) : void +listunreadtopics(pagenumber : int) : List +iswatchtopic(topicid : Long, userid : Long) : int +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +watchtopicsbyuserid(userid : Long) : List +favoritetopicsbyuserid(userid : Long) : List +watchtopicsbytopic(topicid : Long) : List +favoritetopicsbytopic(topicid : Long) : List +favoritetopics() : List +findlasttopics() : List +isfavoritetopic(topicid : Long, userid : Long) : int TopicTransaction #log : Log = LogFactory.getLog(getClass()) +add(instance : Object) : void +loadall(instance : Object) : List +load(instance : Object, id : Long) : Object +delete(instance : Object) : void Transaction -userrankscache : List +setuserdao(userdao : IUserDAO) : void +getuser(userid : Long) : User +sumnumbermsguser(userid : Long) : void +subnumbermsguser(userid : Long) : void +verifylogin(name : String, passwd : String) : User +verifyusercode(userid : Long, usercode : String) : User +finduserbyusername(username : String) : User +finduserlistbyusername(username : String) : List +is valid( String, userid : Long) : boolean +is valid( String) : boolean +lastuserregistered() : User +deleteuser(user : User) : void +listallregisteredusers(sortby : String, sortorder : String, pagenumber : int) : List +listusersbywhere(user : User, pagenumber : int) : List +updateprofileuser(_user : User, byadmin : boolean) : User +updateamrights(_user : User) : void +createuser(user : User) : Long +updatevisittimestamp() : void +sendsecuritycode(user : User, lang : Map) : void +verifyforgetpwd(userid : Long, hash : String, lang : Map) : boolean +getuserranks() : List +getuserrank(postcount : Long) : UserRank -getuniqueuserrankbycache(postcount : Long) : UserRank +renewusersecuritycode() : void +updateavatar(imgavatar : String, userid : Long) : User UserTransaction +getdomain() : String +getforumname() : String +getlang() : String +gettheme() : String +getdateformat() : String +getpostspage() : String +gettimeformat() : String +gettopicspage() : String +getbuttonlang() : String +getnotifytopic() : String +getsmtphost() : String +getsmtppassword() : String +getsmtpuser() : String +getadminmail() : String +getfloodcontrol() : String +getforumannouncetext() : String +getactivecaptcha() : String ForumConfig -theme : String -domain : String -forumname : String -lang : String -dateformat : String -timeformat : String -buttonlang : String -topicspage : String -postspage : String -notifytopic : String -smtphost : String -smtpuser : String -smtppassword : String -adminmail : String -floodcontrol : String -forumannouncetext : String -activecaptcha : String ForumConfigView -idstats : Long -recordusersonline : Long -totalpostcount : Integer -totaltopiccount : Integer -lastregistereduserid : Long -lastregisteredusername : String -totalregisteredusers : Integer Stats -comp_id : AnswerNotifyPK -user : User -topic : Topic +AnswerNotify(comp_id : AnswerNotifyPK, user : User, topic : Topic) +AnswerNotify() +AnswerNotify(comp_id : AnswerNotifyPK) +equals(other : Object) : boolean AnswerNotify -idtopic : Long -iduser : Long +AnswerNotifyPK(idTopic : Long, iduser : Long) +AnswerNotifyPK() +equals(other : Object) : boolean AnswerNotifyPK -word : String -replacement : String +BadWord() +BadWord(id : Long) +BadWord(word : String, replacement : String) +BadWord(id : Long, word : String, replacement : String) +getidbadword() : Long +setidbadword(id : Long) : void BadWord -namecategory : String -catorder : Integer -foruns : List +getidcategory() : Long +setidcategory(id : Long) : void Category -serialversionuid : long = L -comp_id : FavUserTopicPK -user : User -topic : Topic +FavUserTopic(comp_id : FavUserTopicPK, user : User, topic : Topic) +FavUserTopic(topic : Topic) +FavUserTopic() +FavUserTopic(comp_id : FavUserTopicPK) +equals(other : Object) : boolean FavUserTopic -serialversionuid : long = L -idtopic : Long -iduser : Long +FavUserTopicPK(idTopic : Long, iduser : Long) +FavUserTopicPK() +equals(other : Object) : boolean FavUserTopicPK -nome : String -descricao : String -forumstatus : Integer -topics : Set -forumorder : Integer -topiccount : Long -postcount : Long -lastpagepost : Long -lastpostusername : String -lastpostuserid : Long -lastpostid : Long -lastpostdate : Date -lasttopicid : Long -forumtopusers : Set +Forum() +Forum(id : Long) +Forum(name : String, description : String, sortingposition : Integer, status : Integer) +Forum(id : Long, name : String, description : String, sortingposition : Integer, status : Integer, topics : Set) +getidforum() : Long +setidforum(id : Long) : void +equals(other : Object) : boolean Forum +comp_id : ForumTopUserPK +user : User -postcount : Long -daterow : Date ForumTopUser -idforum : Long -iduser : Long +equals(other : Object) : boolean ForumTopUserPK -groupid : Long -groupname : String -user : User -usergroups : Set -GroupModerators : Set -GroupPermissions : Set +Group(groupId : Long, groupname : String, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +Group() +Group(groupId : Long, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +getgroupmoderators() : Set +setgroupmoderators(groupmoderators : Set) : void +getgrouppermissions() : Set +setgrouppermissions(grouppermissions : Set) : void +equals(other : Object) : boolean Group -comp_id : GroupModeratorPK +GroupModerator(comp_id : GroupModeratorPK, forum : Forum, jbbgroup : Group) +GroupModerator() +GroupModerator(comp_id : GroupModeratorPK) +equals(other : Object) : boolean GroupModerator -groupid : Long -idforum : Long +GroupModeratorPK(groupId : Long, idforum : Long) +GroupModeratorPK() +equals(other : Object) : boolean GroupModeratorPK -comp_id : GroupPermissionPK -permissiontype : Long +GroupPermission(comp_id : GroupPermissionPK, permissiontype : Long, forum : Forum, jbbgroup : Group) +GroupPermission() +GroupPermission(comp_id : GroupPermissionPK) +equals(other : Object) : boolean GroupPermission -groupid : Long -idforum : Long +GroupPermissionPK(groupId : Long, idforum : Long) +GroupPermissionPK() +equals(other : Object) : boolean GroupPermissionPK -serialversionuid : long = L -id : Long -name : String -active : Integer -htmltext : String +Newsletter(id : Long) +Newsletter() Newsletter -postdate : Date -subject : String -postbody : String -user : User -topic : Topic -sig : Integer -ip : String -post_state : Integer -accepthtml : boolean = false -acceptbbcode : boolean = true -showsignature : boolean = true -postfiles : Set +Post(idPost : Long, postdate : Date, subject : String, postbody : String, user : User, topic : Topic) +Post(postId : Long, userid : Long, topicid : Long, postdate : Date, forumid : Long, titletopic : String, subject : String, body : String) +Post(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer) +Post() +Post(id : Long) +Post(id : Long, user : User, topic : Topic) +getidpost() : Long +setidpost(idpost : Long) : void +sethtmlaccepted(accepthtml : boolean) : void +equals(other : Object) : boolean Post -serialversionuid : long = L -fileid : Long -filename : String -filepath : String -filesize : String -userfilename : String -downloads : Integer +PostFile(fileId : Long) +PostFile() +equals(obj : Object) : boolean PostFile -serialversionuid : long = L +postbody : String +PostText(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer, postbody : String) +PostText() +PostText(_pId : Long) PostText -userfrom : User -userto : User -topic : String -text : String -data : Date -allowbbcode : Integer = new Integer(0) -allowsmiles : Integer = new Integer(0) -attachsign : Integer = new Integer(0) -read : Integer = new Integer(0) +PrivMsg() +PrivMsg(p : PrivMsg) +PrivMsg(id : Long) +getidmsg() : Long +setidmsg(id : Long) : void PrivMsg +PrivMsgRecivied() +PrivMsgRecivied(p : PrivMsg) PrivMsgRecivied +PrivMsgSent() +PrivMsgSent(p : PrivMsg) PrivMsgSent -serialversionuid : long = L -lockupid : Long -keysearch : String -searchdate : Date -forumid : Long SearchLockUp -iduser : Long -idsession : String -ip : String -datasession : Date -user : User +getids() : Long +setids(id : Long) : void Session -_id : Long -_emoticon : String -_symbol : String -_filename : String +Smile(id : Long, emoticon : String, symbol : String, filename : String) +Smile(emoticon : String, symbol : String, filename : String) +Smile() +Smile(id : Long) +getid() : Long +setid(id : Long) : void +getemoticon() : String +setemoticon(emotion : String) : void +getsymbol() : String +setsymbol(symbol : String) : void +getfilename() : String +setfilename(imagefile : String) : void +equals(o : Object) : boolean Smile -serialversionuid : long = L -titletopic : String -datatopico : Date -user : User -posts : Set -visualizacoes : Integer -respostas : Integer -notifyme : Integer -topicstatus : Integer -topicmodel : Integer -lastpostdate : Date -pagelastpost : Integer -pagespertopic : List -lastpostid : Long -lastpostusername : String -lastpostuserid : Long -answernotifies : Set -favusertopics : Set +Topic(id : Long, titletopic : String, user : User, forum : Forum, posts : Set) +Topic() +Topic(id : Long) +Topic(id : Long, user : User, forum : Forum, posts : Set) +getidtopic() : Long +setidtopic(id : Long) : void +equals(other : Object) : boolean Topic -serialversionuid : long = L -user : String -passwordhash : String -name : String - String -user_posts : Long -admin : Integer -dataregistro : Date -posts : Set -topics : Set -localizacao : String -website : String -occupation : String -usersig : String -user_avatar : String -user_icq : String -user_interests : String -user_sig : String -user_aim : String -user_yim : String -user_msnm : String -_lastvisittimestamp : Date -user_lastvisit : Date -user_dateformat : String -user_allow_viewonline : String -hash_fpwd : String -show_mail : Integer -show_signature : Integer -userstatus : Integer -receivenews : Integer -usercode : String -forumtopusers : Set -postformatter : ProcessBBCode = new ProcessBBCode() -answernotifies : Set -favusertopics : Set +User(id : Long, user : String, passwordhash : String, name : String, String, user_posts : Long, posts : Set, topics : Set) +User() +User(id : Long, posts : Set, topics : Set) +User(id : Long) +getiduser() : Long +setiduser(iduser : Long) : void +equals(other : Object) : boolean +isadministrator() : boolean +getusersig_formated() : String +getlastvisittimestamp() : Date +setlastvisittimestamp(lastvisittimestamp : Date) : void User -comp_id : UserGroupPK +UserGroup(comp_id : UserGroupPK, jbbgroup : Group, user : User) +UserGroup() +UserGroup(comp_id : UserGroupPK) +equals(other : Object) : boolean UserGroup -groupid : Long -iduser : Long +UserGroupPK(groupId : Long, iduser : Long) +UserGroupPK() +equals(other : Object) : boolean UserGroupPK -rankid : Long -rankname : String -rankmin : Integer -rankmax : Integer -rankimage : String +compareto(object : Object) : int +equals(object : Object) : boolean UserRank +log : Log = LogFactory.getLog(VOObject.class) -id : Long VOObject test integration phpbb betweendbs search index analysis jdbc hibernate lucene entity feed +getcallerclass() : Class ClassLocator +main(args : String []) : void Demo ~aa() : void ISILog infra -LOG : Log = LogFactory.getLog(ApplicationContext.class) -KEY_APPLICATION_CONTEXT : String = "javabb.application.context" +getcontext() : ApplicationContext +getonlineguests() : Collection +getonlineregisteredusers() : Collection +isonline(user : User) : boolean ApplicationContext -log : Log = LogFactory.getLog(ApplicationContextFactory.class) -init : boolean -locations : List = new ArrayList() +addlocation(location : String) : ApplicationContextFactory +addlocation(location : File) : ApplicationContextFactory +containslocation(location : File) : boolean +containslocation(path : String) : boolean +init() : ApplicationContext ApplicationContextFactory +REPLACES : String[] = { "a", "e", "i", "o", "u", "c" } +PATTERNS : Pattern[] = null +compilepatterns() : void +replacespecial(text : String) : String CharFilter +getclassname() : String ClassLocator +realpath : String +showproperties : String = "" +theme : String = "" +domain : String = "" +forumname : String = "" +lang : String = "" +dateformat : String = "" +timeformat : String = "" +buttonlang : String = "" +topicspage : Integer +postspage : Integer +adminmail : String = "" +smtpserverhost : String = "" +smtpserverusername : String = "" +smtpserveruserpassword : String = "" + nofitytopic : String = "" +floodcontrol : String = "" +forumannouncetext : String = "" +activecaptcha : String = "" +Configuration() Configuration +getconf() : Configuration +refreshconfig() : void ConfigurationFactory +movetopicmailtemplate : String = "mail_move_topic.vm" +mpmailtemplate : String = "mp_mail.vm" +watchtopictemplate : String = "watch_topic.vm" +mailforgetpwd : String = "mail_forget_pwd.vm" +sendnewpassword : String = "send_new_password.vm" Constants -log : Log = LogFactory.getLog(getClass()) +contextinitialized(evt : ServletContextEvent) : void +contextdestroyed(evt : ServletContextEvent) : void ContextLoaderListener +dofilter(request : ServletRequest, response : ServletResponse, chain : FilterChain) : void CustomClickstreamFilter -log : Log = LogFactory.getLog(getClass()) +contextdestroyed(evt : ServletContextEvent) : void CustomClickstreamListener +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +setdatehourminute(dateparam : Date, hourminute : String, format : String) : Date +setdatesecond(dateparam : Date, second : int) : Date +getdataextenso(data : Date) : String +getdiasemana(data : Date) : String +getmesextenso(data : Date) : String +getdataabreviada(data : Date) : String +getdiadomes(data : Date) : String +getano(data : Date) : String +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateformat(date : Date, format : String) : String +gettotalofdays(month : int, year : int) : int +daterfcformat(date : Date) : String DateUtil #log : Log = LogFactory.getLog(DigitFormat.class) -currencyformat() : DecimalFormat +parservalue(paramvalue : String) : String +main(args : String []) : void DigitFormat +sendmail(mailfrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) : void +feedempregos : List = new ArrayList() +feedinfoblogs : List = new ArrayList() FeedConstantLists +uploadfile(multiwrapper : MultiPartRequestWrapper) : ArrayList +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper) : HashMap +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper, inputfilename : String, isavatar : boolean) : HashMap +getabsolutpathname(multiwrapper : MultiPartRequestWrapper) : String +deletefile(path : String, filename : String) : boolean +deletefilebylist(set : Set) : void +uploadfiles(req : HttpServletRequest, inputfilename : String, isavatar : boolean) : List FileTransfer -INSTANCE : JbbConfig = new JbbConfig() -numberofusers : int -totalmessagecount : int +getconfig() : JbbConfig +gettotalmessages() : int +gettotalusers() : int +getforumconfig() : ForumConfig JbbConfig +log : Log = LogFactory.getLog(LogWrappper.class) +ERROR(msg : String) : void +INFO(msg : String) : void +ERROR(reqId : String, msg : String) : void +INFO(reqId : String, msg : String) : void +TRACE(msg : String) : void +TRACE(reqId : String, msg : String) : void +DEBUG(msg : String) : void +DEBUG(reqId : String, msg : String) : void -createmsg(msg : String) : String -createmsg(reqid : String, msg : String) : String LogWrappper -localfile : FileInputStream = null -properties : Properties = null +MaintainProperties(file : FileInputStream) -loadproperties() : void +getproperty(nmproperty : String) : String MaintainProperties +MONITOR : Monitor = new Monitor() -Monitor() Monitor -log : Log = LogFactory.getLog(NotThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +NotThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void NotThreadMail +getguestsonline() : Collection +gettotalusersonline() : int +getusersonline() : Collection +getnumberusersonline() : int +getnumberguestesonline() : int Online -_pageitems : List -_pagenumber : int -_itemsperpage : int -_totalitemcount : int +PagedList(pageItems : List, pagenumber : int, itemsperpage : int, totalitemcount : int) +get(index : int) : Object +size() : int +getpageitems() : List +getpagenumber() : int -getitemsperpage() : int +gettotalitemcount() : int +gettotalpagecount() : int +isfirstpage() : boolean +islastpage() : boolean +isfirstpage(page : int) : boolean +islastpage(page : int) : boolean PagedList +getnropages(recordsperpage : long, nrorecords : long) : int +setpagelist(pagenumber : long, totalrows : long) : void +createquickpaging(nropages : int) : List Paging +replacehql(hql : String) : String +isint(param : String) : boolean +getlang(locale : String) : String +getcountry(locale : String) : String Parser -LOG : Log = LogFactory.getLog(UserContext.class) +setpmtransaction(pmtrans : PrivMsgTransaction) : void +getcountmessages() : int PMHelper +uploadpostfiles(post : Post, req : HttpServletRequest) : Set PostSupport -log : Log = LogFactory.getLog(ThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +ThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void +run() : void ThreadMail -DEFAULT_LAST_VISIT_TIMESTAMP : Date = new Date(0) +KEY_USER_CONTEXT : String = "javabb.user.context" -_lastvisittimestamp : Date = null -_readtopicids : Set = new HashSet() -_timereadtopic : Hashtable = new Hashtable() +_topicsincategory : Hashtable = new Hashtable() +_topicsinforum : Hashtable = new Hashtable() +getcontext() : UserContext +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +setforumtopics(forumid : Long, topics : List) : void +isactiveunreadforum() : boolean +setforumtopic(forumid : Long, topic : Topic) : void +settopicincat(catid : Long, topics : List) : void +setcattopic(catid : Long, topic : Topic) : void +setalltopicsincatasread(catid : Long) : void +getuser() : User +setuser(user : User) : void +isauthenticated() : boolean +deauthenticate() : void +getlastvisittimestamp() : Date +istopicread(topic : Topic) : boolean +settopicread(topicid : Long) : void +settopicunread(topicid : Long) : void UserContext -LOG : Log = LogFactory.getLog(Utils.class) -RANDOM : Random = new Random() +encrypt(str : String) : String +randomnumber() : String +validatewebsite(ws : String) : String +verifyurls(text : String) : String +replacehtml(texto : String) : String +getcodeuser(username : String) : String +avoidnull(string : String) : String +indexof(text : String, key : String) : List +isbetween(index : int, initcodepos : List, finalcodepos : List) : boolean +validate ( String) : boolean +compositeword(str : String) : boolean +main(args : String []) : void Utils #log : Log = LogFactory.getLog(VelocityHelper.class) +printobj(obj : Object) : String +isnull(obj : Object) : int +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateabrev(date : Date) : String +datenow() : String +dateextended() : String +dateextended(date : Date) : String +getpercentage(parcial : double, total : double) : String +daterfc() : String +daterfcformat(date : Date) : String +removehtml(text : String) : String +substring(txt : String, init : int, max : int) : String +escapebbcode(str : String) : String +formatdigitvalue(param : String) : String +formatfilename(filename : String) : String +captalizetitle(param : String) : String +parsestringtitle(text : String) : String +getlength(s : String) : int VelocityHelper ajax -serialversionuid : long = L -getrequest() : HttpServletRequest +addfavoritetopic(topicid : Long) : String +deletefavoritetopic(topicid : Long) : String +addwatchtopic(topicid : Long) : String +deletewatchtopic(topicid : Long) : String +spytemplate() : String +deletefile(fileid : Long) : String ActionFacade #log : Log = LogFactory.getLog(getClass()) -timer : Timer = new Timer() -online : Online -jbbconfig : JbbConfig -url : String #_page : int = -temp : String -captchafield : String -_pagedresult : PagedList +getapplication() : ApplicationContext +getpage() : int +setpage(page : int) : void +getpages() : List +getlastpage() : Integer +htmlescape(text : String) : String #setparameter(name : String, value : Object) : void #setviewobject(name : String, value : Object) : void +getsessionattribute(attributename : String) : Object +setsessionattribute(namesession : String, objectsession : Object) : void +removesessionattribute(attributename : String) : void +getpagedresult() : PagedList +setpagedresult(pagedresult : PagedList) : void +istopicread(topic : Topic) : boolean +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +checkcaptcha() : boolean +getuserlogged() : User +gettopicviews() : String ActionSuper -serialversionuid : long = L #_categoryid : Long #_forumid : Long #_topicid : Long #_postid : Long #_userid : Long #_smileid : Long #_badwordid : Long -subject : String -message : String #watchtopic : int -checksign : Integer #msgerrors : List #checkmessage() : void #checksubject() : void +setb(id : Long) : void +setc(id : Long) : void +sets(id : Long) : void +setf(id : Long) : void +setp(id : Long) : void +sett(id : Long) : void +setu(id : Long) : void +getbadwordid() : Long +getcategoryid() : Long +getsmileid() : Long +getforumid() : Long +getpostid() : Long +gettopicid() : Long +getuserid() : Long +getfeedempregos() : List +getfeedinfoblogs() : List BaseAction -singleton : Feeds -feeds : Map -Feeds() +getinstance() : Feeds +getfeed(name : String) : List Feeds -link : String -desc : String -title : String -date : Date +compareto(o : Object) : int ItenFeed +getfeeds(feedurl : String) : List ReadRSS ~timer : Timer ~channel : ChannelIF ~timesup : boolean = false ~blogfeedurl : String +ReadRSSTimerTask(seconds : int) +getchannelif(blogfeedurl : String) : ChannelIF ReadRSSTimerTask +run() : void RemindTask +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) -icon : Icon -channeltitle : String -itemsiterator : Iterator -item : RSSItem +RSSReader(feed : String) +ifhasnextthennext() : boolean +getitemtitle() : String +getdescription() : String +getlink() : String +getdate() : Date +getpubdate() : Date RSSReader +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) +compare(arg0 : Object, arg : Object) : int DateComparator +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void IBadWordDAO +ID : int = +SORTING_POSITION : int = 2 +NAME : int = 3 +countallposts() : int +countalltopics() : int +countallusers() : int +getstatistics() : Stats +load(categoryid : Long) : Category +findall(orderingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void ICategoryDAO +load(id : Long) : Forum +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +insertforum(forum : Forum) : Forum +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List IForumDAO IForumTopUserDAO IGroupDAO +updateindexposts() : List IIndexLucenePostsDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List INewsDAO +load(id : Long) : Post +findlastpost() : Post +findlastposts(limit : int) : List +findbytopicdesc(topic : Topic) : List +findbyforumdesc(forum : Forum) : List +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, numitems : int) : List +search(query : String, page : int) : List +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, rowsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +updatestate(post : Post) : void +create(post : Post) : Long +delete(postid : Long) : void +countallposts() : int +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void IPostDAO +updatedownloads(fileid : Long) : void IPostFileDAO +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void IPrivMsgReciviedDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void IPrivMsgSentDAO +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void IRefreshStatsDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(emoticonid : Long) : void +update(s : Smile) : void ISmileDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +create(topic : Topic) : Long +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +favoritetopicbyuser(userid : Long) : List +favoritetopics() : List ITopicDAO +loaduser(userid : Long) : User +findby ( String) : List +findby ( String, userid : Long) : List +loadbyusername(name : String) : User +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, page : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +update(user : User) : void +findall(pagenumber : int, itemsperpage : int) : List +create(user : User) : Long +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank IUserDAO +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void IUserRankDAO +createhashcode(userid : Long, hashcode : String) : void IUserSecurityDAO +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void BadWordHibernateDAO ~FIELD_NAMES : String[] = new String[] { null, "idcategory", "catorder", "namecategory" } +load(id : Long) : Category +countallposts() : int +countalltopics() : int +countallusers() : int #getfieldname(i : int) : String +getstatistics() : Stats +findall(sortingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void CategoryHibernateDAO -log : Log = LogFactory.getLog(ForumHibernateDAO.class) -posttransaction : PostTransaction -usertransaction : UserTransaction +load(id : Long) : Forum +insertforum(forum : Forum) : Forum +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List ForumHibernateDAO ForumTopUserHibernateDAO GroupHibernateDAO #pathvo : String = "org.javabb.vo." +deletefrom(query : String) : void #countrowsoftable(vo : String, index : String) : Integer #countrowsbywhere(nmclass : String, index : String, whereequalfield : String [], whereequalvalue : String []) : Integer #load(obj : VOObject) : VOObject #getlist(condicao : String) : List #getlist(condicao : String, firstres : int, maxres : int) : List #findall(nmclass : Class, orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String []) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #executesql(sql : String) : void #loadbyuniqueattribute(c : Class, attributename : String, attributevalue : Object) : Object #findbyattribute(c : Class, attributename : String, attributevalue : Object) : List #countrows(c : Class, indexattributename : String) : int #countrowswhere(c : Class, indexattributename : String, whereclause : String, params : Object []) : int #find(c : Class, where : String, params : Object [], orderby : String, pagenumber : int, itemsperpage : int) : List #find(hql : String, params : Object [], pagenumber : int, itemsperpage : int) : List #findall(c : Class, orderby : String, pagenumber : int, itemsperpage : int) : List #getfieldname(i : int) : String #findall(c : Class, sortingfields : int []) : List #load(cls : Class, id : Long) : Object +add(obj : Object) : Object +loadall(obj : Object) : List +load(obj : Object, id : Long) : Object +delete(obj : Object) : void HibernateDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List NewsHibernateDAO -searcher : LuceneSearcher -indexer : Indexer +load(id : Long) : Post +create(post : Post) : Long +delete(postid : Long) : void +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, itemsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +findbytopicdesc(topic : Topic) : List +findlastposts(limit : int) : List +findlastpost() : Post +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, itemsperpage : int) : List +searchidsbyqueryandfields(query : String, forumid : Long) : List -search(ids : List, start : int, limit : int) : List +search(query : String, page : int) : List +countallposts() : int +findbyforumdesc(forum : Forum) : List +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +updatestate(post : Post) : void PostHibernateDAO -ids : List -LuceneComparator(ids : List) +compare(o : Object, o2 : Object) : int LuceneComparator +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void PrivMsgReciviedHibernateDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void PrivMsgSentHibernateDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(id : Long) : void +update(s : Smile) : void SmileHibernateDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +create(topic : Topic) : Long +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +favoritetopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopics() : List TopicHibernateDAO #log : Log = LogFactory.getLog(UserHibernateDAO.class) -usersecuritydao : IUserSecurityDAO +loaduser(userid : Long) : User +update(user : User) : void +create(user : User) : Long +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +findby ( String, userid : Long) : List +findby ( String) : List +loadbyusername(username : String) : User +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, pagenumber : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +findall(pagenumber : int, itemsperpage : int) : List +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank UserHibernateDAO #log : Log = LogFactory.getLog(getClass()) -posttransaction : PostTransaction +updateindexposts() : List JdbcIndexLucenePosts +updatedownloads(fileid : Long) : void JdbcPostFileDAO -log : Log = LogFactory.getLog(JdbcRefreshStatsDAO.class) +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +refreshsession(obj : Object) : void JdbcRefreshStatsDAO +add(obj : Object) : Object JdbcSuper -log : Log = LogFactory.getLog(this.getClass()) +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void +refreshsession(obj : Object) : void JdbcUserRankDAO -log : Log = LogFactory.getLog(JdbcUserSecurityDAO.class) +createhashcode(userid : Long, hashcode : String) : void +refreshsession(obj : Object) : void JdbcUserSecurityDAO +STOP_WORDS : String[] = new String[] { "0", "", "2", "3", "4", "5", "6", "7", "8", "9", "a", "ainda", "alem", "algum", "alguma", "alguns", "ali", "além", "ambas", "ambos", "ano", "anos", "antes", "ao", "aonde", "aos", "apenas", "apos", "aquela", "aquele", "aqueles", "as", "assim", "ato", "até", "b", "bem", "boa", "bom", "c", "cada", "cargo", "carta", "casa", "com", "como", "consta", "contra", "contudo", "cuja", "cujas", "cujo", "cujos", "d", "da", "daquele", "dar", "das", "data", "de", "dela", "dele", "deles", "demais", "depois", "desde", "desta", "deste", "deu", "dia", "dias", "dispoe", "dispoem", "dito", "diversa", "diversas", "diversos", "diz", "do", "dois", "dos", "dr", "duas", "durante", "e", "ela", "elas", "ele", "eles", "em", "enfim", "entao", "entre", "então", "era", "eram", "essa", "essas", "esse", "esses", "esta", "estas", "estava", "este", "estes", "f", "fazer", "fez", "ficou", "fim", "foi", "foram", "fr", "g", "gente", "geral", "h", "ha", "havia", "hoje", "há", "i", "isso", "isto", "j", "já", "k", "l", "lhe", "lhes", "logo", "lugar", "m", "maior", "mais", "mas", "me", "mediante", "menos", "mesma", "mesmas", "mesmo", "mesmos", "muito", "muitos", "n", "na", "nao", "nas", "nem", "nesse", "nesta", "neste", "no", "nome", "nos", "nossa", "nosso", "nossos", "nova", "novo", "não", "nós", "o", "onde", "ordem", "os", "ou", "outra", "outras", "outro", "outros", "p", "para", "parte", "pela", "pelas", "pelo", "pelos", "perante", "pois", "por", "porque", "portanto", "porém", "pouco", "propios", "proprio", "q", "quais", "qual", "qualquer", "quando", "quanto", "que", "quem", "quer", "r", "rua", "s", "se", "segundo", "seja", "sem", "sempre", "sendo", "ser", "seu", "seus", "sob", "sobre", "sua", "suas", "são", "só", "sôbre", "t", "tal", "tambem", "também", "tanto", "tem", "tendo", "ter", "teu", "teus", "teve", "tinha", "tinham", "toda", "todas", "todo", "todos", "três", "tua", "tuas", "tudo", "tão", "u", "um", "uma", "umas", "uns", "v", "veio", "vem", "vez", "vê", "w", "x", "y", "z", "à", "às", "é", "êle" } -stopwords : Set = new HashSet() +PortugueseAnalyzer() +PortugueseAnalyzer(stopWords : String []) +PortugueseAnalyzer(words : String) +tokenstream(fieldname : String, reader : Reader) : TokenStream -makearray(words : String) : String [] PortugueseAnalyzer -REPLACES : String[] -PATTERNS : Pattern[] +SpecialCharFilter(in : TokenStream) +next() : Token -replacespecial(text : String) : String SpecialCharFilter -logger : Log = LogFactory.getLog(Indexer.class) -path : Directory -analyzer : Analyzer -optimize : boolean -createnew : boolean -initialized : boolean = false -monitor : Object = org.javabb.infra.monitor.monitor +Indexer(analyzer : Analyzer, path : Directory, opt : boolean, createnew : boolean) +Indexer(analyzer : Analyzer, path : Resource, opt : boolean, createnew : boolean) +isoptimize() : boolean +index(post : Post) : void -posttodocument(post : Post) : Document +createindex(posts : List) : void +update(post : Post) : void +delete(post : Post) : void +delete(postid : Long) : void -makewriter() : IndexWriter -indexdocument(doc : Document) : void -deleteusingterm(term : Term) : void -initialize() : void Indexer +LuceneIndexerException() +LuceneIndexerException(message : String) +LuceneIndexerException(message : String, cause : Throwable) +LuceneIndexerException(cause : Throwable) +LuceneIndexerException(ex : Exception) LuceneIndexerException -logger : Log -monitor : Object = org.javabb.infra.monitor.monitor -lucenepath : Directory -analyzer : Analyzer +LuceneOptimizeIndexTimerTask(lucenePath : Directory, analyzer : Analyzer) +LuceneOptimizeIndexTimerTask(lucenePath : Resource, analyzer : Analyzer) +run() : void LuceneOptimizeIndexTimerTask -cssclass : String -cssstyle : String +CSSFormatter(cssClass : String) +CSSFormatter(properties : Map) +highlightterm(originaltext : String, tokengroup : TokenGroup) : String -dohighlightterm(originaltext : String) : String -constructstyle(cssproperties : Map) : String CSSFormatter -CONTENTS_FIELD : String = "contents" -analyzer : Analyzer = new PortugueseAnalyzer() +highlight(text : String, query : String, separator : String, fragsize : int, numfrags : int, complete : boolean) : String -adddocument(actualtext : String, ramdir : Directory) : void -avoidempty(string : String, text : String) : String LuceneHighlighter +search(query : String [], field : String []) : List +search(query : String, field : String []) : List LuceneSearcher -path : Directory -analyzer : Analyzer -monitor : Object = org.javabb.infra.monitor.monitor +SimpleLuceneSearcher(path : Directory, analyzer : Analyzer) +SimpleLuceneSearcher(path : Resource, analyzer : Analyzer) +search(query : String, fields : String []) : List +search(query : String [], fields : String []) : List SimpleLuceneSearcher +main(args : String []) : void JavaBB_DBScript Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/javabb3?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" -javabb_url : String = "jdbc:postgresql://localhost/javabb" -javabb_user : String = "postgres" -javabb_pass : String = "postgres" -javabb_driver : String = "org.postgresql.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getdborigin() : Connection #getdbdest() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_post_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_post_text Jbb_topics Jbb_users +main(args : String []) : void JavaBB_DBScript JbbMerge Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/carlos?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" #phpbb_prefix : String = "phpbb_" -javabb_url : String = "jdbc:mysql://localhost:3306/bb_carlos?unicode=true" -javabb_user : String = "root" -javabb_pass : String = "root" -javabb_driver : String = "com.mysql.jdbc.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getphpbbconnection() : Connection #getjavabbconnection() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_posts_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_posts_text Jbb_topics Jbb_users +feedtitle : String +feedurl : String FeedEmpregoVH +feedtitle : String +feedurl : String FeedInfoBlogsVH ~indexer : Indexer ~directory : RAMDirectory +main(args : String []) : void +IndexerTest(name : String) #setup() : void +testindex() : void -verifydocs() : void +testupdate() : void +testdeletepost() : void +testdeletelong() : void -getpost() : Post IndexerTest +testando() : String JavaBBDWR -_posttransaction -_forumdao -usersecuritydao -indexlucenepostsdao -category -badword -posttransaction -topictransaction -topictransaction -user -_categorytransaction -topic #forum -_badworddao -lastpost -_topicdao -forumtransaction -usertransaction -_smile -_usertransaction -_categorytransaction -_topic -_privmsgsentdao -_usertransaction -_posttransaction -_badwordtransaction -_usertransaction -_privmsgrecivieddao -indexer -userformatter -online -_smiledao -postfile -comp_id -newstransaction -userfrom -postfiledao -_usertransaction -usertransaction -indexer -_post -postformatter -newsstatus -genericdao -_userdao -posttransaction -pm -usertransaction -posttransaction -_userrankdao -lastuserregistered -pmtransaction -_categorytransaction -newsdao -singleton -user -posttransaction -usertransaction -comp_id -comp_id indexer -topic -_refreshstatsdao -_pagedresult -postformatter -jbbconfig -newsletter +comp_id -forum +MONITOR -_post -searcher -user -userto -_usertransaction -forumtransaction -newsletter +user -user -_forumtransaction -post -usertransaction -posttransaction -user -_forum -config -_topictransaction +forum -group -_topic -badwordtransaction -_user -topic -_postformatter -posttransaction -forumconfigview -comp_id -_categorytransaction -forumtransaction -INSTANCE -stats -_smiletransaction -comp_id -_postdao -indexer -forumtransaction #forumtransaction -usersecuritydao -_forumtransaction -postformatter -topictransaction -postformatter -forum -group -stats -pmtrans -forum -_topicdao -category -posttransaction -_user -userformatter -posttransaction -categorydao -group -user -badwordtransaction -_smiletransaction -user -usertransaction -indexer Sören Frey The CloudMIG Approach April, / 43

10 Migration to the Cloud - Challenges (cont d) Motivation How to detect CEC violations? Example: JavaBB 0.99 and Google App Engine for Java Class responsible for 60% of CEC violations (58 out of 98) org javabb dao vo transaction migration lucene interceptor component action quartz dwr bbcode log infra exception vh thread -badwords : List = new ArrayList() -id : Long -word : String -replacement : String +listbadwords() : String +loadbadword() : String +delbadword() : String +editbadword() : String +addbadword() : String BadWordAction -lstcategory : List = new ArrayList() +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +listcategory() : String +loadcategory() : String -setstaffhome() : void +markalltopicsincatasread() : String +updatecategory() : String +insertcategory() : String +showeditcategory() : String +listallcategory() : String +deletecategory() : String CategoryAction -serialversionuid : long = L -fileid : Long -attachment : byte[] -bytesa : int ~bis : BufferedInputStream +loadfile() : String +getdownloadfile(response : HttpServletResponse, attachment : byte [], bis : BufferedInputStream) : void FileAction #forums : List = new ArrayList() -removeforum : int = 0 -themes : List = new ArrayList() -langs : List -btnlang : List = new ArrayList() -destorder : Integer -position : Integer +forumconfig() : String +listaforum() : String +loadforum() : String +updateforum() : String +insertforum() : String +deleteforum() : String +sortforum() : String +saveforumconfig() : String +sortuserrankbyforum() : String ForumAction GroupAction +createindex() : String LuceneIndexAction -serialversionuid : long = L -newslist : List +getnews() : String +loadnews() : String +insert() : String +delete() : String +edit() : String +activenews() : String NewsAction -serialversionuid : long = L -_posts : List = new ArrayList() -quote : String -whoquote : String -attachfiles : String[] +setforumtransaction(forumtransaction : ForumTransaction) : void +setusertransaction(usertransaction : UserTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +doupload() : String +listapost() : String +returnquotemsg() : String +loadpost() : String +updatepost() : String +updateposttopic() : String +insertpost() : String +inserttopicpost() : String +deletepost() : String +searchauthor() : String +listunanswaredposts() : String +listalllastposts() : String +getpost() : Post +getposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +gettopic() : Topic PostAction -lstmsgs : List -title : String -userid : Long -username : String -msg : String -act : String -idpm : Long[] +inbox() : String +outbox() : String +readin() : String +readout() : String +deleteselectedinbox() : String +deleteinbox() : String +deleteselectedoutbox() : String +deleteoutbox() : String +send() : String +newpm() : String +quote() : String +reply() : String +externalsend() : String +formattexttobbcode(text : String) : String PrivMsgAction -serialversionuid : long = L +EMPTY : String = "empty" -query : String -page : int -totalrowsfound : int -empty : boolean = false -typesearch : Integer = new Integer() -posts : List +getlstcategory() : List +searchinposts() : String +formatpost(post : Post) : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +execute() : String +search() : String -maintainsearchlist(query : String, forumid : Long) : void +formatpostwithoutbbcode(post : Post) : String +isempty() : boolean SearchAction -_smiles : List = new ArrayList() -_emoticon : String = "" -_symbol : String = "" -_filename : String = "" +setfilename(filename : String) : void +setsymbol(symbol : String) : void +setemoticon(emotion : String) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +listsmiles() : String +loadsmile() : String +removesmile() : String +updatesmile() : String +addsmile() : String +getsmile() : Smile +getsmiles() : List SmileAction -serialversionuid : long = L -_topics : List = new ArrayList() -_movetoforum : Long -_reverseposts : List = new ArrayList() -_posts : List = new ArrayList() -lstcategory : List = new ArrayList() -_users : List = new ArrayList() -userranks : List = new ArrayList() -message : String = "" -_founditemstotalcount : long -favoritetopic : int +setcategorytransaction(categorytransaction : CategoryTransaction) : void +setforumtransaction(forumtransaction : ForumTransaction) : void +settopictransaction(topictransaction : TopicTransaction) : void +setposttransaction(posttransaction : PostTransaction) : void +setpostformatter(postformatter : PostFormatter) : void +setusertransaction(transaction : UserTransaction) : void +listatopics() : String +loadtopic() : String +showtopic() : String +loadtopicnosumview() : String +deletetopic() : String +listunreadtopics() : String +locktopic() : String +unlocktopic() : String +movetopic() : String +reviewtopic() : String +watchtopicbyuser() : String +watchtopicsbytopic() : String +favoritetopicbyuser() : String +favoritetopicsbytopic() : String +findalllasttopics() : String +findfavoritetopics() : String +gettopic() : Topic +gettopics() : List +getmovetoforum() : Long +setmovetoforum(movetoforum : Long) : void +getreverseposts() : List +formatpost(post : Post) : String +formatescaped(text : String) : String +getposts() : List +getforum() : Forum +getfounditemstotalcount() : long +getusers() : List +setusers(_users : List) : void +getpost() : Post +setpost(_post : Post) : void TopicAction -serialversionuid : long = L -lstusersportal : List = new ArrayList() -cookie : int = -sortby : String -sortorder : String -username : String -userhash : String -userranks : List = new ArrayList() -confirmpassword : String -file : File -contenttype : String -filename : String +setcategorytransaction(categorytransaction : CategoryTransaction) : void +loadusersportal() : String +deleteusersportal() : String +viewlegend() : String +loadeditusersportal() : String -validateedituser(editbyadmin : boolean) : String +updateusersportal() : String +updateuserbyadmin() : String +manageadmrights() : String -validateinsertuser() : String +insertusersportal() : String +uploadavatar() : String +verifylogin() : String +logout() : String +listusersbywhere() : String +finduserbyusername() : String +verifyforgetpwd() : String +listallregisteredusers() : String +listbyusername() : String +uploadprofileimage() : String +getuser() : User UserAction -CR_LF : String = "(?:\r\n \r \n)?" -accepthtml : boolean = false -acceptbbcode : boolean = true +prepareposttext(texto : String) : String -process(string : String) : String -processcode(buffer : StringBuffer) : void +escapebbcode(content : String) : String -escapehtml(content : String) : String -replaceall(str : String, chars : char [], replacement : String []) : String -processnestedtags(buffer : StringBuffer, tagname : String, opensubstwithparam : String, closesubstwithparam : String, opensubstwithoutparam : String, closesubstwithoutparam : String, internalsubst : String, processinternaltags : boolean, acceptparam : boolean, requiresquotedparam : boolean) : void ProcessBBCode +base : CharSequence +start : int +length : int +param : String = null +MutableCharSequence() +MutableCharSequence(base : CharSequence, start : int, length : int) +length() : int +charat(index : int) : char +subsequence(pstart : int, end : int) : CharSequence +reset(pbase : CharSequence, pstart : int, plength : int) : CharSequence MutableCharSequence +IMAGE_JPEG : int = 0 +IMAGE_PNG : int = +resizeimage(imgname : String, type : int, maxwidth : int, maxheight : int) : BufferedImage +resizeimage(image : Image, type : int, maxwidth : int, maxheight : int) : BufferedImage +saveimage(image : BufferedImage, tofilename : String, type : int) : boolean +savecompressedimage(image : BufferedImage, tofilename : String, type : int) : void +createbufferedimage(image : Image, type : int, w : int, h : int) : BufferedImage +hasalpha(image : Image) : boolean +resizeimage(postfile : PostFile) : void +main(args : String []) : void ImageUtils -hashnews : HashMap = new HashMap() +getstatusnews(idnews : Long) : boolean +setstatusnews(idnews : Long, status : Boolean) : void NewsletterStatus #log : Log = LogFactory.getLog(this.getClass()) +setbadwordtransaction(badwordtransaction : BadWordTransaction) : void +setsmiletransaction(smiletransaction : SmileTransaction) : void +formatpost(post : Post) : String +formatwithoutbbcode(post : Post) : String +formattexttobbcode(texttobbcode : String) : String +formatescaped(text : String) : String PostFormatter +topicviews : String = "" +addspytopic(topicid : Long, topictitle : String, forumname : String, forumid : Long, userid : Long, username : String) : void +set8messages(values : Map) : void Spy +getuserrank(postcount : Long) : UserRank +getuserstatus(user : User) : int UserFormatter #log : Log = LogFactory.getLog(VelocityTemplate.class) +maketemplate(velvalues : Map, template : String) : String VelocityTemplate +ALL_PAGES : int = - +add(obj : Object) : Object DAOConstants -serialversionuid : long = L +ExtensionNotAllowedException(err : String) ExtensionNotAllowedException -serialversionuid : long = L +FieldException(str : String) FieldException -serialversionuid : long = L +FileTransferException(err : String) FileTransferException #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String ConfigInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -_isflood : boolean = false #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String DelayInterceptor #log : Log = LogFactory.getLog(this.getClass()) +destroy() : void +init() : void +intercept(actioninvocation : ActionInvocation) : String ExceptionInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginAdminInterceptor #before(invocation : ActionInvocation) : void #after(invocation : ActionInvocation, result : String) : void +intercept(invocation : ActionInvocation) : String LoginInterceptor #logger : Log = LogFactory.getLog(LuceneIndexerInterceptor.class) +LuceneIndexerInterceptor() +LuceneIndexerInterceptor(index : Indexer) +invoke(invocation : MethodInvocation) : Object LuceneIndexerInterceptor ~allowedbeans : String = "" +setallowedbeans(allowedbeans : String []) : void +intercept(invocation : ActionInvocation) : String +destroy() : void +init() : void ParameterInterceptor +destroy() : void +init() : void +intercept(arg0 : ActionInvocation) : String QueryFormatInterceptor -AUTOMATIC_LOGIN_COOKIE : String = "automatic_cookie_login" #after(invocation : ActionInvocation, result : String) : void #before(invocation : ActionInvocation) : void +addcookie(u : User) : void +getcookie() : User +removecookie() : void VerifyCookieInterceptor #_log : Log = LogFactory.getLog(this.getClass()) -indexposts() : void #executeinternal(arg0 : JobExecutionContext) : void IndexPostsJob #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshFeeds #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void RefreshUserRankForum #_log : Log = LogFactory.getLog(this.getClass()) #executeinternal(arg0 : JobExecutionContext) : void UserSecurityCodeRenew #_log : Log = LogFactory.getLog(this.getClass()) -users : List +NewsThread() +NewsThread(users : List, newsletter : Newsletter) +run() : void NewsThread +badwords : List +setbadworddao(dao : IBadWordDAO) : void +listall() : List +verifybadwords(post : String) : String +getbadword(id : Long) : BadWord +delete(badword : BadWord) : void +update(badword : BadWord) : void +save(badword : BadWord) : void BadWordTransaction -forumtransaction : ForumTransaction -topictransaction : TopicTransaction +listcategory() : List +findall() : List +deletecategory(cat : Category) : void +loadcategory(idcat : Long) : Category +obtaincategory(category : Category) : Category +countallposts() : long +countallusers() : long +countalltopics() : long +lastregistereduser() : Stats +updatecategory(catid : Long, cat : Category) : void +insertcategory(cat : Category) : void +updateunreadforuns(lstcategory : List) : void CategoryTransaction +setforumdao(forumdao : IForumDAO) : void +setuserrankdao(rankdao : IUserRankDAO) : void +setrefreshstatsdao(refreshstatsdao : IRefreshStatsDAO) : void +loadforum(id : Long) : Forum +findall() : List +findall(category : Category) : List +findnrototalforuns() : Long +deleteforum(forum : Forum) : void +transferforum(forum : Forum, forumto : int) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +update(forumid : Long, forum : Forum) : void +insertforum(forum : Forum) : Forum +listbuttons() : List +saveconfigforum(forum : ForumConfigView) : void +sortforuns(idcategory : Long, destorder : Integer, position : Integer) : void +setunreadforumids() : void +refreshforumuserrank() : void +feedempregos() : List +feedinfoblogs() : List ForumTransaction GroupTransaction #_log : Log = LogFactory.getLog(this.getClass()) +getnews() : List +loadnews(id : Long) : Newsletter +insertnews(news : Newsletter) : void +deletenews(news : Newsletter) : void +updatenews(news : Newsletter) : void +sendnewsletter(id : Long) : void NewsTransaction -_usertransaction : UserTransaction +setusertransaction(usertransaction : UserTransaction) : void +setpostdao(postdao : IPostDAO) : void +settopicdao(topicdao : ITopicDAO) : void +loadpost(id : Long) : Post +findbytopic(topicid : Long, pagenumber : int) : List +findidlastpost() : int +findbytopicdesc(topic : Topic) : Post +findpagesbytopic(topic : Topic) : List +findlastpostbyforum(forum : Forum) : Post +getpageoflastpostbytopic(topic : Topic) : Integer +findcountofpostsbyforum(forum : Forum) : Integer +candeletepost(post : Post) : boolean +deleteallpostsbytopic(topic : Topic) : void +listpostsbytopicrev(topic : Topic) : List +listpostsbyuser(userid : Long, pagenumber : int) : List +listunanswaredposts(pagenumber : int) : List +findbyquery(query : String, forumid : Long, pagenumber : int) : List +gettotalrowsoflucene(query : String, forumid : Long) : int +updatepost(post : Post) : void +findlasposts() : List +findallbytopicdesc(topic : Topic) : List +findinposts(query : String, page : int) : List +notifyusertopicbymail(topic : Topic) : void +nofitywatchusers(topic : Topic, url : String, message_i8n : String, message2_i8n : String, topic_i8n : String, watch_i8n : String) : void +indexpost(post : Post) : void +createpost(post : Post) : Long +deletepost(postid : Long) : void +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +insertsearchlockup(query : String, forumid : Long) : void PostTransaction -_usertransaction : UserTransaction +PrivMsgTransaction() +setprivmsgrecivieddao(privmsgrecivieddao : IPrivMsgReciviedDAO) : void +setprivmsgsentdao(privmsgsentdao : IPrivMsgSentDAO) : void +setusertransaction(usertransaction : UserTransaction) : void +getuserinbox(u : User) : List +countmsgbyuser(u : User) : int +getuseroutbox(u : User) : List +send(p : PrivMsg) : Long +deletesent(p : PrivMsg) : void +deleterecivied(p : PrivMsg) : void +loadsent(p : PrivMsg) : PrivMsg +loadrecivied(p : PrivMsg) : PrivMsg +deleteselectedinbox(list : List) : void +deleteselectedoutbox(list : List) : void +asprivmsglist(id : Long []) : List +delegat (message_8n : String, iduserto : Long, mpid : Long) : void -sendmailtouser(message_8n : String, pmid : Long, usermail : String) : void PrivMsgTransaction -_smilecache : List +setsmiledao(smiledao : ISmileDAO) : void +addsmile(emotion : String, symbol : String, filename : String) : void +listall() : List +getsmile(id : Long) : Smile +delete(emoticonid : Long) : void +updatesmile(emoticonid : Long, emotion : String, symbol : String, filename : String) : void +replacesmiles(text : String) : String SmileTransaction +settopicdao(topicdao : ITopicDAO) : void +findall() : List +getlasttopicsbylastposts(forumid : Long, pagenumber : int) : List +getalltopicperforum(forumid : Long) : List -settopicidsbylist(topics : List) : List -putarraytopics(fromarrtopics : List, toarrtopics : List) : void +loadtopicforvisualization(id : Long) : Topic +findidlasttopic() : int +updatedateposttopic(topicid : Long, dt : Date) : void +sumnumberreplysbytopic(topicid : Long) : void +subnumberreplysbytopic(lng : Long) : void +findcountoftopicsbyforum(forum : Forum) : Integer +locktopic(topic : Topic) : void +unlocktopic(topic : Topic) : void +movetopic(topic : Topic, idforumdest : Long, message : String, ffrom_i8n : String, fto_i8n : String, topic_i8n : String) : void +loadtopic(id : Long) : Topic +createtopic(topic : Topic, lastpostdate : Date) : Long +deletetopic(topicid : Long) : void +updatetopic(topic : Topic) : void +listunreadtopics(pagenumber : int) : List +iswatchtopic(topicid : Long, userid : Long) : int +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +watchtopicsbyuserid(userid : Long) : List +favoritetopicsbyuserid(userid : Long) : List +watchtopicsbytopic(topicid : Long) : List +favoritetopicsbytopic(topicid : Long) : List +favoritetopics() : List +findlasttopics() : List +isfavoritetopic(topicid : Long, userid : Long) : int TopicTransaction #log : Log = LogFactory.getLog(getClass()) +add(instance : Object) : void +loadall(instance : Object) : List +load(instance : Object, id : Long) : Object +delete(instance : Object) : void Transaction -userrankscache : List +setuserdao(userdao : IUserDAO) : void +getuser(userid : Long) : User +sumnumbermsguser(userid : Long) : void +subnumbermsguser(userid : Long) : void +verifylogin(name : String, passwd : String) : User +verifyusercode(userid : Long, usercode : String) : User +finduserbyusername(username : String) : User +finduserlistbyusername(username : String) : List +is valid( String, userid : Long) : boolean +is valid( String) : boolean +lastuserregistered() : User +deleteuser(user : User) : void +listallregisteredusers(sortby : String, sortorder : String, pagenumber : int) : List +listusersbywhere(user : User, pagenumber : int) : List +updateprofileuser(_user : User, byadmin : boolean) : User +updateamrights(_user : User) : void +createuser(user : User) : Long +updatevisittimestamp() : void +sendsecuritycode(user : User, lang : Map) : void +verifyforgetpwd(userid : Long, hash : String, lang : Map) : boolean +getuserranks() : List +getuserrank(postcount : Long) : UserRank -getuniqueuserrankbycache(postcount : Long) : UserRank +renewusersecuritycode() : void +updateavatar(imgavatar : String, userid : Long) : User UserTransaction +getdomain() : String +getforumname() : String +getlang() : String +gettheme() : String +getdateformat() : String +getpostspage() : String +gettimeformat() : String +gettopicspage() : String +getbuttonlang() : String +getnotifytopic() : String +getsmtphost() : String +getsmtppassword() : String +getsmtpuser() : String +getadminmail() : String +getfloodcontrol() : String +getforumannouncetext() : String +getactivecaptcha() : String ForumConfig -theme : String -domain : String -forumname : String -lang : String -dateformat : String -timeformat : String -buttonlang : String -topicspage : String -postspage : String -notifytopic : String -smtphost : String -smtpuser : String -smtppassword : String -adminmail : String -floodcontrol : String -forumannouncetext : String -activecaptcha : String ForumConfigView -idstats : Long -recordusersonline : Long -totalpostcount : Integer -totaltopiccount : Integer -lastregistereduserid : Long -lastregisteredusername : String -totalregisteredusers : Integer Stats -comp_id : AnswerNotifyPK -user : User -topic : Topic +AnswerNotify(comp_id : AnswerNotifyPK, user : User, topic : Topic) +AnswerNotify() +AnswerNotify(comp_id : AnswerNotifyPK) +equals(other : Object) : boolean AnswerNotify -idtopic : Long -iduser : Long +AnswerNotifyPK(idTopic : Long, iduser : Long) +AnswerNotifyPK() +equals(other : Object) : boolean AnswerNotifyPK -word : String -replacement : String +BadWord() +BadWord(id : Long) +BadWord(word : String, replacement : String) +BadWord(id : Long, word : String, replacement : String) +getidbadword() : Long +setidbadword(id : Long) : void BadWord -namecategory : String -catorder : Integer -foruns : List +getidcategory() : Long +setidcategory(id : Long) : void Category -serialversionuid : long = L -comp_id : FavUserTopicPK -user : User -topic : Topic +FavUserTopic(comp_id : FavUserTopicPK, user : User, topic : Topic) +FavUserTopic(topic : Topic) +FavUserTopic() +FavUserTopic(comp_id : FavUserTopicPK) +equals(other : Object) : boolean FavUserTopic -serialversionuid : long = L -idtopic : Long -iduser : Long +FavUserTopicPK(idTopic : Long, iduser : Long) +FavUserTopicPK() +equals(other : Object) : boolean FavUserTopicPK -nome : String -descricao : String -forumstatus : Integer -topics : Set -forumorder : Integer -topiccount : Long -postcount : Long -lastpagepost : Long -lastpostusername : String -lastpostuserid : Long -lastpostid : Long -lastpostdate : Date -lasttopicid : Long -forumtopusers : Set +Forum() +Forum(id : Long) +Forum(name : String, description : String, sortingposition : Integer, status : Integer) +Forum(id : Long, name : String, description : String, sortingposition : Integer, status : Integer, topics : Set) +getidforum() : Long +setidforum(id : Long) : void +equals(other : Object) : boolean Forum +comp_id : ForumTopUserPK +user : User -postcount : Long -daterow : Date ForumTopUser -idforum : Long -iduser : Long +equals(other : Object) : boolean ForumTopUserPK -groupid : Long -groupname : String -user : User -usergroups : Set -GroupModerators : Set -GroupPermissions : Set +Group(groupId : Long, groupname : String, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +Group() +Group(groupId : Long, user : User, usergroups : Set, GroupModerators : Set, GroupPermissions : Set) +getgroupmoderators() : Set +setgroupmoderators(groupmoderators : Set) : void +getgrouppermissions() : Set +setgrouppermissions(grouppermissions : Set) : void +equals(other : Object) : boolean Group -comp_id : GroupModeratorPK +GroupModerator(comp_id : GroupModeratorPK, forum : Forum, jbbgroup : Group) +GroupModerator() +GroupModerator(comp_id : GroupModeratorPK) +equals(other : Object) : boolean GroupModerator -groupid : Long -idforum : Long +GroupModeratorPK(groupId : Long, idforum : Long) +GroupModeratorPK() +equals(other : Object) : boolean GroupModeratorPK -comp_id : GroupPermissionPK -permissiontype : Long +GroupPermission(comp_id : GroupPermissionPK, permissiontype : Long, forum : Forum, jbbgroup : Group) +GroupPermission() +GroupPermission(comp_id : GroupPermissionPK) +equals(other : Object) : boolean GroupPermission -groupid : Long -idforum : Long +GroupPermissionPK(groupId : Long, idforum : Long) +GroupPermissionPK() +equals(other : Object) : boolean GroupPermissionPK -serialversionuid : long = L -id : Long -name : String -active : Integer -htmltext : String +Newsletter(id : Long) +Newsletter() Newsletter -postdate : Date -subject : String -postbody : String -user : User -topic : Topic -sig : Integer -ip : String -post_state : Integer -accepthtml : boolean = false -acceptbbcode : boolean = true -showsignature : boolean = true -postfiles : Set +Post(idPost : Long, postdate : Date, subject : String, postbody : String, user : User, topic : Topic) +Post(postId : Long, userid : Long, topicid : Long, postdate : Date, forumid : Long, titletopic : String, subject : String, body : String) +Post(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer) +Post() +Post(id : Long) +Post(id : Long, user : User, topic : Topic) +getidpost() : Long +setidpost(idpost : Long) : void +sethtmlaccepted(accepthtml : boolean) : void +equals(other : Object) : boolean Post -serialversionuid : long = L -fileid : Long -filename : String -filepath : String -filesize : String -userfilename : String -downloads : Integer +PostFile(fileId : Long) +PostFile() +equals(obj : Object) : boolean PostFile -serialversionuid : long = L +postbody : String +PostText(topicId : Long, pagelastpost : Integer, postid : Long, titletopic : String, forumid : Long, forumname : String, postdate : Date, userid : Long, username : String, replies : Integer, views : Integer, postbody : String) +PostText() +PostText(_pId : Long) PostText -userfrom : User -userto : User -topic : String -text : String -data : Date -allowbbcode : Integer = new Integer(0) -allowsmiles : Integer = new Integer(0) -attachsign : Integer = new Integer(0) -read : Integer = new Integer(0) +PrivMsg() +PrivMsg(p : PrivMsg) +PrivMsg(id : Long) +getidmsg() : Long +setidmsg(id : Long) : void PrivMsg +PrivMsgRecivied() +PrivMsgRecivied(p : PrivMsg) PrivMsgRecivied +PrivMsgSent() +PrivMsgSent(p : PrivMsg) PrivMsgSent -serialversionuid : long = L -lockupid : Long -keysearch : String -searchdate : Date -forumid : Long SearchLockUp -iduser : Long -idsession : String -ip : String -datasession : Date -user : User +getids() : Long +setids(id : Long) : void Session -_id : Long -_emoticon : String -_symbol : String -_filename : String +Smile(id : Long, emoticon : String, symbol : String, filename : String) +Smile(emoticon : String, symbol : String, filename : String) +Smile() +Smile(id : Long) +getid() : Long +setid(id : Long) : void +getemoticon() : String +setemoticon(emotion : String) : void +getsymbol() : String +setsymbol(symbol : String) : void +getfilename() : String +setfilename(imagefile : String) : void +equals(o : Object) : boolean Smile -serialversionuid : long = L -titletopic : String -datatopico : Date -user : User -posts : Set -visualizacoes : Integer -respostas : Integer -notifyme : Integer -topicstatus : Integer -topicmodel : Integer -lastpostdate : Date -pagelastpost : Integer -pagespertopic : List -lastpostid : Long -lastpostusername : String -lastpostuserid : Long -answernotifies : Set -favusertopics : Set +Topic(id : Long, titletopic : String, user : User, forum : Forum, posts : Set) +Topic() +Topic(id : Long) +Topic(id : Long, user : User, forum : Forum, posts : Set) +getidtopic() : Long +setidtopic(id : Long) : void +equals(other : Object) : boolean Topic -serialversionuid : long = L -user : String -passwordhash : String -name : String - String -user_posts : Long -admin : Integer -dataregistro : Date -posts : Set -topics : Set -localizacao : String -website : String -occupation : String -usersig : String -user_avatar : String -user_icq : String -user_interests : String -user_sig : String -user_aim : String -user_yim : String -user_msnm : String -_lastvisittimestamp : Date -user_lastvisit : Date -user_dateformat : String -user_allow_viewonline : String -hash_fpwd : String -show_mail : Integer -show_signature : Integer -userstatus : Integer -receivenews : Integer -usercode : String -forumtopusers : Set -postformatter : ProcessBBCode = new ProcessBBCode() -answernotifies : Set -favusertopics : Set +User(id : Long, user : String, passwordhash : String, name : String, String, user_posts : Long, posts : Set, topics : Set) +User() +User(id : Long, posts : Set, topics : Set) +User(id : Long) +getiduser() : Long +setiduser(iduser : Long) : void +equals(other : Object) : boolean +isadministrator() : boolean +getusersig_formated() : String +getlastvisittimestamp() : Date +setlastvisittimestamp(lastvisittimestamp : Date) : void User -comp_id : UserGroupPK +UserGroup(comp_id : UserGroupPK, jbbgroup : Group, user : User) +UserGroup() +UserGroup(comp_id : UserGroupPK) +equals(other : Object) : boolean UserGroup -groupid : Long -iduser : Long +UserGroupPK(groupId : Long, iduser : Long) +UserGroupPK() +equals(other : Object) : boolean UserGroupPK -rankid : Long -rankname : String -rankmin : Integer -rankmax : Integer -rankimage : String +compareto(object : Object) : int +equals(object : Object) : boolean UserRank +log : Log = LogFactory.getLog(VOObject.class) -id : Long VOObject test integration phpbb betweendbs search index analysis jdbc hibernate lucene entity feed +getcallerclass() : Class ClassLocator +main(args : String []) : void Demo ~aa() : void ISILog infra -LOG : Log = LogFactory.getLog(ApplicationContext.class) -KEY_APPLICATION_CONTEXT : String = "javabb.application.context" +getcontext() : ApplicationContext +getonlineguests() : Collection +getonlineregisteredusers() : Collection +isonline(user : User) : boolean ApplicationContext -log : Log = LogFactory.getLog(ApplicationContextFactory.class) -init : boolean -locations : List = new ArrayList() +addlocation(location : String) : ApplicationContextFactory +addlocation(location : File) : ApplicationContextFactory +containslocation(location : File) : boolean +containslocation(path : String) : boolean +init() : ApplicationContext ApplicationContextFactory +REPLACES : String[] = { "a", "e", "i", "o", "u", "c" } +PATTERNS : Pattern[] = null +compilepatterns() : void +replacespecial(text : String) : String CharFilter +getclassname() : String ClassLocator +realpath : String +showproperties : String = "" +theme : String = "" +domain : String = "" +forumname : String = "" +lang : String = "" +dateformat : String = "" +timeformat : String = "" +buttonlang : String = "" +topicspage : Integer +postspage : Integer +adminmail : String = "" +smtpserverhost : String = "" +smtpserverusername : String = "" +smtpserveruserpassword : String = "" + nofitytopic : String = "" +floodcontrol : String = "" +forumannouncetext : String = "" +activecaptcha : String = "" +Configuration() Configuration +getconf() : Configuration +refreshconfig() : void ConfigurationFactory +movetopicmailtemplate : String = "mail_move_topic.vm" +mpmailtemplate : String = "mp_mail.vm" +watchtopictemplate : String = "watch_topic.vm" +mailforgetpwd : String = "mail_forget_pwd.vm" +sendnewpassword : String = "send_new_password.vm" Constants -log : Log = LogFactory.getLog(getClass()) +contextinitialized(evt : ServletContextEvent) : void +contextdestroyed(evt : ServletContextEvent) : void ContextLoaderListener +dofilter(request : ServletRequest, response : ServletResponse, chain : FilterChain) : void CustomClickstreamFilter -log : Log = LogFactory.getLog(getClass()) +contextdestroyed(evt : ServletContextEvent) : void CustomClickstreamListener +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +setdatehourminute(dateparam : Date, hourminute : String, format : String) : Date +setdatesecond(dateparam : Date, second : int) : Date +getdataextenso(data : Date) : String +getdiasemana(data : Date) : String +getmesextenso(data : Date) : String +getdataabreviada(data : Date) : String +getdiadomes(data : Date) : String +getano(data : Date) : String +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateformat(date : Date, format : String) : String +gettotalofdays(month : int, year : int) : int +daterfcformat(date : Date) : String DateUtil #log : Log = LogFactory.getLog(DigitFormat.class) -currencyformat() : DecimalFormat +parservalue(paramvalue : String) : String +main(args : String []) : void DigitFormat +sendmail(mailfrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) : void +feedempregos : List = new ArrayList() +feedinfoblogs : List = new ArrayList() FeedConstantLists +uploadfile(multiwrapper : MultiPartRequestWrapper) : ArrayList +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper) : HashMap +uploadfilerecursive(multiwrapper : MultiPartRequestWrapper, inputfilename : String, isavatar : boolean) : HashMap +getabsolutpathname(multiwrapper : MultiPartRequestWrapper) : String +deletefile(path : String, filename : String) : boolean +deletefilebylist(set : Set) : void +uploadfiles(req : HttpServletRequest, inputfilename : String, isavatar : boolean) : List FileTransfer -INSTANCE : JbbConfig = new JbbConfig() -numberofusers : int -totalmessagecount : int +getconfig() : JbbConfig +gettotalmessages() : int +gettotalusers() : int +getforumconfig() : ForumConfig JbbConfig +log : Log = LogFactory.getLog(LogWrappper.class) +ERROR(msg : String) : void +INFO(msg : String) : void +ERROR(reqId : String, msg : String) : void +INFO(reqId : String, msg : String) : void +TRACE(msg : String) : void +TRACE(reqId : String, msg : String) : void +DEBUG(msg : String) : void +DEBUG(reqId : String, msg : String) : void -createmsg(msg : String) : String -createmsg(reqid : String, msg : String) : String LogWrappper -localfile : FileInputStream = null -properties : Properties = null +MaintainProperties(file : FileInputStream) -loadproperties() : void +getproperty(nmproperty : String) : String MaintainProperties +MONITOR : Monitor = new Monitor() -Monitor() Monitor -log : Log = LogFactory.getLog(NotThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +NotThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void NotThreadMail +getguestsonline() : Collection +gettotalusersonline() : int +getusersonline() : Collection +getnumberusersonline() : int +getnumberguestesonline() : int Online -_pageitems : List -_pagenumber : int -_itemsperpage : int -_totalitemcount : int +PagedList(pageItems : List, pagenumber : int, itemsperpage : int, totalitemcount : int) +get(index : int) : Object +size() : int +getpageitems() : List +getpagenumber() : int -getitemsperpage() : int +gettotalitemcount() : int +gettotalpagecount() : int +isfirstpage() : boolean +islastpage() : boolean +isfirstpage(page : int) : boolean +islastpage(page : int) : boolean PagedList +getnropages(recordsperpage : long, nrorecords : long) : int +setpagelist(pagenumber : long, totalrows : long) : void +createquickpaging(nropages : int) : List Paging +replacehql(hql : String) : String +isint(param : String) : boolean +getlang(locale : String) : String +getcountry(locale : String) : String Parser -LOG : Log = LogFactory.getLog(UserContext.class) +setpmtransaction(pmtrans : PrivMsgTransaction) : void +getcountmessages() : int PMHelper +uploadpostfiles(post : Post, req : HttpServletRequest) : Set PostSupport -log : Log = LogFactory.getLog(ThreadMail.class) -message : MimeMessage -sender : JavaMailSenderImpl -mailfrom : String -mailto : String -subject : String -bodymessage : String -htmlmail : boolean +ThreadMail(mailFrom : String, mailto : String, subject : String, bodymessage : String, htmlmail : boolean) +sendmail() : void +run() : void ThreadMail -DEFAULT_LAST_VISIT_TIMESTAMP : Date = new Date(0) +KEY_USER_CONTEXT : String = "javabb.user.context" -_lastvisittimestamp : Date = null -_readtopicids : Set = new HashSet() -_timereadtopic : Hashtable = new Hashtable() +_topicsincategory : Hashtable = new Hashtable() +_topicsinforum : Hashtable = new Hashtable() +getcontext() : UserContext +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +setforumtopics(forumid : Long, topics : List) : void +isactiveunreadforum() : boolean +setforumtopic(forumid : Long, topic : Topic) : void +settopicincat(catid : Long, topics : List) : void +setcattopic(catid : Long, topic : Topic) : void +setalltopicsincatasread(catid : Long) : void +getuser() : User +setuser(user : User) : void +isauthenticated() : boolean +deauthenticate() : void +getlastvisittimestamp() : Date +istopicread(topic : Topic) : boolean +settopicread(topicid : Long) : void +settopicunread(topicid : Long) : void UserContext -LOG : Log = LogFactory.getLog(Utils.class) -RANDOM : Random = new Random() +encrypt(str : String) : String +randomnumber() : String +validatewebsite(ws : String) : String +verifyurls(text : String) : String +replacehtml(texto : String) : String +getcodeuser(username : String) : String +avoidnull(string : String) : String +indexof(text : String, key : String) : List +isbetween(index : int, initcodepos : List, finalcodepos : List) : boolean +validate ( String) : boolean +compositeword(str : String) : boolean +main(args : String []) : void Utils #log : Log = LogFactory.getLog(VelocityHelper.class) +printobj(obj : Object) : String +isnull(obj : Object) : int +dateformat(date : Date) : String +dateminuteformat(date : Date) : String +dateabrev(date : Date) : String +datenow() : String +dateextended() : String +dateextended(date : Date) : String +getpercentage(parcial : double, total : double) : String +daterfc() : String +daterfcformat(date : Date) : String +removehtml(text : String) : String +substring(txt : String, init : int, max : int) : String +escapebbcode(str : String) : String +formatdigitvalue(param : String) : String +formatfilename(filename : String) : String +captalizetitle(param : String) : String +parsestringtitle(text : String) : String +getlength(s : String) : int VelocityHelper ajax -serialversionuid : long = L -getrequest() : HttpServletRequest +addfavoritetopic(topicid : Long) : String +deletefavoritetopic(topicid : Long) : String +addwatchtopic(topicid : Long) : String +deletewatchtopic(topicid : Long) : String +spytemplate() : String +deletefile(fileid : Long) : String ActionFacade #log : Log = LogFactory.getLog(getClass()) -timer : Timer = new Timer() -online : Online -jbbconfig : JbbConfig -url : String #_page : int = -temp : String -captchafield : String -_pagedresult : PagedList +getapplication() : ApplicationContext +getpage() : int +setpage(page : int) : void +getpages() : List +getlastpage() : Integer +htmlescape(text : String) : String #setparameter(name : String, value : Object) : void #setviewobject(name : String, value : Object) : void +getsessionattribute(attributename : String) : Object +setsessionattribute(namesession : String, objectsession : Object) : void +removesessionattribute(attributename : String) : void +getpagedresult() : PagedList +setpagedresult(pagedresult : PagedList) : void +istopicread(topic : Topic) : boolean +isforumread(forum : Forum) : boolean +getnmbunreadsincat(cat : Category) : int +checkcaptcha() : boolean +getuserlogged() : User +gettopicviews() : String ActionSuper -serialversionuid : long = L #_categoryid : Long #_forumid : Long #_topicid : Long #_postid : Long #_userid : Long #_smileid : Long #_badwordid : Long -subject : String -message : String #watchtopic : int -checksign : Integer #msgerrors : List #checkmessage() : void #checksubject() : void +setb(id : Long) : void +setc(id : Long) : void +sets(id : Long) : void +setf(id : Long) : void +setp(id : Long) : void +sett(id : Long) : void +setu(id : Long) : void +getbadwordid() : Long +getcategoryid() : Long +getsmileid() : Long +getforumid() : Long +getpostid() : Long +gettopicid() : Long +getuserid() : Long +getfeedempregos() : List +getfeedinfoblogs() : List BaseAction -singleton : Feeds -feeds : Map -Feeds() +getinstance() : Feeds +getfeed(name : String) : List Feeds -link : String -desc : String -title : String -date : Date +compareto(o : Object) : int ItenFeed +getfeeds(feedurl : String) : List ReadRSS ~timer : Timer ~channel : ChannelIF ~timesup : boolean = false ~blogfeedurl : String +ReadRSSTimerTask(seconds : int) +getchannelif(blogfeedurl : String) : ChannelIF ReadRSSTimerTask +run() : void RemindTask +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) -icon : Icon -channeltitle : String -itemsiterator : Iterator -item : RSSItem +RSSReader(feed : String) +ifhasnextthennext() : boolean +getitemtitle() : String +getdescription() : String +getlink() : String +getdate() : Date +getpubdate() : Date RSSReader +RFC822DATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US) +JFDATEFORMAT : SimpleDateFormat = new SimpleDateFormat("EEE' 'MMM' 'dd' 'HH:mm:ss' 'z' 'yyyy", Locale.US) +compare(arg0 : Object, arg : Object) : int DateComparator +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void IBadWordDAO +ID : int = +SORTING_POSITION : int = 2 +NAME : int = 3 +countallposts() : int +countalltopics() : int +countallusers() : int +getstatistics() : Stats +load(categoryid : Long) : Category +findall(orderingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void ICategoryDAO +load(id : Long) : Forum +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +insertforum(forum : Forum) : Forum +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List IForumDAO IForumTopUserDAO IGroupDAO +updateindexposts() : List IIndexLucenePostsDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List INewsDAO +load(id : Long) : Post +findlastpost() : Post +findlastposts(limit : int) : List +findbytopicdesc(topic : Topic) : List +findbyforumdesc(forum : Forum) : List +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, numitems : int) : List +search(query : String, page : int) : List +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, rowsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +updatestate(post : Post) : void +create(post : Post) : Long +delete(postid : Long) : void +countallposts() : int +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void IPostDAO +updatedownloads(fileid : Long) : void IPostFileDAO +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void IPrivMsgReciviedDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void IPrivMsgSentDAO +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void IRefreshStatsDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(emoticonid : Long) : void +update(s : Smile) : void ISmileDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +create(topic : Topic) : Long +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +favoritetopicbyuser(userid : Long) : List +favoritetopics() : List ITopicDAO +loaduser(userid : Long) : User +findby ( String) : List +findby ( String, userid : Long) : List +loadbyusername(name : String) : User +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, page : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +update(user : User) : void +findall(pagenumber : int, itemsperpage : int) : List +create(user : User) : Long +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank IUserDAO +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void IUserRankDAO +createhashcode(userid : Long, hashcode : String) : void IUserSecurityDAO +findall() : List +load(id : Long) : BadWord +delete(badword : BadWord) : void +save(badword : BadWord) : void BadWordHibernateDAO ~FIELD_NAMES : String[] = new String[] { null, "idcategory", "catorder", "namecategory" } +load(id : Long) : Category +countallposts() : int +countalltopics() : int +countallusers() : int #getfieldname(i : int) : String +getstatistics() : Stats +findall(sortingfields : int []) : List +insertcategory(cat : Category) : Category +getlastcattegorybyorder() : Category +deletecategory(cat : Category) : void CategoryHibernateDAO -log : Log = LogFactory.getLog(ForumHibernateDAO.class) -posttransaction : PostTransaction -usertransaction : UserTransaction +load(id : Long) : Forum +insertforum(forum : Forum) : Forum +findall() : List +findbycategoryorderasc(id : Long) : List +findbycategory(id : Long) : List +update(forum : Forum) : void +countallforums() : int +transferforum(forum : Forum, forumto : int) : void +deleteforum(forum : Forum) : void +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +obtainunreadforuns(readtopics : Set, lastuservisit : Date, userid : Long) : List ForumHibernateDAO ForumTopUserHibernateDAO GroupHibernateDAO #pathvo : String = "org.javabb.vo." +deletefrom(query : String) : void #countrowsoftable(vo : String, index : String) : Integer #countrowsbywhere(nmclass : String, index : String, whereequalfield : String [], whereequalvalue : String []) : Integer #load(obj : VOObject) : VOObject #getlist(condicao : String) : List #getlist(condicao : String, firstres : int, maxres : int) : List #findall(nmclass : Class, orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String []) : List #findall(nmclass : Class, whereequalfield : String [], whereequalvalue : String [], orderby : String [], ascdesc : String [], firstres : int, maxres : int) : List #executesql(sql : String) : void #loadbyuniqueattribute(c : Class, attributename : String, attributevalue : Object) : Object #findbyattribute(c : Class, attributename : String, attributevalue : Object) : List #countrows(c : Class, indexattributename : String) : int #countrowswhere(c : Class, indexattributename : String, whereclause : String, params : Object []) : int #find(c : Class, where : String, params : Object [], orderby : String, pagenumber : int, itemsperpage : int) : List #find(hql : String, params : Object [], pagenumber : int, itemsperpage : int) : List #findall(c : Class, orderby : String, pagenumber : int, itemsperpage : int) : List #getfieldname(i : int) : String #findall(c : Class, sortingfields : int []) : List #load(cls : Class, id : Long) : Object +add(obj : Object) : Object +loadall(obj : Object) : List +load(obj : Object, id : Long) : Object +delete(obj : Object) : void HibernateDAO +getnews() : List +loadnews(id : Long) : Newsletter +insert(news : Newsletter) : void +delete(news : Newsletter) : void +getusersnewsletter() : List NewsHibernateDAO -searcher : LuceneSearcher -indexer : Indexer +load(id : Long) : Post +create(post : Post) : Long +delete(postid : Long) : void +countpostsbytopic(idtopic : Long) : int +findbytopic(topicid : Long, pagenumber : int, itemsperpage : int) : List +findbyuser(userid : Long, pagenumber : int, itemsperpage : int) : List +countpostsbyuser(userid : Long) : int +findunanswered(pagenumber : int, itemsperpage : int) : List +countunanswered() : int +update(post : Post) : void +findbytopicdesc(topic : Topic) : List +findlastposts(limit : int) : List +findlastpost() : Post +findcountofpostsbyforum(forum : Forum) : Integer +gettotalrowsoflucene(query : String, forumid : Long) : int +search(query : String, forumid : Long, pagenumber : int, itemsperpage : int) : List +searchidsbyqueryandfields(query : String, forumid : Long) : List -search(ids : List, start : int, limit : int) : List +search(query : String, page : int) : List +countallposts() : int +findbyforumdesc(forum : Forum) : List +loadpostfile(fileid : Long) : PostFile +deletepostfile(fileid : Long) : void +updatestate(post : Post) : void PostHibernateDAO -ids : List -LuceneComparator(ids : List) +compare(o : Object, o2 : Object) : int LuceneComparator +retrieveuserinbox(u : User) : List +countmessagesbyuser(u : User) : int +load(id : Long) : PrivMsgRecivied +save(p : PrivMsgRecivied) : Long +delete(p : PrivMsgRecivied) : void +delete(l : List) : void PrivMsgReciviedHibernateDAO +retrieveuseroutbox(u : User) : List +load(id : Long) : PrivMsgSent +save(p : PrivMsgSent) : void +delete(p : PrivMsgSent) : void +delete(l : List) : void PrivMsgSentHibernateDAO +findall() : List +load(id : Long) : Smile +create(smile : Smile) : Long +delete(id : Long) : void +update(s : Smile) : void SmileHibernateDAO +findlasttopic() : Topic +findcountoftopicsbyforum(forum : Forum) : Integer +load(id : Long) : Topic +create(topic : Topic) : Long +delete(topicid : Long) : void +deleteallpostoftopic(topicid : Long) : void +locktopic(topic : Topic, lock : Integer) : void +movetopic(topic : Topic, idforumdest : Long) : void +findall() : List +counttopicsbyforum(forumid : Long, forummodel : Integer) : int +findbyforum(forumid : Long, forummodel : Integer, pagenumber : int, itemsperpage : int) : List +findbyforum(forumid : Long, forummodel : Integer) : List +findpostedafter(date : Date, pagenumber : int, itemsperpage : int) : List +countpostedafter(date : Date) : int +update(topic : Topic) : void +wathtopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopicuser(userid : Long, topicid : Long) : List +favoritetopicbytopic(topicid : Long) : List +insertwatchtopicuser(topicid : Long, userid : Long) : void +deletewatchtopicuser(topicid : Long, userid : Long) : void +wathtopicbyuser(userid : Long) : List +favoritetopicbyuser(userid : Long) : List +wathtopicbytopic(topicid : Long) : List +findlasttopics(limit : int) : List +favoritetopics() : List TopicHibernateDAO #log : Log = LogFactory.getLog(UserHibernateDAO.class) -usersecuritydao : IUserSecurityDAO +loaduser(userid : Long) : User +update(user : User) : void +create(user : User) : Long +lastuserregistered() : User +verificalogin(name : String, passwd : String) : User +deleteuser(user : User) : void +findby ( String, userid : Long) : List +findby ( String) : List +loadbyusername(username : String) : User +loadbyusercode(usercode : String) : User +countallusers() : int +findallusernamelike(username : String, pagenumber : int, itemsperpage : int) : List +findalluseradmin(pagenumber : int, itemsperpage : int) : List +findallsortedby(pagenumber : int, itemsperpage : int, orderby : String, ascdesc : String) : List +findall(pagenumber : int, itemsperpage : int) : List +loadlistbyusername(username : String) : List +loaduserranks() : List +getuserrank(postcount : Long) : UserRank UserHibernateDAO #log : Log = LogFactory.getLog(getClass()) -posttransaction : PostTransaction +updateindexposts() : List JdbcIndexLucenePosts +updatedownloads(fileid : Long) : void JdbcPostFileDAO -log : Log = LogFactory.getLog(JdbcRefreshStatsDAO.class) +refreshforum(forumid : Long) : void +refreshtopic(topicid : Long) : void +refreshpost(postid : Long) : void +refreshsession(obj : Object) : void JdbcRefreshStatsDAO +add(obj : Object) : Object JdbcSuper -log : Log = LogFactory.getLog(this.getClass()) +refreshuserrankbyforum(forumid : Long) : void +cleanalluserrank() : void +refreshsession(obj : Object) : void JdbcUserRankDAO -log : Log = LogFactory.getLog(JdbcUserSecurityDAO.class) +createhashcode(userid : Long, hashcode : String) : void +refreshsession(obj : Object) : void JdbcUserSecurityDAO +STOP_WORDS : String[] = new String[] { "0", "", "2", "3", "4", "5", "6", "7", "8", "9", "a", "ainda", "alem", "algum", "alguma", "alguns", "ali", "além", "ambas", "ambos", "ano", "anos", "antes", "ao", "aonde", "aos", "apenas", "apos", "aquela", "aquele", "aqueles", "as", "assim", "ato", "até", "b", "bem", "boa", "bom", "c", "cada", "cargo", "carta", "casa", "com", "como", "consta", "contra", "contudo", "cuja", "cujas", "cujo", "cujos", "d", "da", "daquele", "dar", "das", "data", "de", "dela", "dele", "deles", "demais", "depois", "desde", "desta", "deste", "deu", "dia", "dias", "dispoe", "dispoem", "dito", "diversa", "diversas", "diversos", "diz", "do", "dois", "dos", "dr", "duas", "durante", "e", "ela", "elas", "ele", "eles", "em", "enfim", "entao", "entre", "então", "era", "eram", "essa", "essas", "esse", "esses", "esta", "estas", "estava", "este", "estes", "f", "fazer", "fez", "ficou", "fim", "foi", "foram", "fr", "g", "gente", "geral", "h", "ha", "havia", "hoje", "há", "i", "isso", "isto", "j", "já", "k", "l", "lhe", "lhes", "logo", "lugar", "m", "maior", "mais", "mas", "me", "mediante", "menos", "mesma", "mesmas", "mesmo", "mesmos", "muito", "muitos", "n", "na", "nao", "nas", "nem", "nesse", "nesta", "neste", "no", "nome", "nos", "nossa", "nosso", "nossos", "nova", "novo", "não", "nós", "o", "onde", "ordem", "os", "ou", "outra", "outras", "outro", "outros", "p", "para", "parte", "pela", "pelas", "pelo", "pelos", "perante", "pois", "por", "porque", "portanto", "porém", "pouco", "propios", "proprio", "q", "quais", "qual", "qualquer", "quando", "quanto", "que", "quem", "quer", "r", "rua", "s", "se", "segundo", "seja", "sem", "sempre", "sendo", "ser", "seu", "seus", "sob", "sobre", "sua", "suas", "são", "só", "sôbre", "t", "tal", "tambem", "também", "tanto", "tem", "tendo", "ter", "teu", "teus", "teve", "tinha", "tinham", "toda", "todas", "todo", "todos", "três", "tua", "tuas", "tudo", "tão", "u", "um", "uma", "umas", "uns", "v", "veio", "vem", "vez", "vê", "w", "x", "y", "z", "à", "às", "é", "êle" } -stopwords : Set = new HashSet() +PortugueseAnalyzer() +PortugueseAnalyzer(stopWords : String []) +PortugueseAnalyzer(words : String) +tokenstream(fieldname : String, reader : Reader) : TokenStream -makearray(words : String) : String [] PortugueseAnalyzer -REPLACES : String[] -PATTERNS : Pattern[] +SpecialCharFilter(in : TokenStream) +next() : Token -replacespecial(text : String) : String SpecialCharFilter -logger : Log = LogFactory.getLog(Indexer.class) -path : Directory -analyzer : Analyzer -optimize : boolean -createnew : boolean -initialized : boolean = false -monitor : Object = org.javabb.infra.monitor.monitor +Indexer(analyzer : Analyzer, path : Directory, opt : boolean, createnew : boolean) +Indexer(analyzer : Analyzer, path : Resource, opt : boolean, createnew : boolean) +isoptimize() : boolean +index(post : Post) : void -posttodocument(post : Post) : Document +createindex(posts : List) : void +update(post : Post) : void +delete(post : Post) : void +delete(postid : Long) : void -makewriter() : IndexWriter -indexdocument(doc : Document) : void -deleteusingterm(term : Term) : void -initialize() : void Indexer +LuceneIndexerException() +LuceneIndexerException(message : String) +LuceneIndexerException(message : String, cause : Throwable) +LuceneIndexerException(cause : Throwable) +LuceneIndexerException(ex : Exception) LuceneIndexerException -logger : Log -monitor : Object = org.javabb.infra.monitor.monitor -lucenepath : Directory -analyzer : Analyzer +LuceneOptimizeIndexTimerTask(lucenePath : Directory, analyzer : Analyzer) +LuceneOptimizeIndexTimerTask(lucenePath : Resource, analyzer : Analyzer) +run() : void LuceneOptimizeIndexTimerTask -cssclass : String -cssstyle : String +CSSFormatter(cssClass : String) +CSSFormatter(properties : Map) +highlightterm(originaltext : String, tokengroup : TokenGroup) : String -dohighlightterm(originaltext : String) : String -constructstyle(cssproperties : Map) : String CSSFormatter -CONTENTS_FIELD : String = "contents" -analyzer : Analyzer = new PortugueseAnalyzer() +highlight(text : String, query : String, separator : String, fragsize : int, numfrags : int, complete : boolean) : String -adddocument(actualtext : String, ramdir : Directory) : void -avoidempty(string : String, text : String) : String LuceneHighlighter +search(query : String [], field : String []) : List +search(query : String, field : String []) : List LuceneSearcher -path : Directory -analyzer : Analyzer -monitor : Object = org.javabb.infra.monitor.monitor +SimpleLuceneSearcher(path : Directory, analyzer : Analyzer) +SimpleLuceneSearcher(path : Resource, analyzer : Analyzer) +search(query : String, fields : String []) : List +search(query : String [], fields : String []) : List SimpleLuceneSearcher +main(args : String []) : void JavaBB_DBScript Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/javabb3?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" -javabb_url : String = "jdbc:postgresql://localhost/javabb" -javabb_user : String = "postgres" -javabb_pass : String = "postgres" -javabb_driver : String = "org.postgresql.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getdborigin() : Connection #getdbdest() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_post_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_post_text Jbb_topics Jbb_users +main(args : String []) : void JavaBB_DBScript JbbMerge Jbb_badwords Jbb_category -phpbb_url : String = "jdbc:mysql://localhost:3306/carlos?unicode=true" -phpbb_user : String = "root" -phpbb_pass : String = "root" #phpbb_prefix : String = "phpbb_" -javabb_url : String = "jdbc:mysql://localhost:3306/bb_carlos?unicode=true" -javabb_user : String = "root" -javabb_pass : String = "root" -javabb_driver : String = "com.mysql.jdbc.driver" #sql : String = "" -df : DateFormat = new SimpleDateFormat("yyyyMMddHHmmss") -JBB_TIMESTAMP_FORMAT : String = "yyyymmddhhmmss" #getphpbbconnection() : Connection #getjavabbconnection() : Connection +tojbbcode(phpbbcode : String) : String +convertip(hexcode : String) : String +long2timestamp(pre : long) : String +convertjbb_badwords() : void +convertjbb_category() : void +convertjbb_emoticon() : void +convertjbb_forum() : void +convertjbb_posts() : void +convertjbb_topics() : void +convertjbb_users() : void +convertjbb_posts_text() : void Jbb_Convert Jbb_emoticon Jbb_forum Jbb_posts Jbb_posts_text Jbb_topics Jbb_users +feedtitle : String +feedurl : String FeedEmpregoVH +feedtitle : String +feedurl : String FeedInfoBlogsVH ~indexer : Indexer ~directory : RAMDirectory +main(args : String []) : void +IndexerTest(name : String) #setup() : void +testindex() : void -verifydocs() : void +testupdate() : void +testdeletepost() : void +testdeletelong() : void -getpost() : Post IndexerTest +testando() : String JavaBBDWR -_smiledao -categorydao -newsdao -_privmsgrecivieddao -usersecuritydao -usersecuritydao -indexlucenepostsdao -_topicdao -_topicdao -postfiledao -_refreshstatsdao -_badworddao -_userrankdao -_postdao -_userdao -_forumdao -_privmsgsentdao -genericdao -posttransaction -usertransaction -indexer -searcher -posttransaction indexer -comp_id -category #forum -_forum -forum -forum -forum +forum -lastpost -user -_topic -_topic -topic -topic -topic -post -postfile -user -group -group -group -comp_id -user -_post -badword -comp_id -user -_post -postformatter -_user -lastuserregistered -_user -userto -userfrom +user -user -user -user -pm -comp_id -comp_id +comp_id -_smile -newsletter -newsletter -category -forumtransaction -posttransaction -topictransaction -topictransaction -_topictransaction -topictransaction -newstransaction -badwordtransaction -badwordtransaction -_badwordtransaction -_smiletransaction -_smiletransaction -_forumtransaction #forumtransaction -_forumtransaction -forumtransaction -forumtransaction -forumtransaction -_usertransaction -_usertransaction -_usertransaction -usertransaction -usertransaction -_usertransaction -_usertransaction -usertransaction -usertransaction -usertransaction -_categorytransaction -_categorytransaction -_categorytransaction -_categorytransaction -pmtransaction -pmtrans -indexer -posttransaction -_posttransaction -posttransaction -posttransaction -_posttransaction -posttransaction -posttransaction -indexer -indexer -stats -stats -postformatter -userformatter -_postformatter -forumconfigview -_pagedresult -online -jbbconfig -newsstatus -postformatter -userformatter -postformatter +MONITOR -config -INSTANCE -singleton Sören Frey The CloudMIG Approach April, / 43

11 Migration to the Cloud - Challenges (cont d) Motivation Which Cloud Deployment Option (CDO) to use? CDO: Cloud environment? Mapping of components to VM images? Which VM instance types to use? How many VM instances to start from each VM image? Best suited set of runtime reconfiguration rules? Sören Frey The CloudMIG Approach April, / 43

12 Migration to the Cloud - Challenges (cont d) Motivation Which Cloud Deployment Option (CDO) to use? CDO: Cloud environment? Mapping of components to VM images? Which VM instance types to use? How many VM instances to start from each VM image? Best suited set of runtime reconfiguration rules? Simple reconfiguration rule: Start R new VM instances of VM instance type R 2 if average CPU utilization R 3 % for R 4 minutes. Sören Frey The CloudMIG Approach April, / 43

13 Migration to the Cloud - Challenges (cont d) Motivation Which Cloud Deployment Option (CDO) to use? CDO: Cloud environment? Mapping of components to VM images? Which VM instance types to use? How many VM instances to start from each VM image? Best suited set of runtime reconfiguration rules? Simple reconfiguration rule: Start R new VM instances of VM instance type R 2 if average CPU utilization R 3 % for R 4 minutes. Best suited R, R 2, R 3, and R 4? Sören Frey The CloudMIG Approach April, / 43

14 Outline Motivation CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

15 Outline CloudMIG Overview CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

16 The CloudMIG Approach (/2) CloudMIG Overview [AFG + 09] Supports SaaS providers Focus on migration planning phase business applications Cloud environment agnostic Employs OMG s ADM standards (Architecture-Driven Modernization) KDM SMM Semi-automatic Tool support: CloudMIG Xpress Sören Frey The CloudMIG Approach April, / 43

17 The CloudMIG Approach (2/2) CloudMIG Overview Actual Architecture A Existing System A Utilization Model A3 Target Architecture Mapping Model?? A4,A3 Constraint Violations Cloud Environment Model A2 A4,A3 A5 Rating Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6: Transformation A B C Migrated System A6 Optional Mandatory Sören Frey The CloudMIG Approach April, / 43

18 A - Extraction (/2) CloudMIG Overview Actual Existing System Architecture A Utilization Model A Cloud Environment Model A3 Target Mapping Architecture Model?? A4,A3 Constraint Violations Actual architecture Often diverges from plan Often no explicit/ sufficient knowledge A2 A4,A3 A5 Rating A B Reverse engineering step needed Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6: Transformation Optional C A6 Migrated System Legacy system model employs KDM KDM models discovered with MoDisco Mandatory Java C# Python Sören Frey The CloudMIG Approach April, / 43

19 A - Extraction (2/2) CloudMIG Overview Actual Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation Architecture A Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Utilization model Resource consumption (RC) is an important criterion conc. A3-A5 RC is influenced by: Architecture/ implementation Usage patterns A6: Transformation Optional Mandatory Related metrics modeled with SMM Extraction of SMM measurements based on: Legacy KDM model Monitoring log data Sören Frey The CloudMIG Approach April, / 43

20 A2 - Selection CloudMIG Overview Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6: Transformation Optional Mandatory Actual Architecture A Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Cloud Environment Model (CEM) describes: Architectural features in cloud domain Cloud Environment Constraints Cloud profiles are instances of CEM for a specific cloud provider In A2 a user selects a cloud profile (optional) Sören Frey The CloudMIG Approach April, / 43

21 A2 - Selection CloudMIG Overview Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6: Transformation Optional Mandatory Actual Architecture A Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Cloud Environment Model (CEM) describes: Architectural features in cloud domain Cloud Environment Constraints Cloud profiles are instances of CEM for a specific cloud provider In A2 a user selects a cloud profile (optional) CEM packages: Pricing PaaS Cloud Profile IaaS Mapping Usage Constraints Core KDM SMM Sören Frey The CloudMIG Approach April, / 43

22 A3 - Generation CloudMIG Overview Actual Architecture A Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Conformance checking Uncovers constraint violations Deployment optimization Target architecture Mapping model A6: Transformation Optional Mandatory Will be described in a minute Sören Frey The CloudMIG Approach April, 203 / 43

23 A4 - Adaptation CloudMIG Overview Actual Architecture A Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Target architecture adaptation Manual architecture rearrangement Manual deployment adaptation Manual adaptation of capacity management strategy A6: Transformation Optional Mandatory Sören Frey The CloudMIG Approach April, / 43

24 A5 - Evaluation CloudMIG Overview Actual Architecture A Existing System Legend: A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6: Transformation Optional Mandatory Utilization Model A Cloud Environment Model A2 A3 A4,A3 Target Mapping Constraint Architecture Model Violations?? A4,A3 A5 Rating A B C A6 Migrated System Static and dynamic analysis of target architecture Static: Apply metrics like LCOM or WMC Dynamic: Simulate target architecture based on CDOSim CDOSim Cloud deployment option simulator Our simulator on the basis of CloudSim CloudSim: Framework for modeling and simulation of cloud infrastructures and services [CRB + ] Sören Frey The CloudMIG Approach April, / 43

25 A6 - Transformation CloudMIG Overview Actual Architecture A Existing System Utilization Model A Cloud Environment Model A3 Target Mapping Architecture Model?? A4,A3 Constraint Violations A2 A4,A3 A5 Rating Legend: A B Manual migration towards target architecture C A: Extraction A2: Selection A3: Generation A4: Adaptation A5: Evaluation A6 Migrated System A6: Transformation Optional Mandatory Sören Frey The CloudMIG Approach April, / 43

26 Outline Conformance Checking CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

27 CEC Examples Conformance Checking CEC: Using Google App Engine for Java, the total number of files is limited to 3,000 per default CEC violation: An application that exceeds this limit Violation severity: Warning (assuming that creating new container structures is a rather simple problem) Sören Frey The CloudMIG Approach April, / 43

28 CEC Examples Conformance Checking CEC: Using Google App Engine for Java, the total number of files is limited to 3,000 per default CEC violation: An application that exceeds this limit Violation severity: Warning (assuming that creating new container structures is a rather simple problem) CEC: Using Amazon EC2, the local storage of VM instances is transient. For persistent storing one of Amazon s services like EBS, S3, or RDS has to be used CEC violation: An application that writes to the local file system in one of its methods Violation severity: Critical Sören Frey The CloudMIG Approach April, / 43

29 CEC Examples Conformance Checking CEC: Using Google App Engine for Java, the total number of files is limited to 3,000 per default CEC violation: An application that exceeds this limit Violation severity: Warning (assuming that creating new container structures is a rather simple problem) CEC: Using Amazon EC2, the local storage of VM instances is transient. For persistent storing one of Amazon s services like EBS, S3, or RDS has to be used CEC violation: An application that writes to the local file system in one of its methods Violation severity: Critical CEC: Using Google App Engine for Java, only JVM compatible languages can be used for guest applications CEC violation: A C++ application Violation severity: Breaking Sören Frey The CloudMIG Approach April, / 43

30 Conformance Checking Approach Conformance Checking Challenges: Diversity of cloud solutions Description of CECs is non-uniform, informal, and often incomplete Sören Frey The CloudMIG Approach April, / 43

31 Conformance Checking Approach Conformance Checking Challenges: Diversity of cloud solutions Description of CECs is non-uniform, informal, and often incomplete Goal is to provide: Cloud profile meta-model (CEM) incl. CECs Framework for simplified detection of CEC violations Set of reusable/default CEC validators extensible via plugins CEC validators process KDM models Open repository Sören Frey The CloudMIG Approach April, / 43

32 Conformance Checking Approach Conformance Checking Challenges: Diversity of cloud solutions Description of CECs is non-uniform, informal, and often incomplete Goal is to provide: Cloud profile meta-model (CEM) incl. CECs Framework for simplified detection of CEC violations Set of reusable/default CEC validators extensible via plugins CEC validators process KDM models Open repository Cloud profile Contributor Contributor CEC validator Repository Reengineer Check cloud environment conformance Existing system Sören Frey The CloudMIG Approach April, / 43

33 Cloud Profile Definition Conformance Checking Sören Frey The CloudMIG Approach April, / 43

34 Cloud Profile Definition Conformance Checking Sören Frey The CloudMIG Approach April, / 43

35 CEC Violations - Quantitative Evaluation Conformance Checking Cloud Profile: Google App Engine for Java (PaaS) Appropriate CEC validators for tool CloudMIG Xpress LOC measured with CLOC.52 (no comment and blank lines) Java and web-based systems Utilized MoDisco 0.8 to extract KDM models: App Name Domain #Classes (w/o libs) #Libraries LOC (w/o libs) Coefficient Core Collaboration 3 4,862 platform 2 ibatis JPetStore Pet store ,32 3 JavaBB 0.99 Forum software ,239 4 jforum 2..9 Forum software ,563 5 Ace Operator.7.0 Live support ,56 Sören Frey The CloudMIG Approach April, / 43

36 CEC Violations - Quantitative Evaluation (cont d) Conformance Checking The incorporated CECs: Type #Variants Violation severity MaxTotalNrOfFilesConstraint Warning MethodCallConstraint 2 3 Critical, 9 Warning SocketOpeningConstraint Critical FilesystemAccessConstraint 2 Critical, Warning ReflectionConstraint Critical TypesInstantiationConstraint Critical TypesWhitelistConstraint Critical LanguageConstraint Breaking 29 CECs modeled / 20 covered by validators / 8 types of CECs covered #Detected CEC violations: App Own sources Third-party libraries Coefficient Core ,386 ibatis JPetStore JavaBB jforum ,428 Ace Operator.7.0 7, Sören Frey The CloudMIG Approach April, / 43

37 CEC Violations - Quantitative Evaluation (cont d) Conformance Checking Q How many classes of an application raise CEC violations? Classes Causing CEC Violations (%) Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Sören Frey The CloudMIG Approach April, / 43

38 CEC Violations - Quantitative Evaluation (cont d) Conformance Checking Classes Causing CEC Violations (%) Density of CEC Violations (#CEC Violations /,000 LOC) Violation Severity Warning Critical CEC Violation Types Ratio (%) Violation Types MethodCall: System exit SocketOpening FilesystemAccess: Limited read FilesystemAccess: No write Reflection TypeInstantiation: Thread restriction TypesWhitelist: Restr. JRE types Coefficient ibatis Core JPetStore JavaBB 0.99 jforum Ace Operator Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Class to App. CEC Violations Ratio (%) Class to App. CEC Violations Ratio (%) Class w/ CEC Violation(s) Coefficient Core ibatis JPetStore JavaBB Class Size (#LOC) (a) Class w/ CEC Violation(s) jforum 2..9 Ace Operator Class Size (#LOC) No. of CEC Violations per Class w/o Non Violating Classes (Normalized to 00 LOC) Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Origin of Constraint Violations Application's Code Third Party Library ibatis JPetStore % (b) jforum % Ace Operator % (a) (c) Coefficient Core % JavaBB % (b) (d) (e) Sören Frey The CloudMIG Approach April, / 43

39 Outline CDO Optimization CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

40 Simulating Cloud Deployment Options (CDOs) CDO Optimization Master thesis of Florian Fittkau [Fit2]: Simulating Cloud Deployment Options for Software Migration Support Average CPU utilization over all allocated nodes [%] Average CPU Utilization Average CPU utilization Number of allocated nodes 0 00: :00 0 4:00 0 2:00 Experiment time [day hour:minute] Number of allocated nodes Average CPU utilization over all allocated nodes [%] Average CPU Utilization Average CPU utilization Number of allocated nodes 0 00: :00 0 4:00 0 2:00 Experiment time [day hour:minute] Number of allocated nodes Figure: Measured CPU utilization Figure: Simulated CPU utilization Output of simulator CDOSim: Cost Response times SLA violations Sören Frey The CloudMIG Approach April, / 43

41 Simulating Cloud Deployment Options (CDOs) CDO Optimization Master thesis of Florian Fittkau [Fit2]: Simulating Cloud Deployment Options for Software Migration Support Average CPU utilization over all allocated nodes [%] Average CPU Utilization Average CPU utilization Number of allocated nodes 0 00: :00 0 4:00 0 2:00 Experiment time [day hour:minute] Number of allocated nodes Average CPU utilization over all allocated nodes [%] Average CPU Utilization Average CPU utilization Number of allocated nodes 0 00: :00 0 4:00 0 2:00 Experiment time [day hour:minute] Number of allocated nodes Figure: Measured CPU utilization Figure: Simulated CPU utilization Output of simulator CDOSim: Cost Response times Adequate precision But: Billions of possible CDOs Simulating all lasts thousands of years SLA violations Sören Frey The CloudMIG Approach April, / 43

42 CDO Optimization Approach CDO Optimization Goal: Support comparison of cloud deployment options Find suitable trade-offs between cost, response times, nr. method timeouts ( SLA violations ) Sören Frey The CloudMIG Approach April, / 43

43 CDO Optimization Approach CDO Optimization Goal: Support comparison of cloud deployment options Find suitable trade-offs between cost, response times, nr. method timeouts ( SLA violations ) Challenges: Optimization problem with multiple objectives SLA-aware service deployment optimization is NP-hard [CDPEV05] Complex and non-linear correlations of input parameters Sören Frey The CloudMIG Approach April, / 43

44 CDO Optimization Approach CDO Optimization Goal: Support comparison of cloud deployment options Find suitable trade-offs between cost, response times, nr. method timeouts ( SLA violations ) Challenges: Optimization problem with multiple objectives SLA-aware service deployment optimization is NP-hard [CDPEV05] Complex and non-linear correlations of input parameters Approach: Explore design space with a genetic algorithm called CDOXplorer Use CDOSim to compute fitness of a cloud deployment option ( simulation-based optimization) Sören Frey The CloudMIG Approach April, / 43

45 CDOSim for Calculating the Fitness Function CDO Optimization Integration of CDOSim Status Quo Deployment Node CloudMIG Xpress Cloud Profile <<Cloud provider X>> <<VM instance type Y>> VM Instance enrich MIPIPS and Weights Benchmark MIPIPS and Weights Benchmark Mapping Model CDOSim Software System KDM Model Instruction Counting Approaches Monitoring Log Data (from sources) Workload Profile Static Dynamic Hybrid Data flow Basic data user needs to provide for simulating cloud deployment options Data only needed for dynamic and hybrid instruction counting approach CDOSim/ Benchmark components Sören Frey The CloudMIG Approach April, / 43

46 CDOXplorer Overview CDO Optimization IaaS cloud environments Usage of actual workload data Optimizes runtime reconfiguration rules at design time (migration planning) Assumption: Enterprise software exhibits recurring usage patterns Sören Frey The CloudMIG Approach April, / 43

47 CDOXplorer Overview CDO Optimization IaaS cloud environments Usage of actual workload data Optimizes runtime reconfiguration rules at design time (migration planning) Assumption: Enterprise software exhibits recurring usage patterns Input and Output: Sören Frey The CloudMIG Approach April, / 43

48 CDO Optimization Basic Feedback Loop CDO Optimization CDO Instantiation CDO Instance α CDOSim New Generation CDO α α Simulation Result CDOXplorer α: Population size (50) ρ: Number of generations (60) Sören Frey The CloudMIG Approach April, / 43

49 Basic CDO Example CDO Optimization Mapping status quo deployment to basic CDO example (no reconfiguration rules): Sören Frey The CloudMIG Approach April, / 43

50 Scaling Types CDO Optimization <<VM instance>> m.small () scale out/ scale in <<VM instance>> m.small () <<component>> <<component>> Service Service n scale out scale in <<component>> <<component>> Service Service n <<VM instance>> m.small (2) <<component>> Service <<component>> Service n scale up / scale down <<VM instance>> m.small <<component>> <<component>> Service Service n scale up scale down <<VM instance>> m2.4xlarge <<component>> <<component>> Service Service n Sören Frey The CloudMIG Approach April, / 43

51 Cloud Deployment Options CDO Optimization Structure of a Cloud Deployment Option (Phenotype) -id Cloud Environment * Cloud Deployment Option..* Node Configuration Service Composition..*..* Service -id *..* Initial Start Config -vminstancetypeid -nrvmstostart Grow Rule -minnrvms -mipipsmultiple Condition 0.. -cpuutilizationthreshold -timeperiod 0.. Shrink Rule -minnrvms -mipipsmultiple kdm:code:codemodel * <<enumeration>> Grow Action -scaleup -scaleout <<enumeration>> Scope -singlevm -allvms <<enumeration>> Shrink Action -scaledown -scalein kdm:code:package. Sören Frey The CloudMIG Approach April, / 43

52 Compound Chromosome Overview CDO Optimization Structure of a Cloud Deployment Option (Genotype) Cloud Environment + Node Configuration Service Composition Initial Start Config? Grow Rule? Shrink Rule CE + SE IT NI? GA? G? G2? G3? G4? G5? SA? S? S2? S3? S4? S5... Crossover Points CP CP2 CP3 CP4 Further Node Configurations Sören Frey The CloudMIG Approach April, / 43

53 Gene Design CDO Optimization Cloud Environment + Node Configuration Service Composition Initial Start Config? Grow Rule? Shrink Rule +???????????? CE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5... Crossover Points CP CP2 CP3 CP4 Further Node Configurations Gene Range Description Chromosome CE N Cloud environment id Cloud Environment SE N Service id Service Composition IT N VM Instance type id Initial Start Configuration NI N Nr. of VM instances to start initially Initial Start Configuration GA 0, Grow action; 0: scale up, : scale out Grow Rule G N Minimum nr. of VM instances Grow Rule G MIPIPS multiple in steps of 0. Grow Rule G3 0, Condition scope; 0: single VM, : all VMs Grow Rule G Condition median utilization in steps of 0.05 Grow Rule G Condition time period in steps of 5 minutes Grow Rule SA 0, Shrink action; 0: scale down, : scale in Shrink Rule S N Minimum nr. of VM instances Shrink Rule S MIPIPS multiple in steps of 0. Shrink Rule S3 0, Condition scope; 0: single VM, : all VMs Shrink Rule S Condition median utilization in steps of 0.05 Shrink Rule S Condition time period in steps of 5 minutes Shrink Rule Sören Frey The CloudMIG Approach April, / 43

54 Search Space Analysis CDO Optimization Φ = = c { }} { { }} { ((2 s ) t i v ( i= G G3;G5 c ((2 s ) 39, 90, 40 t i v) a i i= S S3;S5 G4;S4 {}}{ 20 j= j)) a i Φ : c : a i : S : t i : v : Nr. feasible individuals Nr. cloud providers Nr. allowed node configurations by cloud provider i (nodes) Set of services/ nodes in status quo deployment model Nr. combinations: cardinality of power set (w/o empty set) Nr. VM instance types offered by cloud provider i Nr. VM instances allowed to start initially Sören Frey The CloudMIG Approach April, / 43

55 Cloud Deployment Options - Examples CDO Optimization Sören Frey The CloudMIG Approach April, / 43

56 Cloud Deployment Options - Examples CDO Optimization CDO CE SE SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 CDO CDO3 CE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 SE SE IT NI CE SE IT NI SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 Sören Frey The CloudMIG Approach April, / 43

57 Crossover Operator CDO Optimization 4 sub crossover operators corresponding to 4 crossover points Crossover point Sub operator Description CP CE Swap cloud environments CP2 CI Swap initial start configurations CP3 CG Swap grow rules CP4 CS Swap shrink rules Sören Frey The CloudMIG Approach April, / 43

58 Crossover Operator CDO Optimization 4 sub crossover operators corresponding to 4 crossover points Crossover point Sub operator Description CP CE Swap cloud environments CP2 CI Swap initial start configurations CP3 CG Swap grow rules CP4 CS Swap shrink rules Example: CS CDO CP4 SE SE SE CE IT NI GA G G2 G3 G5 SA S4 G4 S S2 S3 S Parents CDO SE CE IT NI GA G G2 G3 G5 S4 G4 S S2 S3 S5 SA SE SE IT NI CP4 CDOA CE SE SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S Offspring CDOB SE CE IT NI GA G G2 G3 G5 S4 G4 S S2 S3 S5 SA SE SE IT NI Sören Frey The CloudMIG Approach April, / 43

59 Crossover Operator CDO Optimization 4 sub crossover operators corresponding to 4 crossover points Crossover point Sub operator Description CP CE Swap cloud environments CP2 CI Swap initial start configurations CP3 CG Swap grow rules CP4 CS Swap shrink rules Example: CI CP2 CP2 Parents SE CE IT NI GA G G2 G3 G5 S4 G4 S S2 S3 S5 SA SE SE IT NI CDO CDO CE SE IT NI SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 CP2 CP2 CDOC SE CE IT NI GA G G2 G3 G5 S4 G4 S S2 S3 S5 SA SE SE IT NI Offspring CDOD CE SE IT NI SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 Sören Frey The CloudMIG Approach April, / 43

60 Mutation Operator CDO Optimization 5 sub mutation operators Sub operator M-CE M-NN M-SC M-IS M-RR Description Mutate cloud environment Mutate nr. of node configurations and relocate services Mutate service composition of a single node configuration (add or remove service) Mutate the initial start configuration of a single node configuration (VM instance type or nr. of VMs to start initially) Mutate a reconfiguration rule (rule type or one of the genes G-G5/S-S5; constraints have to be satisfied) Sören Frey The CloudMIG Approach April, / 43

61 Mutation Operator CDO Optimization 5 sub mutation operators Sub operator M-CE M-NN M-SC M-IS M-RR Description Mutate cloud environment Mutate nr. of node configurations and relocate services Mutate service composition of a single node configuration (add or remove service) Mutate the initial start configuration of a single node configuration (VM instance type or nr. of VMs to start initially) Mutate a reconfiguration rule (rule type or one of the genes G-G5/S-S5; constraints have to be satisfied) Example: M-RR (mutate CPU utilization threshold of a grow rule) M-RR: Mutate G4 CDO CE SE SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 CDO* CE SE SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 Sören Frey The CloudMIG Approach April, / 43

62 Mutation Operator CDO Optimization 5 sub mutation operators Sub operator M-CE M-NN M-SC M-IS M-RR Description Mutate cloud environment Mutate nr. of node configurations and relocate services Mutate service composition of a single node configuration (add or remove service) Mutate the initial start configuration of a single node configuration (VM instance type or nr. of VMs to start initially) Mutate a reconfiguration rule (rule type or one of the genes G-G5/S-S5; constraints have to be satisfied) Example: M-NN M-NN: Remove node configuration Service 0 (gene SE) has to be relocated CDO CE SE IT NI SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 CDO3* CE SE SE SE IT NI GA G G2 G3 G4 G5 SA S S2 S3 S4 S5 Sören Frey The CloudMIG Approach April, / 43

63 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] Landing page 2 Sören Frey The CloudMIG Approach April, / 43

64 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] Landing page 2 Gizmo category 2 Sören Frey The CloudMIG Approach April, / 43

65 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] Landing page 2 Gizmo category 2 Sören Frey The CloudMIG Approach April, / 43

66 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] 2 Landing page 2 Gizmo category 3 Tiny gizmo details page Sören Frey The CloudMIG Approach April, / 43

67 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] 2 Landing page 2 Gizmo category 3 Tiny gizmo details page Sören Frey The CloudMIG Approach April, / 43

68 Case Study: Apache OfBiz CDO Optimization Fitness function: Simulate cloud deployment options of Apache OfBiz 0.04 Use Blade cluster and Kieker 2 to measure emulated user behavior: Arrival rate [method calls / minute] Simulation time [hours] 2 Landing page 2 Gizmo category 3 Tiny gizmo details page 4 Add tiny gizmo to cart Sören Frey The CloudMIG Approach April, / 43

69 Case Study: Apache OfBiz (cont d) CDO Optimization Experimental Setting: Single-cloud scenario (SCS ): Amazon EC2 Multi-cloud scenario (SCM ): Amazon EC2, Microsoft Windows Azure, Eucalyptus Metrics Hypervolume (HV) and Inverted Generational Distance (IGD): Comparing CDOXplorer with three $%! " alternative search methods: SI-RS: Simple random sampling SY-RS: Systematic random sampling SI-AN: Simulated annealing!! " " #!! " Sören Frey The CloudMIG Approach April, / 43

70 Case Study: Apache OfBiz (cont d) CDO Optimization Baseline (best-known) pareto-optimal front for SC S : Cost [$] Response times [ms] SLA violations Response times [ms] Cost [$] SLA violations Sören Frey The CloudMIG Approach April, / 43

71 Case Study: Apache OfBiz (cont d) CDO Optimization Exemplary results for SC S : Search Method Metric CDOXplorer SI-RS SY-RS SI-AN I.G. Distance Hypervolume Mean 2.70E E-02 4.E E-02 SD 2.0E E E E-03 Median 2.72E E E E-02 Min (best) 2.6E E E E-02 Max (worst) 3.03E E E E-02 Mean 4.48E-0 4.4E-0 4.4E E-0 SD 2.08E-03.96E E E-03 Median 4.48E E-0 4.4E E-0 Min (worst) 4.44E E E E-0 Max (best) 4.54E E E E-0 Sören Frey The CloudMIG Approach April, / 43

72 Case Study: Apache OfBiz (cont d) CDO Optimization CDOXplorer advantage relative to other approaches: Sören Frey The CloudMIG Approach April, / 43

73 Outline Tool Support CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

74 CloudMIG Xpress Tool Support Eclipse RCP application Sören Frey The CloudMIG Approach April, / 43

75 CloudMIG Xpress (cont d) Tool Support Code model extraction Sören Frey The CloudMIG Approach April, / 43

76 CloudMIG Xpress (cont d) Tool Support Conformance checking Sören Frey The CloudMIG Approach April, / 43

77 CloudMIG Xpress (cont d) Tool Support Deployment model editor Sören Frey The CloudMIG Approach April, / 43

78 CloudMIG Xpress (cont d) Tool Support Workload profile from monitoring data Sören Frey The CloudMIG Approach April, / 43

79 CloudMIG Xpress (cont d) Tool Support Synthetic workload profile Sören Frey The CloudMIG Approach April, / 43

80 CloudMIG Xpress (cont d) Tool Support CDO optimization Sören Frey The CloudMIG Approach April, / 43

81 Outline Conclusion CloudMIG Overview 2 Conformance Checking 3 CDO Optimization 4 Tool Support 5 Conclusion Sören Frey The CloudMIG Approach April, / 43

82 Conclusion Conclusion CloudMIG supports the migration of enterprise software systems to cloud environments Migration planning phase Incorporates: Reverse engineering step Modeling cloud environments with cloud profiles Workload profiles from actual monitoring data CDO simulation (estimation of future costs, response times, and SLA violations) Focus: Conformance Checking Deployment and Reconfiguration Optimization Tool support: CloudMIG Xpress Sören Frey The CloudMIG Approach April, / 43

83 References [AFG + 09] Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy H. Katz, Andrew Konwinski, Gunho Lee, David A. Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia. Above the Clouds: A Berkeley View of Cloud Computing. Technical Report UCB/EECS , EECS Department, University of California, Berkeley, Feb [CDPEV05] Gerardo Canfora, Massimiliano Di Penta, Raffaele Esposito, and Maria Luisa Villani. An approach for qos-aware service composition based on genetic algorithms. In Proceedings of the 2005 conference on Genetic and evolutionary computation, GECCO 05, pages , New York, NY, USA, ACM. [CLO3] [CRB + ] Cloud Computing Products and Services Directory. june 203. (Accessed April 7, 203). Rodrigo N. Calheiros, Rajiv Ranjan, Anton Beloglazov, César A. F. De Rose, and Rajkumar Buyya. [Fit2] Cloudsim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms. Software: Practice and Experience, 4():23 50, 20. Florian Fittkau. Simulating Cloud Deployment Options for Software Migration Support. Master s thesis, Software Engineering Group, University of Kiel, Kiel, Germany, March 202. Sören Frey The CloudMIG Approach Apr.,

84 Migration to the Cloud Backup Drivers: Leverage existing investment Cope with massively and rapidly increased load Reduce over and under-provisioning CapEx OpEx OpEx Focus on core business (a) Provisioning for peak load (a) Provisioning for peak load (b) Underprovisioning (a) Provisioning for peak load (b) Underprovisioning (c) Underprovisioning 2 Figure 2: (a) Even if peak load can be correctly anticipated, without elastic nonpeak times. (b) Underprovisioning case : potential revenue from use Underprovisioning case 2: some users desert the site permanently after e possible negative press result in a permanent loss of a portion of the reven load equals the datacenter s usable capacity, at which point users again potential users. (c) Underprovisioning 2 (c) Underprovisioning 2 Figure 2: (a) Even if peak load can Example: be correctly Transferring anticipated, [AFG risks. + without 09] Suppose elasticitybut we waste 0% of resources users who (shad re Figure 2: (a) Even if peak load nonpeak can be times. correctly (b) anticipated, Underprovisioning without visioning case elasticity are : permanently potential we waste revenue resources lost from (shaded opportunities, users not area) served during i.e. users (shaded whoarea) would is nonpeak times. (b) Underprovisioning Underprovisioning case : potential case 2: some revenue from users not served (shaded area) is sacrificed. (c) Underprovisioning case 2: some users desert the site permanently ausers betterdesert after experience. the site experiencing The permanently poor site is service; initially after experiencing this provisioned poor attrition and to handle service; an ex th possible negative press result in a possible negative press result in a permanent loss of a portion users permanent of the revenue server loss stream. of 400 a portion servers), of the but revenue unexpected stream. positive press drive Sören Frey The CloudMIG Approach the 00,000 who are turned away or receiveapr. bad, service, 203 by our 45 ass

85 CEC Violations - Quantitative Evaluation Backup Q2 How does the density of CEC violations vary among applications? Density of CEC Violations (#CEC Violations /,000 LOC) Violation Severity Warning Critical Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Sören Frey The CloudMIG Approach Apr.,

86 CEC Violations - Quantitative Evaluation (cont d) Backup Violation Types MethodCall: System exit SocketOpening FilesystemAccess: Limited read Q3 What types of CEC violations arefilesystemaccess: prevalent? No write Reflection TypeInstantiation: Thread restriction TypesWhitelist: Restr. JRE types CEC Violation Types Ratio (%) Violation Types MethodCall: System exit SocketOpening FilesystemAccess: Limited read FilesystemAccess: No write Reflection TypeInstantiation: Thread restriction TypesWhitelist: Restr. JRE types CEC Violation Types Ratio (%) Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Sören Frey The CloudMIG Approach Apr.,

87 CEC Violations - Quantitative Evaluation (cont d) Backup Q4 Regarding classes that raise CEC violations, how does the size of such classes relate to the number of CEC violations they raise? Class to App. CEC Violations Ratio (%) Class w/ CEC Violation(s) Coefficient Core ibatis JPetStore JavaBB Class Size (#LOC) (a) Class to App. CEC Violations Ratio (%) Class w/ CEC Violation(s) jforum 2..9 Ace Operator Class Size (#LOC) (b) Sören Frey The CloudMIG Approach Apr.,

88 CEC Violations - Quantitative Evaluation (cont d) Backup Q5 How does the density of CEC violations vary among classes? No. of CEC Violations per Class w/o Non Violating Classes (Normalized to 00 LOC) Coefficient Core ibatis JPetStore JavaBB 0.99 jforum 2..9 Ace Operator.7.0 Sören Frey The CloudMIG Approach Apr.,

89 CEC Violations - Quantitative Evaluation (cont d) Backup Q6 How does the number of CEC violations raised by an application s own sources relate to the number of CEC violations raised by utilized third-party libraries? Origin of Constraint Violations Application's Code Third Party Library Coefficient Core % (a) ibatis JPetStore % JavaBB % (b) (c) jforum % Ace Operator % (d) (e) Sören Frey The CloudMIG Approach Apr.,

90 Genetic Algorithm - Operator Constraints Backup Individuals are feasible under the following conditions: Each service has to be present at least once No duplication of a service on a single node configuration At least one service has to be present on a node configuration VM instance type has to match cloud environment (genes IT CE) If a grow rule exists, there has to be a shrink rule as well Reconfiguration actions have to match (scale out/scale in and scale up/scale down) Grow rule CPU utilization > shrink rule CPU utilization (G4 > S4) Sören Frey The CloudMIG Approach Apr., 203 5

91 CDO Optimization Case Study: Apache OfBiz Backup Results for SC M : Search Method Metric CDOXplorer SI-RS SY-RS SI-AN I.G. Distance Hypervolume Mean 3.08E E E E-02 SD 4.88E E E E-03 Median 3.2E E E E-02 Min (best) 2.3E E E E-02 Max (worst) 4.6E E E E-02 Mean 5.65E E-0 5.8E E-0 SD.82E-03.95E E-03.68E-03 Median 5.65E E-0 5.7E E-0 Min (worst) 5.6E-0 5.6E-0 5.3E-0 5.6E-0 Max (best) 5.70E E E E-0 Sören Frey The CloudMIG Approach Apr.,

92 Simplistic Migration Approach (/5) Verifying Assumptions: Demonstrate Limitations Backup Apache OFBiz Sören Frey The CloudMIG Approach Apr.,

public class Autenticador { private static final ThreadLocal threadusuario = new ThreadLocal();

public class Autenticador { private static final ThreadLocal<UsuarioInterface> threadusuario = new ThreadLocal<UsuarioInterface>(); JBook Shadowing - Oracle Source folder: src/main/java Main package: br.com.infowaypi.jbook. Actual package: autenticacao Java file: Autenticador.java package br.com.infowaypi.jbook.autenticacao; public

More information

Inovando sistemas com arquiteturas elásticas

Inovando sistemas com arquiteturas elásticas Inovando sistemas com arquiteturas elásticas Renato Bognar Principal System Engineer 1 Agenda Quais são os desafios de construir ua aplicação? Quais os pontos de atenção? Vai construir Apps móveis? Desfazendo

More information

QUESTÕES QUE COBRAM O CONHECIMENTO DOS CONECTIVOS:

QUESTÕES QUE COBRAM O CONHECIMENTO DOS CONECTIVOS: QUESTÕES QUE COBRAM O CONHECIMENTO DOS CONECTIVOS: 1 UFPR 77 - Which alternative can replace thus (line 5) in the text without changing the meaning? -) nevertheless -) though -) consequently -) despite

More information

Learn-Portuguese-Now.com presents... 100 PHRASES. What Did You Say? by Charlles Nunes

Learn-Portuguese-Now.com presents... 100 PHRASES. What Did You Say? by Charlles Nunes Learn-Portuguese-Now.com presents... English-Portuguese Flash Cards 100 PHRASES What Did You Say? by Charlles Nunes English-Portuguese Flash Cards 100 Phrases Congratulations! By downloading this volume

More information

NADABAS. Report from a short term mission to the National Statistical Institute of Mozambique, Maputo Mozambique. 16-27 April 2012

NADABAS. Report from a short term mission to the National Statistical Institute of Mozambique, Maputo Mozambique. 16-27 April 2012 MZ:2012:04r NADABAS Report from a short term mission to the National Statistical Institute of Mozambique, Maputo Mozambique 16-27 April 2012 within the frame work of the AGREEMENT ON CONSULTING ON INSTITUTIONAL

More information

INGLÊS. Aula 13 DIRECT AND INDIRECT SPEECH

INGLÊS. Aula 13 DIRECT AND INDIRECT SPEECH INGLÊS Aula 13 DIRECT AND INDIRECT SPEECH Direct(Quoted) And Indirect(Reported) Speech Você pode responder esta pergunta: "What did he/she say?" de duas maneiras: - Repetindo as palavras ditas (direct

More information

Bioinformática BLAST. Blast information guide. Buscas de sequências semelhantes. Search for Homologies BLAST

Bioinformática BLAST. Blast information guide. Buscas de sequências semelhantes. Search for Homologies BLAST BLAST Bioinformática Search for Homologies BLAST BLAST - Basic Local Alignment Search Tool http://blastncbinlmnihgov/blastcgi 1 2 Blast information guide Buscas de sequências semelhantes http://blastncbinlmnihgov/blastcgi?cmd=web&page_type=blastdocs

More information

Profissionais que pretendam desempenhar funções de Administrador de software como serviço (SaaS) ou de aplicações cloud.

Profissionais que pretendam desempenhar funções de Administrador de software como serviço (SaaS) ou de aplicações cloud. MCSA Office 365 [Ativar Portugal] Microsoft - Percursos Com certificação Nível: Avançado Duração: 41h Sobre o curso A GALILEU integrou na sua oferta formativa o Percurso de Formação e Certificação MCSA

More information

Seu servidor deverá estar com a versão 3.24 ou superior do Mikrotik RouterOS e no mínimo 4 (quatro) placas de rede.

Seu servidor deverá estar com a versão 3.24 ou superior do Mikrotik RouterOS e no mínimo 4 (quatro) placas de rede. Provedor de Internet e Serviços - (41) 3673-5879 Balance PCC para 3 links adsl com modem em bridge (2 links de 8mb, 1 link de 2mb). Seu servidor deverá estar com a versão 3.24 ou superior do Mikrotik RouterOS

More information

MCSD Azure Solutions Architect [Ativar Portugal] Sobre o curso. Metodologia. Microsoft - Percursos. Com certificação. Nível: Avançado Duração: 78h

MCSD Azure Solutions Architect [Ativar Portugal] Sobre o curso. Metodologia. Microsoft - Percursos. Com certificação. Nível: Avançado Duração: 78h MCSD Azure Solutions Architect [Ativar Portugal] Microsoft - Percursos Com certificação Nível: Avançado Duração: 78h Sobre o curso A GALILEU integrou na sua oferta formativa, o Percurso de Formação e Certificação

More information

Tech Papers Second z/os Knights tournament Tech News CMG-Italia Annual Conference Tech Notes EPV User Group 2015 Tech Support ICAP announcement

Tech Papers Second z/os Knights tournament Tech News CMG-Italia Annual Conference Tech Notes EPV User Group 2015 Tech Support ICAP announcement Facebook Website LinkedIn Email Tech Papers Second z/os Knights tournament Tech News CMG-Italia Annual Conference Tech Notes EPV User Group 2015 Tech Support ICAP announcement Every month we will invite

More information

Grandparents 2: Well grandma, there is. an easier way to do it. http://coerll.utexas.edu/brazilpod/cob/lesson.php?p=16

Grandparents 2: Well grandma, there is. an easier way to do it. http://coerll.utexas.edu/brazilpod/cob/lesson.php?p=16 Grandparents 2: Well grandma, there is an easier way to do it http://coerll.utexas.edu/brazilpod/cob/lesson.php?p=16 Conversa Brasileira Grandparents 2: Well grandma, there is Ruth s recipe has to be in

More information

THINK SUCCESS MAKE IT HAPPEN ANNA NOT MISSING HER ENGLISH CLASS. myclass AN ENGLISH COURSE THAT FITS YOUR LIFE

THINK SUCCESS MAKE IT HAPPEN ANNA NOT MISSING HER ENGLISH CLASS. myclass AN ENGLISH COURSE THAT FITS YOUR LIFE THINK SUCCESS MAKE IT HAPPEN ANNA NOT MISSING HER ENGLISH CLASS myclass AN ENGLISH COURSE THAT FITS YOUR LIFE Porquê myclass Why myclass? A importância do Inglês é fundamental tanto na construção da sua

More information

13 melhores extensões Magento melhorar o SEO da sua loja

13 melhores extensões Magento melhorar o SEO da sua loja Lojas Online ou Lojas Virtuais Seleção das melhores lojas para comprar online em Portugal. Loja virtual designa uma página na Internet com um software de gerenciamento de pedidos (carrinho de compras)

More information

Classe AGI - PHP 5.x

Classe AGI - PHP 5.x Classe AGI - PHP 5.x Contents Package AGI Procedural Elements 2 agi_lib_v5x.php 2 Package AGI Classes 3 Class AGI 3 Constructor construct 3 Method exec_command 4 Method getagi_env 4 Method getdebug 4 Method

More information

AUthorship attributtion can be defined as the task of

AUthorship attributtion can be defined as the task of Proceedings of International Joint Conference on Neural Networks, San Jose, California, USA, July 31 August 5, 2011 Selecting Syntactic Attributes for Authorship Attribution Paulo Varela, Edson Justino,

More information

TRANSACÇÕES. PARTE I (Extraído de SQL Server Books Online )

TRANSACÇÕES. PARTE I (Extraído de SQL Server Books Online ) Transactions Architecture TRANSACÇÕES PARTE I (Extraído de SQL Server Books Online ) Microsoft SQL Server 2000 maintains the consistency and integrity of each database despite errors that occur in the

More information

ArcHC_3D research case studies (FCT:PTDC/AUR/66476/2006) Casos de estudo do projecto ArcHC_3D (FCT:PTDC/AUR/66476/2006)

ArcHC_3D research case studies (FCT:PTDC/AUR/66476/2006) Casos de estudo do projecto ArcHC_3D (FCT:PTDC/AUR/66476/2006) ArcHC_3D research case studies (FCT:PTDC/AUR/66476/2006) Casos de estudo do projecto ArcHC_3D (FCT:PTDC/AUR/66476/2006) 1 Casa de Valflores - Loures 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Capela de S. Frutuoso

More information

Prova Escrita de Inglês

Prova Escrita de Inglês EXAME NACIONAL DO ENSINO SECUNDÁRIO Decreto-Lei n.º 74/2004, de 26 de março Prova Escrita de Inglês 10.º e 11.º Anos de Escolaridade Continuação bienal Prova 550/2.ª Fase 8 Páginas Duração da Prova: 120

More information

O que é WinRDBI O WinRDBI (Windows Relational DataBase Interpreter) é uma ferramenta educacional utilizada pela Universidade do Estado do Arizona, e que fornece uma abordagem ativa para entender as capacidades

More information

WORDS OF CONNECTION 1

WORDS OF CONNECTION 1 WORDS OF CONNECTION 1 Well-connected text Unconnected text 2 Introduction Em primeiro lugar,... / Antes de tudo... / Para começar,... / First of all,... / In the first place,... / To begin with,... Em

More information

DIPLOMADO DE JAVA - OCA

DIPLOMADO DE JAVA - OCA DIPLOMADO DE JAVA - OCA TABLA DE CONTENIDO INTRODUCCION... 3 ESTRUCTURA DEL DIPLOMADO... 4 Nivel I:... 4 Fundamentals of the Java Programming Language Java SE 7... 4 Introducing the Java Technology...

More information

Expert Reader 1000 Chapter 5. by Elen Fernandes

Expert Reader 1000 Chapter 5. by Elen Fernandes Expert Reader 1000 Chapter 5 by Elen Fernandes 5- A Dog Barbara wants a dog. She lives alone, so she thinks a dog can be a very nice friend. She decides to go to a pet shop. Barbara sees the animals at

More information

Certification Protocol For Certifica Minas Café - UTZ Certified

Certification Protocol For Certifica Minas Café - UTZ Certified Certification Protocol For Certifica Minas Café - UTZ Certified Certification Protocol Version 1.1, February 2014 www.utzcertified.org Copies of this document are available for free in electronic format

More information

Viagem da Austrália July 2013 13 a 23 de Julho

Viagem da Austrália July 2013 13 a 23 de Julho Viagem da Austrália July 2013 13 a 23 de Julho P O Box 40827 Kerikeri NEW ZEALAND Phone: 64 9 407 9514 Fax: 64 9 407 9114 Nós (Nomes dos pais) gostaríamos de autorizar a participação do nosso(a) filho

More information

CRM: customer relationship management: o revolucionário marketing de relacionamento com o cliente P

CRM: customer relationship management: o revolucionário marketing de relacionamento com o cliente P CRM: customer relationship management: o revolucionário marketing de relacionamento com o cliente Download: CRM: customer relationship management: o revolucionário marketing de relacionamento com o cliente

More information

EARNINGS 1Q15 Conference Call May 8, 2015

EARNINGS 1Q15 Conference Call May 8, 2015 EARNINGS 1Q15 Conference Call May 8, 2015 SAFE-HARBOR STATEMENT We make forward-looking statements that are subject to risks and uncertainties. These statements are based on the beliefs and assumptions

More information

Informatica Cloud Connector for SharePoint 2010/2013 User Guide

Informatica Cloud Connector for SharePoint 2010/2013 User Guide Informatica Cloud Connector for SharePoint 2010/2013 User Guide Contents 1. Introduction 3 2. SharePoint Plugin 4 3. Objects / Operation Matrix 4 4. Filter fields 4 5. SharePoint Configuration: 6 6. Data

More information

2015 Technical Events STG Lab Services & Training Latin America

2015 Technical Events STG Lab Services & Training Latin America March,2015 2015 Technical Events STG Lab Services & Training Latin America 2015 IBM Corporation Around the World Over 250 Business Partners who attended 2014 IBM Systems and Technology Group Technical

More information

www.ofertasrurais.com.br Um negócio bem SERTANEJo

www.ofertasrurais.com.br Um negócio bem SERTANEJo Um negócio bem SERTANEJo Compra e venda fácil! O site ofertasrurais.com.br é a opção justa, para o agronegócio, porque não cobra nada para publicar seus produtos. Faça seu cadastro e comece hoje mesmo

More information

Prova Escrita de Inglês

Prova Escrita de Inglês EXAME FINAL NACIONAL DO ENSINO SECUNDÁRIO Prova Escrita de Inglês 11.º Ano de Escolaridade Continuação bienal Decreto-Lei n.º 139/2012, de 5 de julho Prova 550/1.ª Fase 8 Páginas Duração da Prova: 120

More information

If you wanted multiple screens, there was no way for data to be accumulated or stored

If you wanted multiple screens, there was no way for data to be accumulated or stored Handling State in Web Applications Jeff Offutt http://www.cs.gmu.edu/~offutt/ SWE 642 Software Engineering for the World Wide Web sources: Professional Java Server Programming, Patzer, Wrox Web Technologies:

More information

03 infra TI RAID. MTBF; RAID Protection; Mirroring and Parity; RAID levels; write penalty

03 infra TI RAID. MTBF; RAID Protection; Mirroring and Parity; RAID levels; write penalty 03 infra TI RAID MTBF; RAID Protection; Mirroring and Parity; RAID levels; write penalty Por que RAID? Redundant Array Inexpensive Disks x Redudant Array Independent Disks Performance limitation of disk

More information

A the place where you can borrow books, not the place where you can buy them that place is a!

A the place where you can borrow books, not the place where you can buy them that place is a! Confusing Words! Let s try to sort them out... 1. Read the following examples in English and in Portuguese. Notice that the 2 different words have different meanings Like a travelling library. Como uma

More information

Prova Escrita de Inglês

Prova Escrita de Inglês EXAME FINAL NACIONAL DO ENSINO SECUNDÁRIO Prova Escrita de Inglês 11.º Ano de Escolaridade Continuação bienal Decreto-Lei n.º 139/2012, de 5 de julho Prova 550/2.ª Fase 8 Páginas Duração da Prova: 120

More information

Connecting the dots between

Connecting the dots between Connecting the dots between Research Team: Carla Abreu, Jorge Teixeira, Prof. Eugénio Oliveira Domain: News Research Keywords: Natural Language Processing, Information Extraction, Machine Learning. Objective

More information

Usability. Usability

Usability. Usability Objectives Review Usability Web Application Characteristics Review Servlets Deployment Sessions, Cookies Usability Trunk Test Harder than you probably thought Your answers didn t always agree Important

More information

QtsHttp Java Sample Code for Android

QtsHttp Java Sample Code for Android QtsHttp Java Sample Code for Android Getting Started Build the develop environment QtsHttp Java Sample Code is developed using ADT Bundle for Windows. The ADT (Android Developer Tools) Bundle includes:

More information

Servlet and JSP Filters

Servlet and JSP Filters 2009 Marty Hall Servlet and JSP Filters Originals of Slides and Source Code for Examples: http://courses.coreservlets.com/course-materials/msajsp.html Customized Java EE Training: http://courses.coreservlets.com/

More information

Empresas líderes usam TI como direcionador de inovação e mudança

Empresas líderes usam TI como direcionador de inovação e mudança Convivendo com a Complexidade Simplificando a T.I. Cyro Diehl 1 71% das Empresas Dizem que inovação é o fator #1 de competitividade Empresas líderes usam TI como direcionador de inovação e mudança Contudo,

More information

Getting Started with Telerik Data Access. Contents

Getting Started with Telerik Data Access. Contents Contents Overview... 3 Product Installation... 3 Building a Domain Model... 5 Database-First (Reverse) Mapping... 5 Creating the Project... 6 Creating Entities From the Database Schema... 7 Model-First

More information

SoftwarePlanner Active Directory Authentication

SoftwarePlanner Active Directory Authentication User s Guide SoftwarePlanner Active Directory Authentication This document provides an explanation of using Active Directory with SoftwarePlanner. 1 Narrative In some situations, it may be preferable to

More information

Prova de 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. FAÇA LETRA LEGÍVEL. Duração desta prova: TRÊS HORAS. UNIVERSIDADE FEDERAL DE MINAS GERAIS

Prova de 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. FAÇA LETRA LEGÍVEL. Duração desta prova: TRÊS HORAS. UNIVERSIDADE FEDERAL DE MINAS GERAIS INGLÊS Prova de 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. Leia atentamente as instruções que se seguem. 1 - Este caderno contém seis questões, abrangendo um total de sete páginas, numeradas de 3 a 9. Antes

More information

HCAHPS Quality Assurance Guidelines V9.0 Technical Corrections and Clarifications Revised August 2014

HCAHPS Quality Assurance Guidelines V9.0 Technical Corrections and Clarifications Revised August 2014 Subsequent to the release of the HCAHPS Quality Assurance Guidelines V9.0 (QAG V9.0), it has been determined that there are specific content items that require correction, addition and/or further clarification.

More information

Infinitel HotSpotWeb User Manual

Infinitel HotSpotWeb User Manual Infinitel HotSpotWeb User Manual INTRODUCTION... 5 REQUIREMENTS... 6 INSTALLATION... 7 FIRST STEP... 7 MICROSOFT WINDOWS... 7 Uninstall service... 7 OTHER OS... 7 ADVANCED INSTALLATION SETTINGS... 8 Application.properties

More information

Barracuda Syslog Barracuda Web Site Firewall

Barracuda Syslog Barracuda Web Site Firewall Overview There are four types of logs generated by the which can be configured to be sent over the syslog mechanism to a remote server specified by the Barracuda Web Site Firewall administrator. These

More information

THE LABEL EFFECTS ON THE CONSUMER INSTANT COFFEE PERCEPTION

THE LABEL EFFECTS ON THE CONSUMER INSTANT COFFEE PERCEPTION THE LABEL EFFECTS ON THE CONSUMER INSTANT COFFEE PERCEPTION DELIZA, R. 1 ; MacFIE, H.J.H. 2 e HEDDERLEY, D. 3 1 EMBRAPA - Food Technology, Av. das Américas, 29501 CEP 23020-470 Rio de Janeiro-Brazil; ;

More information

INGLÊS. 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. Duração desta prova: TRÊS HORAS. UNIVERSIDADE FEDERAL DE MINAS GERAIS FAÇA LETRA LEGÍVEL.

INGLÊS. 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. Duração desta prova: TRÊS HORAS. UNIVERSIDADE FEDERAL DE MINAS GERAIS FAÇA LETRA LEGÍVEL. UNIVERSIDADE FEDERAL DE MINAS GERAIS INGLÊS 2 a Etapa SÓ ABRA QUANDO AUTORIZADO. Leia atentamente as instruções que se seguem. 1 - Este Caderno de Prova contém quatro questões, constituídas de itens e

More information

Oracle Hyperion Financial Management Custom Pages Development Guide

Oracle Hyperion Financial Management Custom Pages Development Guide Oracle Hyperion Financial Management Custom Pages Development Guide CONTENTS Overview... 2 Custom pages... 2 Prerequisites... 2 Sample application structure... 2 Framework for custom pages... 3 Links...

More information

MYSQL DATABASE ACCESS WITH PHP

MYSQL DATABASE ACCESS WITH PHP MYSQL DATABASE ACCESS WITH PHP Fall 2009 CSCI 2910 Server Side Web Programming Typical web application interaction Database Server 3 tiered architecture Security in this interaction is critical Web Server

More information

Tutorial for Spring DAO with JDBC

Tutorial for Spring DAO with JDBC Overview Tutorial for Spring DAO with JDBC Prepared by: Nigusse Duguma This tutorial demonstrates how to work with data access objects in the spring framework. It implements the Spring Data Access Object

More information

Worldwide, 3.3 million deaths in 2012 were due to harmful use of alcohol

Worldwide, 3.3 million deaths in 2012 were due to harmful use of alcohol WHO calls on governments to do more to prevent alcohol-related deaths and diseases Worldwide, 3.3 million deaths in 2012 were due to harmful use of alcohol 12 MAY 2014 GENEVA Worldwide, 3.3 million deaths

More information

Android Bootcamp. Elaborado (com adaptações) a partir dos tutoriais:

Android Bootcamp. Elaborado (com adaptações) a partir dos tutoriais: Android Bootcamp Elaborado (com adaptações) a partir dos tutoriais: http://developer.android.com/resources/tutorials/hello-world.html http://developer.android.com/resources/tutorials/views/index.html Bootcamp

More information

Dicas e Truques de Otimização de Websites Python

Dicas e Truques de Otimização de Websites Python Dicas e Truques de Otimização de Websites Python Dicas e Truques de Otimização de Websites Python Fabiano Weimar dos Santos [Xiru] xiru@xiru.org FISL 9. - 28 Porto Alegre - RS O que iremos ver? Na PyCon

More information

Performance Optimization For Operational Risk Management Application On Azure Platform

Performance Optimization For Operational Risk Management Application On Azure Platform Performance Optimization For Operational Risk Management Application On Azure Platform Ashutosh Sabde, TCS www.cmgindia.org 1 Contents Introduction Functional Requirements Non Functional Requirements Business

More information

ConvincingMail.com Email Marketing Solution Manual. Contents

ConvincingMail.com Email Marketing Solution Manual. Contents 1 ConvincingMail.com Email Marketing Solution Manual Contents Overview 3 Welcome to ConvincingMail World 3 System Requirements 3 Server Requirements 3 Client Requirements 3 Edition differences 3 Which

More information

VESTIBULAR 2013 1ª Fase INGLÊS. Instruções Gerais: Instruções para a prova de Inglês:

VESTIBULAR 2013 1ª Fase INGLÊS. Instruções Gerais: Instruções para a prova de Inglês: Instruções Gerais: VESTIBULAR 2013 1ª Fase INGLÊS Hoje você deverá elaborar uma Redação e responder às questões de Língua Portuguesa e de Inglês. Você terá 4 horas para realizar as três provas. O verso

More information

WatchDox Administrator's Guide. Application Version 3.7.5

WatchDox Administrator's Guide. Application Version 3.7.5 Application Version 3.7.5 Confidentiality This document contains confidential material that is proprietary WatchDox. The information and ideas herein may not be disclosed to any unauthorized individuals

More information

versasrs HelpDesk quality of service

versasrs HelpDesk quality of service versacat v2.1.0 Date: 24 June 2010 Copyright 2002-2010 VersaDev Pty. Ltd. All Rights Reserved. *************************************************************** Contents ***************************************************************

More information

Interface Design for Mobile Devices Workshop [IDMD]

Interface Design for Mobile Devices Workshop [IDMD] Interface Design for Mobile Devices Workshop [IDMD] Future Places Porto Mónica Mendes & Nuno Correia Porto October 2009 Interface Design for Mobile Devices Workshop Mónica Mendes & Nuno Correia Future

More information

JBoss Forums Guide. 1. Introduction

JBoss Forums Guide. 1. Introduction JBoss s Guide @author Ryszard Kozmik 1. Introduction JBoss s is a subproject of JBoss Portal product. It is simply a forums portlet with all needed functionality for deploying

More information

GUIDELINES AND FORMAT SPECIFICATIONS FOR PROPOSALS, THESES, AND DISSERTATIONS

GUIDELINES AND FORMAT SPECIFICATIONS FOR PROPOSALS, THESES, AND DISSERTATIONS UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO DE COMUNICAÇÃO E EXPRESSÃO PÓS-GRADUAÇÃO EM INGLÊS: ESTUDOS LINGUÍSTICOS E LITERÁRIOS GUIDELINES AND FORMAT SPECIFICATIONS FOR PROPOSALS, THESES, AND DISSERTATIONS

More information

bab.la Phrases: Personal Best Wishes English-Portuguese

bab.la Phrases: Personal Best Wishes English-Portuguese Best Wishes : Marriage Congratulations. Wishing the both of you all the happiness in the world. Desejando a vocês toda felicidade do mundo. a Congratulations and warm wishes to both of you on your wedding

More information

Product Manual. MDM On Premise Installation Version 8.1. Last Updated: 06/07/15

Product Manual. MDM On Premise Installation Version 8.1. Last Updated: 06/07/15 Product Manual MDM On Premise Installation Version 8.1 Last Updated: 06/07/15 Parallels IP Holdings GmbH Vordergasse 59 8200 Schaffhausen Switzerland Tel: + 41 52 632 0411 Fax: + 41 52 672 2010 www.parallels.com

More information

NetSupport DNA Helpdesk Database Structure

NetSupport DNA Helpdesk Database Structure NetSupport DNA Helpdesk Database Structure For Helpdesk version 2.70 Andy Gibbons Page 1 of 24 11/03/2008 NETSUPPORT DNA HELPDESK DATABASE STRUCTURE 1 Table : HD_ADUpdates 4 4 Table : HD_Audit_Trail 5

More information

OpenReports: Users Guide

OpenReports: Users Guide OpenReports: Users Guide Author: Erik Swenson Company: Open Source Software Solutions Revision: Revision: 1.3 Last Modified: Date: 05/24/2004 1 Open Source Software Solutions Table Of Contents 1. Introduction...

More information

Quick Connect for Cloud Services

Quick Connect for Cloud Services Quick Connect for Cloud Services Version 3.5 Administrator Guide 2013 Quest Software, Inc. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software described

More information

Configure a SOAScheduler for a composite in SOA Suite 11g. By Robert Baumgartner, Senior Solution Architect ORACLE

Configure a SOAScheduler for a composite in SOA Suite 11g. By Robert Baumgartner, Senior Solution Architect ORACLE Configure a SOAScheduler for a composite in SOA Suite 11g By Robert Baumgartner, Senior Solution Architect ORACLE November 2010 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 1 Prerequisite

More information

Analytics Configuration Reference

Analytics Configuration Reference Sitecore Online Marketing Suite 1 Analytics Configuration Reference Rev: 2009-10-26 Sitecore Online Marketing Suite 1 Analytics Configuration Reference A Conceptual Overview for Developers and Administrators

More information

Prova Escrita de Inglês

Prova Escrita de Inglês EXAME FINAL NACIONAL DO ENSINO SECUNDÁRIO Prova Escrita de Inglês 11.º Ano de Escolaridade Continuação bienal Decreto-Lei n.º 139/2012, de 5 de julho Prova 550/1.ª Fase 8 Páginas Duração da Prova: 120

More information

ADT: Bug Tracker. Version 1.0

ADT: Bug Tracker. Version 1.0 ADT: Bug Tracker Version 1.0 Functional Specification Author Jason Version 1.0 Printed 2001-10-2212:23 PM Document Revisions ADT: Bug Tracker Version 1.0 Functional Specification Revisions on this document

More information

Prova escrita de conhecimentos específicos de Inglês

Prova escrita de conhecimentos específicos de Inglês Provas Especialmente Adequadas Destinadas a Avaliar a Capacidade para a Frequência dos Cursos Superiores do Instituto Politécnico de Leiria dos Maiores de 23 Anos - 2012 Instruções gerais Prova escrita

More information

Managing Data on the World Wide-Web

Managing Data on the World Wide-Web Managing Data on the World Wide-Web Sessions, Listeners, Filters, Shopping Cart Elad Kravi 1 Web Applications In the Java EE platform, web components provide the dynamic extension capabilities for a web

More information

Sophos Mobile Control Web service guide

Sophos Mobile Control Web service guide Sophos Mobile Control Web service guide Product version: 3.5 Document date: July 2013 Contents 1 About Sophos Mobile Control... 3 2 Prerequisites... 4 3 Server-side implementation... 5 4 Client-side implementation...

More information

Systems Integration in the Cloud Era with Apache Camel. Kai Wähner, Principal Consultant

Systems Integration in the Cloud Era with Apache Camel. Kai Wähner, Principal Consultant Systems Integration in the Cloud Era with Apache Camel Kai Wähner, Principal Consultant Kai Wähner Main Tasks Requirements Engineering Enterprise Architecture Management Business Process Management Architecture

More information

Introdução às Bases de Dados

Introdução às Bases de Dados Introdução às Bases de Dados 2011/12 http://ssdi.di.fct.unl.pt/ibd1112 Joaquim Silva (jfs@di.fct.unl.pt) The Bases de Dados subject Objective: To provide the basis for the modeling, implementation, analysis

More information

External User Manual. Online Registration of Users of the Electronic System for the Management of Medicinal Products of Human Use of INFARMED, I.P.

External User Manual. Online Registration of Users of the Electronic System for the Management of Medicinal Products of Human Use of INFARMED, I.P. Online Registration of Users of the Electronic System for the Management of Medicinal Products of Human Use of INFARMED, I.P. Página 1 de 11 Index 1 Introduction... 3 2 Using the Online Registration Form...

More information

Database FAQs - SQL Server

Database FAQs - SQL Server Database FAQs - SQL Server Kony Platform Release 5.0 Copyright 2013 by Kony, Inc. All rights reserved. August, 2013 This document contains information proprietary to Kony, Inc., is bound by the Kony license

More information

Viagem da Ilha do Sul FERIAS Abril 2013

Viagem da Ilha do Sul FERIAS Abril 2013 P O Box 40827 Kerikeri NEW ZEALAND Phone: 64 9 407 9514 Fax: 64 9 407 9114 Viagem da Ilha do Sul FERIAS Abril 2013 Nós (Nomes dos pais) gostaríamos de autorizar a participação do nosso(a) filho (a) Na

More information

Mass Emailing Techniques

Mass Emailing Techniques Mass Emailing Techniques... This is not about spam! Pascal Robert MacTI Why? Most of us have to send mass email (newsletter, special offers, reminders, etc.) Sending emails can take some time Have to avoid

More information

Table of contents. Reverse-engineers a database to Grails domain classes.

Table of contents. Reverse-engineers a database to Grails domain classes. Table of contents Reverse-engineers a database to Grails domain classes. 1 Database Reverse Engineering Plugin - Reference Documentation Authors: Burt Beckwith Version: 0.5.1 Table of Contents 1 Introduction

More information

ISTMA-AMERICAS BUSINESS CONDITIONS REPORT. For the 6-Month Period Ending December 31, 2012

ISTMA-AMERICAS BUSINESS CONDITIONS REPORT. For the 6-Month Period Ending December 31, 2012 ISTMA-AMERICAS BUSINESS CONDITIONS REPORT For the 6-Month Period Ending December 31, 2012 Data Provided by the Members of: CANADA USA BRAZIL Canadian Tooling National Tooling Associação Brasileira da &

More information

Core Java+ J2EE+Struts+Hibernate+Spring

Core Java+ J2EE+Struts+Hibernate+Spring Core Java+ J2EE+Struts+Hibernate+Spring Java technology is a portfolio of products that are based on the power of networks and the idea that the same software should run on many different kinds of systems

More information

SHAREPOINT 2013 IN INFRASTRUCTURE AS A SERVICE

SHAREPOINT 2013 IN INFRASTRUCTURE AS A SERVICE SHAREPOINT 2013 IN INFRASTRUCTURE AS A SERVICE Contents Introduction... 3 Step 1 Create Azure Components... 5 Step 1.1 Virtual Network... 5 Step 1.1.1 Virtual Network Details... 6 Step 1.1.2 DNS Servers

More information

SUSE Manager in the Public Cloud. SUSE Manager Server in the Public Cloud

SUSE Manager in the Public Cloud. SUSE Manager Server in the Public Cloud SUSE Manager in the Public Cloud SUSE Manager Server in the Public Cloud Contents 1 Instance Requirements... 2 2 Setup... 3 3 Registration of Cloned Systems... 6 SUSE Manager delivers best-in-class Linux

More information

Supporting Multi-tenancy Applications with Java EE

Supporting Multi-tenancy Applications with Java EE Supporting Multi-tenancy Applications with Java EE Rodrigo Cândido da Silva @rcandidosilva JavaOne 2014 CON4959 About Me Brazilian guy ;) Work for Integritas company http://integritastech.com Software

More information

bbc Developing Service Providers Adobe Flash Media Rights Management Server November 2008 Version 1.5

bbc Developing Service Providers Adobe Flash Media Rights Management Server November 2008 Version 1.5 bbc Developing Service Providers Adobe Flash Media Rights Management Server November 2008 Version 1.5 2008 Adobe Systems Incorporated. All rights reserved. Adobe Flash Media Rights Management Server 1.5

More information

Engagement Analytics API Reference Guide

Engagement Analytics API Reference Guide Engagement Analytics API Reference Guide Rev: 2 April 2014 Sitecore 6.5 or later Engagement Analytics API Reference Guide A developer's reference guide to the Engagement Analytics API Table of Contents

More information

1 //---------------------------------------------------------------------------- 2 // Arquivo : UmPippo.vec 3 // Projeto : Robô Um Pippo 4 //

1 //---------------------------------------------------------------------------- 2 // Arquivo : UmPippo.vec 3 // Projeto : Robô Um Pippo 4 // 1 //---------------------------------------------------------------------------- 2 // Arquivo : UmPippo.vec 3 // Projeto : Robô Um Pippo 4 // Objetivo : Reconhecimento de comandos de voz para Um Pippo

More information

Installation, Configuration, and Usage

Installation, Configuration, and Usage Installation, Configuration, and Usage Copyright Free Lunch Labs www.freelunchlabs.com Installation BEFORE INSTALLING THIS EXTENSION CREATE OF BACKUP OF YOUR MAGENTO INSTALLATION AND ALL ASSOCISTED FILES

More information

ROTEIRO DE RECUPERAÇÃO SEMESTRAL DE INGLÊS 6º ANO INTERM. 2º SEM - 2015 INSTRUÇÕES PARA A PARTICIPAÇÃO NA RECUPERAÇÃO

ROTEIRO DE RECUPERAÇÃO SEMESTRAL DE INGLÊS 6º ANO INTERM. 2º SEM - 2015 INSTRUÇÕES PARA A PARTICIPAÇÃO NA RECUPERAÇÃO ROTEIRO DE RECUPERAÇÃO SEMESTRAL DE INGLÊS 6º ANO INTERM. 2º SEM - 2015 Nome: Nº 6ª Série Data: / / Professor(a): Nota: INSTRUÇÕES PARA A PARTICIPAÇÃO NA RECUPERAÇÃO Neste bimestre, sua media foi inferior

More information

Chapter 4. From crying to controlling: how Portuguese girls adapted to their secondary school in England

Chapter 4. From crying to controlling: how Portuguese girls adapted to their secondary school in England !""# Guida de Abreu, Teresa Silva & Hannah Lambert 75 Chapter 4 From crying to controlling: how Portuguese girls adapted to their secondary school in England Guida de Abreu, Teresa Silva & Hannah Lambert

More information

Endnote Web tutorial for BJCVS/RBCCV

Endnote Web tutorial for BJCVS/RBCCV Oliveira MAB, SPECIAL et al. - Endnote ARTICLE Web tutorial for BJCVS/RBCCV Endnote Web tutorial for BJCVS/RBCCV Tutorial do Endnote Web para o BJCVS/RBCCV Marcos Aurélio Barboza de Oliveira 1, MD, PhD;

More information

Web Programming: Announcements. Sara Sprenkle August 3, 2006. August 3, 2006. Assignment 6 due today Project 2 due next Wednesday Review XML

Web Programming: Announcements. Sara Sprenkle August 3, 2006. August 3, 2006. Assignment 6 due today Project 2 due next Wednesday Review XML Web Programming: Java Servlets and JSPs Sara Sprenkle Announcements Assignment 6 due today Project 2 due next Wednesday Review XML Sara Sprenkle - CISC370 2 1 Web Programming Client Network Server Web

More information

EuroRec Repository. Translation Manual. January 2012

EuroRec Repository. Translation Manual. January 2012 EuroRec Repository Translation Manual January 2012 Added to Deliverable D6.3 for the EHR-Q TN project EuroRec Repository Translations Manual January 2012 1/21 Table of Content 1 Property of the document...

More information

Boletim Técnico. Esta implementação consiste em atender a legislação do intercâmbio eletrônico na versão 4.0 adotado pela Unimed do Brasil.

Boletim Técnico. Esta implementação consiste em atender a legislação do intercâmbio eletrônico na versão 4.0 adotado pela Unimed do Brasil. Produto : Totvs + Foundation Saúde + 11.5.3 Chamado : TFOQEI Data da criação : 27/08/12 Data da revisão : 10/09/12 País(es) : Brasil Banco(s) de Dados : Esta implementação consiste em atender a legislação

More information

ADT: Mailing List Manager. Version 1.0

ADT: Mailing List Manager. Version 1.0 ADT: Mailing List Manager Version 1.0 Functional Specification Author Josh Hill Version 1.0 Printed 2001-10-221:32 PM `Document Revisions ADT: Mailing List Manager Version 1.0 Functional Specification

More information

Certified PHP/MySQL Web Developer Course

Certified PHP/MySQL Web Developer Course Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,

More information

Integration Client Guide

Integration Client Guide Integration Client Guide 2015 Bomgar Corporation. All rights reserved worldwide. BOMGAR and the BOMGAR logo are trademarks of Bomgar Corporation; other trademarks shown are the property of their respective

More information