/* čĊ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠDeep Data ĠLtd . čĊ Ġ* čĊ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* čĊ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* čĊ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ*/ čĊč Ċ package Ġhu . deep data . tender base . ted xml . importer . conv čĊč Ċ import Ġhu . deep data . tender base . oc ds . jackson .* č Ċ import Ġhu . deep data . tender base . ted xml . simp lex ml . model .* č Ċ import Ġhu . deep data . tender base . ted xml . simp lex ml . parser .* č Ċ import Ġorg . apache . commons . codec . digest .* č Ċ import Ġjava . util .* čĊč Ċ /** čĊ Ġ* Ġ@ author ĠZ sol t ĠJ ur Ã¡ny i čĊ Ġ*/ č Ċ class ĠO cds Release Converter ( val Ġo cid Prefix : ĠString ) Ġ: ĠI Converter < T ed Export , ĠRelease Schema > Ġ{ čĊčĊ ĉ comp anion Ġobject Ġ{ čĊĉ ĉ val ĠBU Y ER Ġ= Ġ" buyer " čĊĉ ĉ val ĠSUP PLIER Ġ= Ġ" supplier " čĊĉ ĉ val ĠT ENDER ER Ġ= Ġ" tender er " čĊ ĉ } čĊčĊ ĉ override Ġfun Ġconvert ( input : ĠT ed Export ): ĠRelease Schema Ġ{ čĊĉ ĉ with ( Core ( T ed Export Parser ( input ), Ġo cid Prefix )) Ġ{ čĊĉĉ ĉ val Ġa ward Contracts Ġ= Ġparser . award Contracts () čĊĉĉ ĉ val Ġbuy er Org Ġ= Ġbuy er Org ( parser . buyer ()) čĊĉĉ ĉ val Ġsupplier Org s Ġ= Ġa ward Contracts čĊĉĉĉĉ ĉ . map ( parser :: win ners ). flatten () čĊĉĉĉĉ ĉ . map ( this :: supplier Org ) čĊĉĉ ĉ val Ġsupplier Refs Ġ= Ġsupplier Org s . map NotNull ( this :: organization Reference ) čĊčĊĉĉ ĉ return ĠRelease Schema (). apply Ġ{ čĊĉĉĉ ĉ this . aw ards Ġ= Ġa wards ( award Contracts ). toSet () čĊĉĉĉ ĉ buyer Ġ= Ġorganization Reference ( buyer Org ) čĊĉĉĉ ĉ date Ġ= Ġparser . publication Date () čĊĉĉĉ ĉ id Ġ= Ġnotice Id () čĊĉĉĉ ĉ init iation Type Ġ= ĠRelease Schema . Init iation Type . T ENDER čĊĉĉĉ ĉ language Ġ= Ġparser . language () čĊĉĉĉ ĉ oc id Ġ= Ġt ender Id () čĊĉĉĉ ĉ part ies Ġ= Ġset Of ( buyer Org , Ġ* supplier Org s . to Typed Array ()) čĊĉĉĉ ĉ tag Ġ= ĠlistOf NotNull ( release Tag ( input . coded Data Section . cod if Data . td Document Type )) čĊĉĉĉ ĉ tender Ġ= Ġt ender ( award Contracts , Ġsupplier Refs ) čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊ ĉ } čĊčĊ ĉ class ĠCore ( val Ġparser : ĠT ed Export Parser , Ġval Ġo cid Prefix : ĠString ) Ġ{ čĊčĊĉ ĉ fun Ġaddress ( body : ĠContact Contract ing Body ?): ĠAddress ? Ġ{ čĊĉĉ ĉ val Ġa Ġ= ĠAddress (). apply Ġ{ čĊĉĉĉ ĉ country Name Ġ= Ġbody ?. country čĊĉĉĉ ĉ locality Ġ= Ġbody ?. town čĊĉĉĉ ĉ postal Code Ġ= Ġbody ?. postal Code čĊĉĉĉ ĉ street Address Ġ= Ġbody ?. address čĊĉĉ ĉ } čĊĉĉ ĉ val Ġs Ġ= ĠlistOf NotNull ( a . country Name , Ġa . locality , Ġa . postal Code , Ġa . region , Ġa . street Address ). join ToString () čĊĉĉ ĉ return Ġif Ġ( s . isBlank ()) Ġnull Ġelse Ġa čĊĉ ĉ } čĊčĊĉ ĉ fun Ġamount ( amount : ĠDouble ?, Ġcurrency Str : ĠString ?) Ġ= Ġwhen Ġ( amount ) Ġ{ čĊĉĉ ĉ null Ġ-> Ġnull čĊĉĉ ĉ else Ġ-> ĠAmount (). apply Ġ{ čĊĉĉĉ ĉ this . amount Ġ= Ġamount čĊĉĉĉ ĉ this . currency Ġ= Ġcurrency ( currency Str ) čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊĉ ĉ fun Ġamount ( v : ĠValue Range ?) Ġ= Ġamount ( v ?. high , Ġv ?. currency ?. name ) čĊčĊĉ ĉ fun Ġa ward Criteria ( v : ĠText And Code ?) Ġ= Ġwhen Ġ( v ?. code ?. toUpperCase () Ġ?: Ġ"") Ġ{ čĊĉ ĉ // ĠTODO Ġadd Ġenum Ġclass Ġto ĠOC DS Ġmodel ? Ġ( write Ġinto Ġdocs Ġthen ) čĊĉĉ ĉ " 1 " Ġ-> Ġ" price Only " Ġ// ĠLow est Ġprice čĊĉĉ ĉ " 2 " Ġ-> Ġ" r ated Criteria " Ġ// ĠThe Ġmost Ġeconom ic Ġt ender čĊĉĉ ĉ else Ġ-> Ġnull čĊĉ ĉ } čĊčĊĉ ĉ fun Ġa ward Criteria Definition ToString ( prefix : ĠString , Ġac Definition : ĠAc Definition ?): ĠString Ġ{ čĊĉĉ ĉ val Ġs Ġ= ĠStringBuilder () čĊĉĉ ĉ if Ġ( null Ġ!= Ġac Definition ) Ġ{ čĊĉĉĉ ĉ s . append ("- Ġ$ prefix ") čĊĉĉĉ ĉ if Ġ( null Ġ!= Ġac Definition . ac Criterion ) Ġs . append (": Ġ${ ac Definition . ac Criterion }") čĊĉĉĉ ĉ if Ġ( null Ġ!= Ġac Definition . ac Weight ing ) Ġs . append (" Ġ(${ ac Definition . ac Weight ing }) ") čĊĉĉĉ ĉ s . append ("\ n ") čĊĉĉ ĉ } čĊĉĉ ĉ return Ġs . toString () čĊĉ ĉ } čĊčĊĉ ĉ fun Ġa ward Criteria Details (): ĠString Ġ{ čĊĉĉ ĉ val Ġs Ġ= ĠStringBuilder ( parser . cod if (). ac A ward Crit ?. value Ġ+ Ġ"\ n \ n ") čĊĉĉ ĉ parser . objects (). forEach Ġ{ Ġoc Ġ-> čĊĉĉĉ ĉ oc . object Descr s . forEach Ġ{ Ġod Ġ-> čĊĉĉĉĉ ĉ val Ġa Ġ= ĠStringBuilder () čĊĉĉĉĉ ĉ if Ġ( null Ġ!= Ġod . ac Proc ure ment Doc ) Ġa . append ("- ĠProc ure ment Ġdocumentation Ġcriteria \ n ") čĊčĊĉĉĉĉ ĉ val Ġac s Ġ= ĠlistOf NotNull ( čĊĉĉĉĉĉĉ ĉ od . directive 2 0 0 9 8 1 EC , čĊĉĉĉĉĉĉ ĉ od . directive 2 0 1 4 2 3 EU , čĊĉĉĉĉĉĉ ĉ od . directive 2 0 1 4 2 4 EU , čĊĉĉĉĉĉĉ ĉ od . directive 2 0 1 4 2 5 EU , čĊĉĉĉĉĉĉ ĉ od . ac , čĊĉĉĉĉĉĉ ĉ Ac (). apply Ġ{ čĊĉĉĉĉĉĉĉ ĉ ac Cost s Ġ= Ġod . ac Cost s čĊĉĉĉĉĉĉĉ ĉ ac C riter ions Ġ= Ġod . ac C riter ions čĊĉĉĉĉĉĉĉ ĉ ac Price Ġ= Ġod . ac Price čĊĉĉĉĉĉĉĉ ĉ ac Quality s Ġ= Ġod . ac Quality s čĊĉĉĉĉĉĉ ĉ } čĊĉĉĉĉ ĉ ) čĊčĊĉĉĉĉ ĉ acs . map NotNull ( Ac :: ac Price ). first OrNull ()?. also Ġ{ čĊĉĉĉĉĉ ĉ a . append ( award Criteria Definition ToString (" Price ", Ġit )) čĊĉĉĉĉ ĉ } čĊčĊĉĉĉĉ ĉ acs . map NotNull ( Ac :: ac Cost s ). flatten (). forEach Ġ{ čĊĉĉĉĉĉ ĉ a . append ( award Criteria Definition ToString (" Cost ", Ġit )) čĊĉĉĉĉ ĉ } čĊčĊĉĉĉĉ ĉ acs . map NotNull ( Ac :: ac Quality s ). flatten (). forEach Ġ{ čĊĉĉĉĉĉ ĉ a . append ( award Criteria Definition ToString (" Quality ", Ġit )) čĊĉĉĉĉ ĉ } čĊčĊĉĉĉĉ ĉ acs . map NotNull ( Ac :: ac C riter ias ). flatten (). forEach Ġ{ čĊĉĉĉĉĉ ĉ a . append ( award Criteria Definition ToString (" Criteria ", Ġit )) čĊĉĉĉĉ ĉ } čĊčĊĉĉĉĉ ĉ acs . map NotNull ( Ac :: ac C riter ions ). flatten (). forEach Ġ{ čĊĉĉĉĉĉ ĉ a . append ("- ĠC riterion : Ġ$ it \ n ") čĊĉĉĉĉ ĉ } čĊčĊĉĉĉĉ ĉ if Ġ(! a . isEmpty ()) Ġ{ čĊĉĉĉĉĉ ĉ s . append (" A ward Ġcriteria Ġfor Ġitem Ġ${ od . item Ġ?: Ġ 0 } :\ n $ a \ n ") čĊĉĉĉĉ ĉ } čĊĉĉĉ ĉ } čĊĉĉ ĉ } čĊĉĉ ĉ return Ġs . toString (). trim () čĊĉ ĉ } čĊčĊĉ ĉ fun Ġa wards ( award Contracts : ĠList < A ward Contract >) Ġ= čĊĉĉĉ ĉ award Contracts . map Indexed Ġ{ Ġi , Ġa ward Contract Ġ-> čĊĉĉĉĉ ĉ val Ġa warded Contract Ġ= Ġa ward Contract . aw arded Contract čĊĉĉĉĉ ĉ val Ġsupplier Refs Ġ= Ġparser . win ners ( award Contract ) čĊĉĉĉĉĉĉ ĉ . map ( this :: supplier Org ) čĊĉĉĉĉĉĉ ĉ . map ( this :: organization Reference ) čĊĉĉĉĉ ĉ A ward (). apply Ġ{ čĊĉĉĉĉĉ ĉ date Ġ= Ġa warded Contract ?. date Con clusion Contract čĊĉĉĉĉĉ ĉ id Ġ= Ġ"${ tender Id ()} : award :$ i " čĊĉĉĉĉĉ ĉ status Ġ= Ġa ward Status ( award Contract ) čĊĉĉĉĉĉ ĉ supp liers Ġ= Ġsupplier Refs . toSet () čĊĉĉĉĉĉ ĉ title Ġ= Ġa ward Contract . title čĊĉĉĉĉĉ ĉ value Ġ= Ġamount ( parser . award Value ( aw arded Contract )) čĊĉĉĉĉ ĉ } čĊĉĉĉ ĉ } čĊčĊĉ ĉ fun Ġa ward Status ( award Contract : ĠA ward Contract ) Ġ= Ġwhen Ġ{ čĊĉĉ ĉ null Ġ== Ġa ward Contract . no A warded Contract Ġ-> ĠA ward . Status . ACTIVE čĊĉĉ ĉ null Ġ!= Ġa ward Contract . no A warded Contract ?. proc ure ment Un successful Ġ-> ĠA ward . Status . UN SUCCESS FUL čĊĉĉ ĉ else Ġ-> ĠA ward . Status . CANCEL LED čĊĉ ĉ } čĊčĊĉ ĉ fun Ġbuy er Org ( body : ĠContact Contract ing Body ?) Ġ= Ġwhen Ġ( body ) Ġ{ čĊĉĉ ĉ null Ġ-> Ġnull čĊĉĉ ĉ else Ġ-> Ġorganization ( body , ĠBU Y ER ) čĊĉ ĉ } čĊčĊĉ ĉ fun Ġclassification From C pv ( cp v : ĠText And Code ?) Ġ= Ġif Ġ( null Ġ!= Ġcp v ) ĠClassification (). apply Ġ{ čĊĉĉ ĉ this . description Ġ= Ġcp v . value čĊĉĉ ĉ this . id Ġ= Ġcp v . code čĊĉĉ ĉ this . scheme Ġ= Ġ" CP V " čĊĉ ĉ } Ġelse Ġnull čĊčĊĉ ĉ fun Ġcontact Point ( body : ĠContact Contract ing Body ?): ĠContact Point ? Ġ{ čĊĉĉ ĉ val Ġcp Ġ= ĠContact Point (). apply Ġ{ čĊĉĉĉ ĉ email Ġ= Ġbody ?. email čĊĉĉĉ ĉ fax Number Ġ= Ġbody ?. fax čĊĉĉĉ ĉ name Ġ= Ġbody ?. contact Point čĊĉĉĉ ĉ telephone Ġ= Ġbody ?. phone čĊĉĉĉ ĉ url Ġ= Ġparser . url ( body ) čĊĉĉ ĉ } čĊĉĉ ĉ val Ġs Ġ= ĠlistOf NotNull ( cp . email , Ġcp . fax Number , Ġcp . name , Ġcp . telephone , Ġcp . url ?. toString ()). join ToString () čĊĉĉ ĉ return Ġif Ġ( s . isBlank ()) Ġnull Ġelse Ġcp čĊĉ ĉ } čĊčĊĉ ĉ fun Ġcurrency ( currency Str : ĠString ?) Ġ= Ġtry Ġ{ čĊĉĉ ĉ Amount . Currency . valueOf ( currency Str ?. toUpperCase () Ġ?: Ġ"") čĊĉ ĉ } Ġcatch Ġ( e : ĠException ) Ġ{ čĊĉĉ ĉ // ĠTODO Ġlog Ġunknown Ġcurrency Ġ( if Ġnot Ġnull ) čĊĉĉ ĉ null čĊĉ ĉ } čĊčĊĉ ĉ fun Ġel ig ibility Criteria ( left i : ĠLeft i ?): ĠString ? Ġ{ čĊĉĉ ĉ val Ġs Ġ= ĠStringBuilder () čĊĉĉ ĉ left i ?. suit ability ?. also Ġ{ Ġs . append (" Suit ability :\ n \ n $ it \ n \ n ") Ġ} čĊĉĉ ĉ left i ?. econom ic Financial Info ?. also Ġ{ Ġs . append (" E conom ic / financial Ġel ig ibility :\ n \ n $ it \ n \ n ") Ġ} čĊĉĉ ĉ left i ?. econom ic Financial Min Level ?. also Ġ{ Ġs . append (" E conom ic / financial Ġminimum Ġlevel :\ n \ n $ it \ n \ n ") Ġ} čĊĉĉ ĉ left i ?. technical Prof essional Info ?. also Ġ{ Ġs . append (" Technical / prof essional Ġel ig ibility :\ n \ n $ it \ n \ n ") Ġ} čĊĉĉ ĉ left i ?. technical Prof essional Min Level ?. also Ġ{ Ġs . append (" Technical / prof essional Ġminimum Ġlevel :\ n \ n $ it \ n \ n ") Ġ} čĊĉĉ ĉ return Ġs . toString (). trim () čĊĉ ĉ } čĊčĊĉ ĉ fun Ġidentifier ( body : ĠContact Contract ing Body ): ĠIdentifier Ġ= ĠIdentifier (). apply Ġ{ čĊĉĉ ĉ val Ġcleaned Name Ġ= Ġbody . official Name čĊĉĉĉĉ ĉ ?. toUpperCase () čĊĉĉĉĉ ĉ ?. replace ( Regex ("( \\ s |[ ., :; ! ? '/ & + * =% âĢĶ () {}] |- | \\\\ | \\ [ | ] |\ ") + "), Ġ"") Ġ?: Ġ"" čĊĉĉ ĉ id Ġ= Ġo cid Prefix Ġ+ Ġ": org :" Ġ+ ĠDigest Utils . sha 1 Hex ( cleaned Name ) čĊĉĉ ĉ legal Name Ġ= Ġbody . official Name čĊĉĉ ĉ scheme Ġ= Ġo cid Prefix čĊĉĉ ĉ // ĠTODO ĠURI ? čĊĉ ĉ } čĊčĊĉ ĉ fun Ġitem ( item : ĠInt ?, Ġshort Descr : ĠString ?, Ġmain Cp vs : ĠC pv Set ?, Ġadditional Cp vs : ĠList < C pv Set >? ): ĠItem ? Ġ{ čĊĉĉ ĉ val Ġmain C pv Array Ġ= Ġmain Cp vs ?. cp v Codes ?. to Typed Array () Ġ?: ĠarrayOf () čĊĉĉ ĉ val Ġadditional C pv Array Ġ= Ġadditional Cp vs ?. map NotNull ( C pv Set :: cp v Codes )?. flatten ()?. to Typed Array () čĊĉĉĉĉ ĉ ?: ĠarrayOf () čĊĉĉ ĉ val Ġcp vs Ġ= ĠlistOf NotNull (* main C pv Array , Ġ* additional C pv Array ). to Mutable List () čĊĉĉ ĉ val Ġc Ġ= Ġclassification From C pv ( cp vs . first OrNull ()) čĊĉĉ ĉ cp vs . remove At ( 0 ) čĊĉĉ ĉ val Ġac Ġ= Ġcp vs . map NotNull ( this :: classification From C pv ). filter Not Ġ{ Ġit . id Ġ== Ġc ?. id Ġ} čĊčĊĉĉ ĉ return Ġif Ġ(! short Descr . isNull Or Blank ()) Ġ{ čĊĉĉĉ ĉ Item (). apply Ġ{ čĊĉĉĉĉ ĉ additional Class ifications Ġ= Ġac . toSet () čĊĉĉĉĉ ĉ classification Ġ= Ġc čĊĉĉĉĉ ĉ description Ġ= Ġshort Descr čĊĉĉĉĉ ĉ id Ġ= Ġ"${ tender Id ()} : obj :${ item Ġ?: Ġ 0 }" čĊĉĉĉ ĉ } čĊĉĉ ĉ } Ġelse Ġnull čĊĉ ĉ } čĊčĊĉ ĉ fun Ġitems ( object Contract : ĠObject Contract ): ĠList < Item > Ġ{ čĊĉĉ ĉ with ( object Contract ) Ġ{ čĊĉĉĉ ĉ return Ġif Ġ( object Descr s . isEmpty ()) ĠlistOf NotNull ( item ( item , Ġshort Descr , Ġcp v Main , Ġnull )) čĊĉĉĉ ĉ else Ġobject Descr s . map NotNull Ġ{ čĊĉĉĉĉ ĉ item ( it . item , Ġit . short Descr , Ġobject Contract . cp v Main , Ġit . cp v Additional s ) čĊĉĉĉ ĉ } čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊĉ ĉ fun Ġmain Proc ure ment Category ( v : ĠText And Code ?) Ġ= Ġwhen Ġ( v ?. code ?. toUpperCase () Ġ?: Ġ"") Ġ{ čĊĉĉ ĉ " 1 " Ġ-> ĠT ender . Main Proc ure ment Category . WORK S čĊĉĉ ĉ " 2 " Ġ-> ĠT ender . Main Proc ure ment Category . GOO DS čĊĉĉ ĉ " 4 " Ġ-> ĠT ender . Main Proc ure ment Category . SERVICES čĊĉĉ ĉ else Ġ-> Ġnull čĊĉ ĉ } čĊčĊĉ ĉ fun Ġnotice Id () Ġ= Ġ"${ tender Id ()} :${ parser . sw apped Notice Id () }" čĊčĊĉ ĉ fun Ġorganization ( body : ĠContact Contract ing Body ?, Ġvar arg Ġroles : ĠString ) Ġ= Ġwhen Ġ( body ) Ġ{ čĊĉĉ ĉ null Ġ-> Ġnull čĊĉĉ ĉ else Ġ-> ĠOrganization (). apply Ġ{ čĊĉĉĉ ĉ this . address Ġ= Ġaddress ( body ) čĊĉĉĉ ĉ this . contact Point Ġ= Ġcontact Point ( body ) čĊĉĉĉ ĉ identifier Ġ= Ġidentifier ( body ) čĊĉĉĉ ĉ id Ġ= Ġidentifier . id čĊĉĉĉ ĉ name Ġ= Ġbody . official Name čĊĉĉĉ ĉ this . roles Ġ= Ġroles . toList () čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊĉ ĉ fun Ġorganization Reference ( org : ĠOrganization ?) Ġ= Ġwhen Ġ( org ) Ġ{ čĊĉĉ ĉ null Ġ-> Ġnull čĊĉĉ ĉ else Ġ-> ĠOrganization Reference (). apply Ġ{ čĊĉĉĉ ĉ id Ġ= Ġorg . id čĊĉĉĉ ĉ name Ġ= Ġorg . name čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊĉ ĉ fun Ġperiod ( start : ĠDate ?, Ġend : ĠDate ?) Ġ= čĊĉĉĉ ĉ if Ġ( null Ġ== Ġstart Ġ&& Ġnull Ġ== Ġend ) Ġnull čĊĉĉĉ ĉ else ĠPeriod (). apply Ġ{ čĊĉĉĉĉ ĉ startDate Ġ= Ġstart čĊĉĉĉĉ ĉ endDate Ġ= Ġend čĊĉĉĉ ĉ } čĊčĊĉ ĉ fun Ġproc ure ment Method ( v : ĠText And Code ?) Ġ= Ġwhen Ġ( v ?. code ?. toUpperCase () Ġ?: Ġ"") Ġ{ čĊĉĉ ĉ " 1 " Ġ-> ĠT ender . Proc ure ment Method . OPEN Ġ// ĠOpen Ġprocedure čĊĉĉ ĉ " 2 " Ġ-> ĠT ender . Proc ure ment Method . LIMIT ED Ġ// ĠRe stricted Ġprocedure čĊĉĉ ĉ " 3 " Ġ-> ĠT ender . Proc ure ment Method . LIMIT ED Ġ// ĠAcc eler ated Ġrestricted Ġprocedure čĊĉ ĉ // ĠTODO Ġ 4 : ĠNeg oti ated Ġprocedure čĊĉ ĉ // ĠTODO Ġ 6 : ĠAcc eler ated Ġneg oti ated Ġprocedure čĊĉĉ ĉ " A " Ġ-> ĠT ender . Proc ure ment Method . DIRECT Ġ// ĠDirect Ġa ward čĊĉ ĉ // ĠTODO ĠB : ĠComp et itive Ġprocedure Ġwith Ġneg otiation čĊĉ ĉ // ĠTODO ĠC : ĠComp et itive Ġdialogue čĊĉ ĉ // ĠTODO ĠE : ĠCon cess ion Ġa ward Ġprocedure čĊĉ ĉ // ĠTODO ĠF : ĠCon cess ion Ġa ward Ġwithout Ġprior Ġcon cess ion Ġnotice čĊĉ ĉ // ĠTODO ĠG : ĠIn novation Ġpart n ership čĊĉ ĉ // ĠTODO ĠT : ĠNeg oti ated Ġprocedure Ġwithout Ġa Ġcall Ġfor Ġcompetition čĊĉ ĉ // ĠTODO ĠV : ĠContract Ġa ward Ġwithout Ġprior Ġpublication čĊĉ ĉ // Ġhttp :// standard . open - contract ing . org / latest / en / schema / code lists /# method čĊĉĉ ĉ else Ġ-> Ġnull čĊĉ ĉ } čĊčĊĉ ĉ fun Ġproc ure ment Method Details (): ĠString Ġ{ čĊĉĉ ĉ var Ġs Ġ= ĠStringBuilder ( parser . cod if (). pr Proc ?. value Ġ+ Ġ"\ n \ n ") čĊĉĉ ĉ // Ġjust ification Ġfrom Ġfirst ĠPT _* Ġelement čĊĉĉ ĉ parser . procedure ()?. run Ġ{ čĊĉĉĉ ĉ if Ġ(! accel erated Proc . isNull Or Blank ()) Ġs . append (" Accel erated Ġprocedure :\ n \ n $ accel erated Proc \ n \ n ") čĊĉĉĉ ĉ this . framework ?. run Ġ{ čĊĉĉĉĉ ĉ if Ġ( null Ġ!= Ġjust ification ) Ġs . append (" Framework :\ n \ n $ just ification \ n \ n ") čĊĉĉĉĉ ĉ if Ġ( null Ġ!= Ġnb Participants ) Ġs . append (" Participants : Ġ$ nb Participants \ n \ n ") čĊĉĉĉ ĉ } čĊĉĉĉ ĉ if Ġ( null Ġ!= Ġnb Min Participants ) Ġs . append (" Min Ġparticipants : Ġ$ nb Min Participants \ n \ n ") čĊĉĉĉ ĉ if Ġ( null Ġ!= Ġnb Max Participants ) Ġs . append (" Max Ġparticipants : Ġ$ nb Max Participants \ n \ n ") čĊčĊĉĉĉ ĉ // Ġjust ification čĊĉĉĉ ĉ val Ġjust ifications From Pts Ġ= ĠlistOf NotNull ( čĊĉĉĉĉĉ ĉ pt A ward Contract Without Call , čĊĉĉĉĉĉ ĉ pt A ward Contract Without Publication čĊĉĉĉ ĉ ). map NotNull ( An nex :: d Just ification ) čĊčĊĉĉĉ ĉ val Ġjust ifications From Directives Ġ= ĠlistOf NotNull ( čĊĉĉĉĉĉ ĉ directive 2 0 0 9 8 1 EC , čĊĉĉĉĉĉ ĉ directive 2 0 1 4 2 3 EU , čĊĉĉĉĉĉ ĉ directive 2 0 1 4 2 4 EU , čĊĉĉĉĉĉ ĉ directive 2 0 1 4 2 5 EU čĊĉĉĉ ĉ ). map Ġ{ čĊĉĉĉĉ ĉ listOf NotNull ( čĊĉĉĉĉĉĉ ĉ it . pt A ward Contract Without Call , čĊĉĉĉĉĉĉ ĉ it . pt A ward Contract Without Publication , čĊĉĉĉĉĉĉ ĉ it . pt Neg oti ated Without Publication čĊĉĉĉĉ ĉ ) čĊĉĉĉ ĉ }. flatten (). map NotNull ( An nex :: d Just ification ) čĊčĊĉĉĉ ĉ val Ġjust ification Ġ= ĠlistOf ( čĊĉĉĉĉĉ ĉ just ifications From Pts , čĊĉĉĉĉĉ ĉ just ifications From Directives čĊĉĉĉ ĉ ). flatten (). first OrNull () čĊčĊĉĉĉ ĉ if Ġ(! just ification . isNull Or Blank ()) Ġs . append (" Just ification :\ n \ n $ just ification \ n \ n ") čĊĉĉ ĉ } čĊĉĉ ĉ return Ġs . toString (). trim () čĊĉ ĉ } čĊčĊĉ ĉ fun Ġrelease Tag ( v : ĠText And Code ?) Ġ= Ġwhen Ġ( v ?. code ?. toUpperCase () Ġ?: Ġ"") Ġ{ čĊĉ ĉ // ĠTODO Ġdocument Ġtypes Ġto Ġtags čĊĉĉ ĉ " 1 " Ġ-> ĠTag . T ENDER _ UPDATE Ġ// ĠTODO Ġcan Ġbe ĠA WARD _ UPDATE Ġafter ĠTD - 7 čĊĉĉ ĉ " 2 " Ġ-> ĠTag . T ENDER _ UPDATE Ġ// ĠTODO Ġcan Ġbe ĠA WARD _ UPDATE Ġafter ĠTD - 7 čĊĉĉ ĉ " 3 " Ġ-> ĠTag . T ENDER čĊĉĉ ĉ " 7 " Ġ-> ĠTag . A WARD čĊĉĉ ĉ else Ġ-> Ġnull čĊĉ ĉ } čĊčĊĉ ĉ fun Ġsupplier Org ( body : ĠContact Contract ing Body ?) Ġ= Ġwhen Ġ( body ) Ġ{ čĊĉĉ ĉ null Ġ-> Ġnull čĊĉĉ ĉ else Ġ-> Ġorganization ( body , ĠSUP PLIER , ĠT ENDER ER ) čĊĉ ĉ } čĊčĊĉ ĉ fun Ġt ender ( award Contracts : ĠList < A ward Contract >, Ġt ender er Refs : ĠList < Organization Reference >) Ġ= ĠT ender (). apply Ġ{ čĊĉĉ ĉ // ĠTODO Ġlimit Ġto ĠTD - 3 Ġ( and ĠTD - 7 )? čĊĉĉ ĉ award Criteria Ġ= Ġa ward Criteria ( parser . cod if (). ac A ward Crit ) čĊĉĉ ĉ award Criteria Details Ġ= Ġa ward Criteria Details () čĊĉĉ ĉ award Period Ġ= Ġperiod ( parser . cod if (). dt Date For Submission , Ġnull ) Ġ// ĠTODO Ġend Ġdate ? Ġpub Ġof ĠTD - 7 ? čĊĉĉ ĉ el ig ibility Criteria Ġ= Ġel ig ibility Criteria ( parser . left i ()) čĊĉĉ ĉ items Ġ= Ġparser . objects (). map Ġ{ Ġitems ( it ) Ġ}. flatten (). toSet () čĊĉĉ ĉ main Proc ure ment Category Ġ= Ġmain Proc ure ment Category ( parser . cod if (). nc Contract N ature ) čĊĉĉ ĉ numberOf T ender ers Ġ= Ġa ward Contracts . map Ġ{ Ġit . aw arded Contract ?. nb T enders Received Ġ?: Ġ 0 Ġ}. sum () čĊĉĉ ĉ proc ure ment Method Ġ= Ġproc ure ment Method ( parser . cod if (). pr Proc ) čĊĉĉ ĉ proc ure ment Method Details Ġ= Ġproc ure ment Method Details () čĊĉĉ ĉ // ĠTODO Ġstatus : ĠTD - 3 : ĠACT IVE , ĠTD - 7 : ĠUNS U CCESS FUL Ġor ĠCOMP LETE Ġ- Ġmaybe Ġbased Ġon Ġa ward . status Ġtoo ? čĊĉĉ ĉ tender Period Ġ= Ġperiod ( parser . publication Date (), Ġparser . cod if (). dt Date For Submission ) čĊĉĉ ĉ tender ers Ġ= Ġt ender er Refs . toSet () čĊĉĉ ĉ title Ġ= Ġparser . title ( Language Value . EN ) čĊčĊĉĉ ĉ val Ġv Ġ= Ġparser . total Est imated Value ()?. as Value Range () čĊĉĉ ĉ if Ġ( null Ġ!= Ġv ) Ġ{ čĊĉĉĉ ĉ min Value Ġ= Ġamount ( v . low , Ġv . currency ?. name ) čĊĉĉĉ ĉ value Ġ= Ġamount ( v . high , Ġv . currency ?. name ) čĊĉĉ ĉ } čĊĉ ĉ } čĊčĊĉ ĉ fun Ġt ender Id (): ĠString Ġ{ čĊĉĉ ĉ // Ġbecause ĠT ender Id Filter , Ġwe Ġdo Ġhave Ġt ender ĠID Ġhere čĊĉĉ ĉ return Ġ"$ oc id Prefix :${ parser . ted Export !!. tender Id !! }" čĊĉ ĉ } čĊ ĉ } č Ċ }