package Ġcom . on eli ang . k tx . frame . plugin Ċ Ċ import Ġcom . on eli ang . k tx . Constants Ċ import Ġcom . on eli ang . k tx . util . common . to File Ċ import Ġcom . on eli ang . k tx . util . file . File Detector Ċ Ċ class ĠPlugin Loader ( private Ġval Ġdirectory : ĠString ) Ġ: ĠFile Detector . Detect Processor Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFILE _ SUFFIX Ġ= ĠConstants . Symbol . DOT Ġ+ ĠConstants . File . JAR ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġplugin GroupId Ġ= Ġthis . hashCode (). toString () ĊĠĠĠ Ġprivate Ġval Ġfile Detector Ġ= ĠFile Detector ( this . directory , ĠFILE _ SUFFIX ) ĊĠĠĠ Ġprivate Ġvar Ġplugin Group : ĠPlugin Group ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . file Detector . detect Processor Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġthis . file Detector . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Update File Process ( filePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . plugin Group ?. destroy () ĊĠĠĠĠĠĠĠ Ġthis . plugin Group Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠSystem . gc () ĊĠĠĠĠĠĠĠ Ġthis . plugin Group Ġ= ĠPlugin Group ( this . plugin GroupId ) ĊĠĠĠĠĠĠĠ Ġthis . plugin Group ?. initialize () ĊĠĠĠĠĠĠĠ Ġval Ġplugin File Ġ= ĠPlugin File ( filePath . to File (). name , Ġurl Ġ= ĠfilePath ) ĊĠĠĠĠĠĠĠ Ġthis . plugin Group ?. add OrUpdate Plugin File ( plugin File ) ĊĠĠĠĠĠĠĠ Ġthis . plugin Group ?. load Plugin File () Ċ // ĠĠĠĠĠĠĠ Ġprintln (" update :$ filePath ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Plugin ( filename : ĠString , Ġplugin Id : ĠString ): ĠPlugin ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . plugin Group ?. find Plugin ( filename , Ġplugin Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġplugin Loader Ġ= ĠPlugin Loader (" D :/ b ") Ċ }