// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . execution . configurations Ċ Ċ import Ġcom . intellij . openapi . components . Base State Ċ import Ġcom . intellij . openapi . util . N ls Safe Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . openapi . util . io . File Util Rt Ċ import Ġcom . intellij . util . Smart List Ċ import Ġcom . intellij . util . containers . Smart HashSet Ċ import Ġcom . intellij . util . xml b . Converter Ċ import Ġcom . intellij . util . xml b . annotations . Attribute Ċ import Ġcom . intellij . util . xml b . annotations . Tag Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠThe Ġinformation Ġabout Ġa Ġsingle Ġlog Ġfile Ġdisplayed Ġin Ġthe Ġconsole Ġwhen Ġthe Ġconfiguration Ċ Ġ* Ġis Ġrun . Ċ Ġ*/ Ċ @ Tag (" log _ file ") Ċ class ĠLog File Options Ġ: ĠBase State Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġcollect Matched Files ( root : ĠFile , Ġpattern : ĠPattern , Ġfiles : ĠMutable List < File >) Ġ{ ĊĠĠĠĠĠ Ġval Ġdirs Ġ= Ġroot . list Files () Ġ?: Ġreturn ĊĠĠĠĠĠ Ġdirs . filter To ( files ) Ġ{ Ġpattern . matcher ( it . name ). matches () Ġ&& Ġit . isFile Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġare Equal ( options 1 : ĠLog File Options ?, Ġoptions 2 : ĠLog File Options ?): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġif Ġ( options 1 Ġ== Ġnull Ġ|| Ġoptions 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoptions 1 Ġ=== Ġoptions 2 ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġoptions 1 . name Ġ== Ġoptions 2 . name Ġ&& ĊĠĠĠĠĠĠĠĠĠĠ Ġoptions 1 . path Pattern Ġ== Ġoptions 2 . path Pattern Ġ&& ĊĠĠĠĠĠĠĠĠĠĠ Ġ! options 1 . is Show All Ġ== Ġ! options 2 . is Show All Ġ&& ĊĠĠĠĠĠĠĠĠĠĠ Ġoptions 1 . isEnabled Ġ== Ġoptions 2 . isEnabled Ġ&& ĊĠĠĠĠĠĠĠĠĠĠ Ġoptions 1 . is Skip Content Ġ== Ġoptions 2 . is Skip Content ĊĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ get : Attribute (" alias ") ĊĠ Ġ@ get : N ls Safe ĊĠ Ġvar Ġname : ĠString ? Ġby Ġstring () ĊĊĠ Ġ@ get : Attribute ( value Ġ= Ġ" path ", Ġconverter Ġ= ĠPath Converter :: class ) ĊĠ Ġ@ get : N ls Safe ĊĠ Ġvar Ġpath Pattern : ĠString ? Ġby Ġstring () ĊĊĠ Ġ@ get : Attribute (" checked ") ĊĠ Ġvar Ġis Enabled Ġby Ġproperty ( true ) ĊĊĠ Ġ@ get : Attribute (" skipped ") ĊĠ Ġvar Ġis Skip Content Ġby Ġproperty ( true ) ĊĊĠ Ġ@ get : Attribute (" show _ all ") ĊĠ Ġvar Ġis Show All Ġby Ġproperty ( false ) ĊĊĠ Ġ@ get : Attribute ( value Ġ= Ġ" charset ", Ġconverter Ġ= ĠCharset Converter :: class ) ĊĠ Ġvar Ġcharset : ĠCharset Ġby Ġproperty ( Charset . default Charset ()) ĊĊĠ Ġfun Ġget Paths (): ĠSet < String > Ġ{ ĊĠĠĠ Ġval Ġlog File Ġ= ĠFile ( path Pattern !! ) ĊĠĠĠ Ġif Ġ( log File . exists ()) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġset Of ( path Pattern !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdir Index Ġ= Ġpath Pattern !!. lastIndexOf ( File . separator ) ĊĠĠĠ Ġif Ġ( dir Index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġempty Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġfiles Ġ= ĠSmart List < File >() ĊĠĠĠ Ġcollect Matched Files ( File ( path Pattern !!. substring ( 0 , Ġdir Index )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPattern . compile ( File Util . convert Ant To Regexp ( path Pattern !!. substring ( dir Index Ġ+ ĠFile . separator . length ))), Ġfiles ) ĊĠĠĠ Ġif Ġ( files . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġempty Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Show All ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmart HashSet < String >() ĊĠĠĠĠĠ Ġresult . ensure Capacity ( files . size ) ĊĠĠĠĠĠ Ġfiles . map To ( result ) Ġ{ Ġit . path Ġ} ĊĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġvar Ġlast File : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . lastModified () Ġ> Ġlast File . lastModified ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast File Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlast File Ġ= Ġfile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġassert ( last File Ġ!= Ġnull ) ĊĠĠĠĠĠ Ġreturn Ġset Of ( last File !!. path ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// read Ġexternal ĊĠ Ġconstructor () ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġconstructor ( name : ĠString ?, Ġpath : ĠString ?, Ġenabled : ĠBoolean Ġ= Ġtrue , Ġskip Content : ĠBoolean Ġ= Ġtrue , Ġshow All : ĠBoolean Ġ= Ġfalse ) Ġ: Ġthis ( name , Ġpath , Ġnull , Ġenabled , Ġskip Content , Ġshow All ) ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġconstructor ( name : ĠString ?, Ġpath : ĠString ?, Ġcharset : ĠCharset ?, Ġenabled : ĠBoolean Ġ= Ġtrue , Ġskip Content : ĠBoolean Ġ= Ġtrue , Ġshow All : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠ Ġpath Pattern Ġ= Ġpath ĊĠĠĠ Ġis Enabled Ġ= Ġenabled ĊĠĠĠ Ġis Skip Content Ġ= Ġskip Content ĊĠĠĠ Ġis Show All Ġ= Ġshow All ĊĠĠĠ Ġthis . charset Ġ= Ġcharset Ġ?: ĠCharset . default Charset () ĊĠ Ġ} ĊĊĠ Ġfun Ġset Last ( last : ĠBoolean ) Ġ{ ĊĠĠĠ Ġis Show All Ġ= Ġ! last ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠPath Converter Ġ: ĠConverter < String >() Ġ{ ĊĠ Ġoverride Ġfun Ġfrom String ( value : ĠString ) Ġ= ĠFile Util Rt . to System Dependent Name ( value ) ĊĊĠ Ġoverride Ġfun ĠtoString ( value : ĠString ) Ġ= ĠFile Util Rt . to System In dependent Name ( value ) Ċ } Ċ Ċ private Ġclass ĠCharset Converter Ġ: ĠConverter < Charset >() Ġ{ ĊĠ Ġoverride Ġfun Ġfrom String ( value : ĠString ): ĠCharset ? Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ ĠCharset . forName ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠCharset . default Charset () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString ( value : ĠCharset ) Ġ= Ġvalue . name () Ċ }