/* Ċ ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠTh ay lon ĠG ue des ĠSan tos Ġand ĠE du ardo ĠSm il ĠPr ut chi ĊĊ ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : ĊĊ ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . ĊĊ ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġbr . uff . sc ic umul us 2 prov . core Ċ Ċ import Ġbr . uff . sc ic umul us 2 prov . model . C Activity Ċ import Ġbr . uff . sc ic umul us 2 prov . model . E Activation Ċ import Ġbr . uff . sc ic umul us 2 prov . model . E Activity Ċ import Ġbr . uff . sc ic umul us 2 prov . model . E Workflow Ċ import Ġorg . sql 2 o . data . Table Ċ import Ġjava . sql . Timestamp Ċ Ċ /** Ċ Ġ* Ġ@ author ĠTh ay lon ĠG ue des ĠSan tos Ċ Ġ* Ġ@ email Ġth ay long s @ gmail . com Ċ Ġ*/ Ċ class ĠExecution Data DAO ( val Ġdao : ĠBasic Dao ) Ġ{ ĊĊĠĠĠ Ġfun Ġfind E Workflow By Tag And Exec Tag ( workflow Tag : ĠString , Ġexec Tag : ĠString ): ĠE Workflow Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġew ork flow ĠWHERE Ġt age xec =: exec Tag Ġand Ġtag =: workflow Tag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" exec Tag " Ġto Ġexec Tag , Ġ" workflow Tag " Ġto Ġworkflow Tag ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Workflow :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind E Activity By Act And E Workflow ( act : ĠC Activity , Ġe Workflow : ĠE Workflow ): ĠE Activity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* Ġfrom Ġe activity ĠWHERE Ġw k fid =: wk fid Ġand Ġc act id =: c act id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" wk fid " Ġto Ġe Workflow . ew k fid , Ġ" c act id " Ġto Ġact . act id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Activity :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Data From ( e Workflow : ĠE Workflow , ĠtableName : ĠString ): ĠTable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" select Ġ* Ġfrom Ġ${ e Workflow . tag }. $ tableName Ġwhere Ġew k fid =: id " ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch Table ( query , Ġmap Of (" id " Ġto Ġe Workflow . ew k fid )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget E Activ ations By E Activity ( e activity : ĠE Activity ): ĠList < E Activation > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch (" select Ġ* Ġfrom Ġe activation Ġwhere Ġact id =: id ", Ġmap Of (" id " Ġto Ġe activity . act id ), ĠE Activation :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Used Machines ( e Workflow : ĠE Workflow ): ĠTable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġem achine . machine id ĠAS Ġmachine _ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġem achine . hostname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġem achine . address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġem achine . mf lop sper second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe activation . task id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġem achine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN Ġe activation ĠON Ġem achine . machine id Ġ= Ġe activation . machine id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN Ġe activity ĠON Ġe activation . act id Ġ= Ġe activity . act id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġe activity . wk fid Ġ= Ġ: id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch Table ( query , Ġmap Of (" id " Ġto Ġe Workflow . ew k fid )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetKey Space Data ( ew ork flow : ĠE Workflow ): ĠTable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe key space . task id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe key space . relation name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe key space . relation type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe key space . f ik ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġe key space ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN Ġe activity ĠON Ġe activity . act id Ġ= Ġe key space . act id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġe activity . wk fid Ġ= Ġ: id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch Table ( query , Ġmap Of (" id " Ġto Ġew ork flow . ew k fid )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Workflow s (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch (" select Ġtag Ġfrom Ġc workflow ", Ġmap Of (), ĠString :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Execution Of Workflow s ( workflow Tag : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdao . execute And Fetch (" select Ġt age xec Ġfrom Ġew ork flow Ġwhere Ġtag =: tag ", Ġmap Of (" tag " Ġto Ġworkflow Tag ), ĠString :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Start And EndTime Of Execution Workflow ( e Workflow : ĠE Workflow ): ĠArray < Timestamp > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . execute And Fetch Table (" SELECT Ġmin ( act . start time ), Ġmax ( act . end time ) ĠFROM Ġe activity Ġact ĠWHERE Ġact . wk fid Ġ= Ġ: id ", Ġmap Of (" id " Ġto Ġe Workflow . ew k fid )) ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( result . rows ()[ 0 ]. getObject ( 0 ) Ġas ĠTimestamp , Ġresult . rows ()[ 0 ]. getObject ( 1 ) Ġas ĠTimestamp ) ĊĠĠĠ Ġ} Ċ } Ċ