package Ġorg . ve up ath db . lib . blast . blast n . fields Ċ Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġorg . ve up ath db . lib . blast . common . Flag D ust Ċ import Ġorg . ve up ath db . lib . blast . serial . B last Field ĊĊ Ċ private Ġconst Ġval ĠKey Level Ġ Ġ= Ġ" level " Ċ private Ġconst Ġval ĠKey Window Ġ= Ġ" window " Ċ private Ġconst Ġval ĠKey Link er Ġ= Ġ" linker " Ċ private Ġconst Ġval ĠDef Level Ġ Ġ= Ġ 2 0 Ċ private Ġconst Ġval ĠDef Window Ġ= Ġ 6 4 Ċ private Ġconst Ġval ĠDef Link er Ġ= Ġ 1 ĊĊ Ċ /** Ċ Ġ* Ġ- dust Ġ`< String >` Ċ Ġ* Ċ Ġ* ĠFilter Ġquery Ġsequence Ġwith ĠD UST Ġ( Format : Ġ' yes ', Ġ' level Ġwindow Ġlinker ', Ġor Ċ Ġ* Ġ' no ' Ġto Ġdisable ) Ċ Ġ* Ċ Ġ* ĠDefault Ġ= Ġ`" 2 0 Ġ 6 4 Ġ 1 "` Ċ Ġ*/ Ċ sealed Ġinterface ĠD ust Ġ: ĠB last Field Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIndicates Ġwhether Ġthis ĠD ust Ġvalue Ġis Ġ`" yes " `. ĊĠĠ Ġ*/ ĊĠ Ġval Ġis Yes : ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIndicates Ġwhether Ġthis ĠD ust Ġvalue Ġis Ġ`" no " `. ĊĠĠ Ġ*/ ĊĠ Ġval Ġis No : ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġlevel Ġvalue Ġfor Ġa Ġvalue Ġbased ĠD ust Ġvalue . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠD UST Ġlevel Ġ( score Ġthreshold Ġfor Ġsub windows ) ĊĠĠ Ġ* ĊĠĠ Ġ* ĠDefault Ġ= Ġ` 2 0 ` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠIllegalStateException ĠIf Ġthe Ġcurrent ĠD ust Ġimplementation Ġis Ġa ĊĠĠ Ġ* Ġ`" yes "` Ġor Ġ`" no "` Ġvalue . ĊĠĠ Ġ*/ ĊĠ Ġval Ġlevel : ĠInt ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġwindow Ġvalue Ġfor Ġa Ġvalue Ġbased ĠD ust Ġvalue . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠD UST Ġwindow Ġlength ĊĠĠ Ġ* ĊĠĠ Ġ* ĠDefault Ġ= Ġ` 6 4 ` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠIllegalStateException ĠIf Ġthe Ġcurrent ĠD ust Ġimplementation Ġis Ġa ĊĠĠ Ġ* Ġ`" yes "` Ġor Ġ`" no "` Ġvalue . ĊĠĠ Ġ*/ ĊĠ Ġval Ġwindow : ĠInt ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġlinker Ġvalue Ġfor Ġa Ġvalue Ġbased ĠD ust Ġvalue . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠD UST Ġlinker Ġ( how Ġclose Ġmasked Ġintervals Ġshould Ġbe Ġto Ġget Ġmerged Ġtogether ). ĊĠĠ Ġ* ĊĠĠ Ġ* ĠDefault Ġ= Ġ` 1 ` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠIllegalStateException ĠIf Ġthe Ġcurrent ĠD ust Ġimplementation Ġis Ġa ĊĠĠ Ġ* Ġ`" yes "` Ġor Ġ`" no "` Ġvalue . ĊĠĠ Ġ*/ ĊĠ Ġval Ġlinker : ĠInt ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġ`" yes "` ĠD ust Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġyes (): ĠD ust Ġ= ĠYes D ust ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġ`" no "` ĠD ust Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġno (): ĠD ust Ġ= ĠNo D ust ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġvalue Ġbased ĠD ust Ġvalue Ġwrapping Ġthe Ġgiven Ġinputs . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlevel ĠValue ĠD ust Ġlevel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwindow ĠValue ĠD ust Ġwindow . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlinker ĠValue ĠD ust Ġlinker . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġof ( ĊĠĠĠĠĠ Ġlevel : Ġ ĠInt Ġ= ĠDef Level , ĊĠĠĠĠĠ Ġwindow : ĠInt Ġ= ĠDef Window , ĊĠĠĠĠĠ Ġlinker : ĠInt Ġ= ĠDef Link er , ĊĠĠĠ Ġ): ĠD ust Ġ= ĊĠĠĠĠĠ ĠVal D ust ( level , Ġwindow , Ġlinker ) ĊĠ Ġ} Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ internal Ġfun ĠParse D ust ( js : ĠObject Node ): ĠD ust Ġ{ ĊĠ Ġval Ġtmp Ġ= Ġjs [ Flag D ust ] Ġ?: Ġreturn ĠVal D ust () ĊĊĠ Ġif Ġ( tmp . is Text ual ) ĊĠĠĠ Ġreturn Ġparse Text D ust ( tmp . text Value ()) ĊĊĠ Ġif Ġ( tmp . isObject ) ĊĠĠĠ Ġreturn Ġparse Val D ust ( tmp Ġas ĠObject Node ) ĊĊĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġ$ Flag D ust Ġvalue Ġ$ tmp ") Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ private Ġfun Ġparse Val D ust ( js : ĠObject Node ): ĠVal D ust Ġ{ ĊĠ Ġval Ġn Level Ġ Ġ= Ġjs [ Key Level ] ĊĠ Ġval Ġn Window Ġ= Ġjs [ Key Window ] ĊĠ Ġval Ġn Link er Ġ= Ġjs [ Key Link er ] ĊĊĠ Ġif Ġ( n Level Ġ!= Ġnull Ġ&& Ġ! n Level . is Integral Number ) ĊĠĠĠ Ġthrow ĠIllegalArgumentException ("$ Flag D ust .$ Key Level Ġmust Ġbe Ġan Ġint Ġvalue .") ĊĠ Ġif Ġ( n Window Ġ!= Ġnull Ġ&& Ġ! n Window . is Integral Number ) ĊĠĠĠ Ġthrow ĠIllegalArgumentException ("$ Flag D ust .$ Key Window Ġmust Ġbe Ġan Ġint Ġvalue .") ĊĠ Ġif Ġ( n Link er Ġ!= Ġnull Ġ&& Ġ! n Link er . is Integral Number ) ĊĠĠĠ Ġthrow ĠIllegalArgumentException ("$ Flag D ust .$ Key Link er Ġmust Ġbe Ġan Ġint Ġvalue .") ĊĊĠ Ġreturn ĠVal D ust ( ĊĠĠĠ Ġn Level ?. intValue () Ġ?: ĠDef Level , ĊĠĠĠ Ġn Window ?. intValue () Ġ?: ĠDef Window , ĊĠĠĠ Ġn Link er ?. intValue () Ġ?: ĠDef Link er , ĊĠ Ġ) Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ internal Ġdata Ġclass ĠVal D ust ( ĊĠ Ġoverride Ġval Ġlevel : Ġ ĠInt Ġ= ĠDef Level , ĊĠ Ġoverride Ġval Ġwindow : ĠInt Ġ= ĠDef Window , ĊĠ Ġoverride Ġval Ġlinker : ĠInt Ġ= ĠDef Link er , Ċ ) Ġ: ĠD ust Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis No Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis Default ĊĠĠĠ Ġget () Ġ= Ġlevel Ġ== ĠDef Level Ġ&& Ġwindow Ġ== ĠDef Window Ġ&& Ġlinker Ġ== ĠDef Link er ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag D ust ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{ ĊĠĠĠ Ġif Ġ( is Default ) ĊĠĠĠĠĠ Ġreturn ĊĊĠĠĠ Ġwith ( js . put Object ( Flag D ust )) Ġ{ ĊĠĠĠĠĠ Ġput ( Key Level , Ġlevel ) ĊĠĠĠĠĠ Ġput ( Key Window , Ġwindow ) ĊĠĠĠĠĠ Ġput ( Key Link er , Ġlinker ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{ ĊĠĠĠ Ġif Ġ(! is Default ) ĊĠĠĠĠĠ Ġcli . append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ. append ( Flag D ust ) ĊĠĠĠĠĠĠĠ Ġ. append (" Ġ' ") ĊĠĠĠĠĠĠĠ Ġ. append ( level ) ĊĠĠĠĠĠĠĠ Ġ. append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ. append ( window ) ĊĠĠĠĠĠĠĠ Ġ. append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ. append ( linker ) ĊĠĠĠĠĠĠĠ Ġ. append (' \' ') ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{ ĊĠĠĠ Ġif Ġ(! is Default ) Ġ{ ĊĠĠĠĠĠ Ġcli . add ( Flag D ust ) ĊĠĠĠĠĠ Ġcli . add ("$ level Ġ$ window Ġ$ linker ") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ private Ġfun Ġparse Text D ust ( value : ĠString ) Ġ= ĊĠ Ġwhen ( value ) Ġ{ ĊĠĠĠ Ġ" yes " Ġ-> ĠYes D ust ĊĠĠĠ Ġ" no " Ġ Ġ-> ĠNo D ust ĊĠĠĠ Ġelse Ġ Ġ-> Ġthrow ĠIllegalArgumentException (" Invalid Ġdust Ġvalue Ġ$ value ") ĊĠ Ġ} ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ internal Ġobject ĠYes D ust Ġ: ĠD ust Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġget () Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġis No Ġ Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġlevel ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġlevel Ġvalue Ġfrom Ġa Ġ\" yes \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġwindow ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġwindow Ġvalue Ġfrom Ġa Ġ\" yes \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġlinker ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġlinker Ġvalue Ġfrom Ġa Ġ\" yes \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġis Default Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag D ust ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{ ĊĠĠĠ Ġjs . put ( Flag D ust , Ġ" yes ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{ ĊĠĠĠ Ġcli . append (' Ġ'). append ( Flag D ust ). append (' Ġ'). append (" yes ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{ ĊĠĠĠ Ġcli . add ( Flag D ust ) ĊĠĠĠ Ġcli . add (" yes ") ĊĠ Ġ} Ċ } ĊĊ Ċ //////////////////////////////////////////////////////////////////////////////// ĊĊ Ċ internal Ġobject ĠNo D ust Ġ: ĠD ust Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis No Ġ Ġget () Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġlevel : ĠInt ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġlevel Ġvalue Ġfrom Ġa Ġ\" no \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġwindow : ĠInt ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġwindow Ġvalue Ġfrom Ġa Ġ\" no \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġlinker : ĠInt ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġthe Ġlinker Ġvalue Ġfrom Ġa Ġ\" no \" Ġdust Ġargument .") ĊĊĠ Ġoverride Ġval Ġis Default Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag D ust ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{ ĊĠĠĠ Ġjs . put ( Flag D ust , Ġ" no ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{ ĊĠĠĠ Ġcli . append (' Ġ'). append ( Flag D ust ). append (' Ġ'). append (" no ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{ ĊĠĠĠ Ġcli . add ( Flag D ust ) ĊĠĠĠ Ġcli . add (" no ") ĊĠ Ġ} Ċ } Ċ