/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠMark ĠF air child . Ċ Ġ* Ċ Ġ* Ġ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 Ġess Ċ Ċ import ĠPlatform ByteBuffer Ċ import Ġess . ESS . ESS Context ĊĊ Ċ /** Ċ Ġ* ĠDescri bes Ġa ĠChange Form Ġcontaining Ġa Ġform list . Ċ Ġ* Ċ Ġ* Ġ@ author ĠMark ĠF air child Ċ Ġ*/ Ċ class ĠChange Form FL ST ( input : ĠPlatform ByteBuffer , Ġflags : ĠFlags . Flags Int , Ġcontext : ĠE SS Context ) Ġ: ĠChange FormData Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġres aver . ess . Element . write ĊĠĠĠĠ Ġ* Ġ@ param Ġoutput ĠThe Ġoutput Ġstream . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġwrite ( output : ĠPlatform ByteBuffer ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġref ID ?. write ( output ) ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠFOR MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput !!. put Int ( FOR MS !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFOR MS !!. forEach Ġ{ Ġref : ĠRef ID Ġ-> Ġref . write ( output ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġres aver . ess . Element . calculate Size ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġsize Ġof Ġthe Ġ` Element ` Ġin Ġbytes . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcalculate Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġref ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġref ID . calculate Size () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠFOR MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠFOR MS !!. sum Of Ġ{ Ġit . calculate Size () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsum ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġnull Ġentries . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġnumber Ġof Ġentries Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclean se (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( FOR MS . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠOriginal size Ġ= ĠFOR MS !!. size ĊĠĠĠĠĠĠĠ ĠFOR MS !!. filter Ġ{ Ġref ID Ġ-> Ġref ID . is Zero Ġ}. forEach Ġ{ ĠFOR MS !!. remove ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠOriginal size Ġ- ĠFOR MS !!. size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġflag Ġindicating Ġthat Ġthe Ġform list Ġhas Ġnull ref Ġentries . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcontains Null refs (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( FORM Ġin ĠFOR MS !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( FORM . is Zero ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠString Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ== ĠFOR MS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Null refs () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" (${ FOR MS !!. size } Ġrefs , Ġcontains Ġnull refs )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" (${ FOR MS !!. size } Ġrefs )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠObject . hashCode ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 4 1 Ġ* Ġhash Ġ+ Ġref ID . hashCode () ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 4 1 Ġ* Ġhash Ġ+ ĠFOR MS . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġhash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠObject . equals ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ=== Ġother Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class Ġ!= Ġother . java Class Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother 2 Ġ= Ġother Ġas ĠChange Form FL ST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref ID Ġ== Ġother 2 . ref ID Ġ&& ĠFOR MS Ġ== Ġother 2 . FOR MS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠAnaly z ableElement . getInfo ĊĠĠĠĠ Ġ* Ġ@ param Ġanalysis ĊĠĠĠĠ Ġ* Ġ@ param Ġsave ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Info ( analysis : Ġres aver . Analysis ?, Ġsave : ĠE SS ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠBU IL DER Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ ĠBU IL DER . append ("< hr />< p > FOR ML IST :</ p >") ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġref ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBU IL DER . append ("< p > Change Form Flags : Ġ$ ref ID </ p >") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠFOR MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBU IL DER . append ( String . format ("< p > List Ġsize : Ġ% d </ p >< ol Ġstart = 0 >", ĠFOR MS !!. size )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFOR MS !!. forEach Ġ{ Ġref id : ĠRef ID Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( save !!. change Forms . containsKey ( ref id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBU IL DER . append ("< li >${ ref id . to HTML ( null )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBU IL DER . append ("< li >$ ref id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBU IL DER . append ("</ ol >") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠBU IL DER . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠAnaly z ableElement . matches ĊĠĠĠĠ Ġ* Ġ@ param Ġanalysis ĊĠĠĠĠ Ġ* Ġ@ param Ġmod ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmatches ( analysis : Ġres aver . Analysis ?, Ġmod : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ` Change Form Flags ` Ġfield . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġref ID : ĠChange Form Flags ? Ġ= Ġif Ġ( flags . get Flag ( 1 )) ĠChange Form Flags ( input ) Ġelse Ġnull ĊĠĠĠ Ġprivate Ġvar ĠFOR MS : ĠMutable List < Ref ID >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġ` Change Form ` Ġby Ġreading Ġfrom Ġa ĊĠĠĠĠ Ġ* Ġ` LittleEndian Data Output `. ĠNo Ġerror Ġhandling Ġis Ġperformed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠThe Ġinput Ġstream . ĊĠĠĠĠ Ġ* Ġ@ param Ġflags ĠThe Ġchange Ġflags . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġ` ESS Context ` Ġinfo . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flags . get Flag ( 3 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġform Count Ġ= Ġinput . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( form Count Ġ<= Ġ 0 x 3 FFF ) Ġ{ Ġ" Invalid Ġdata : Ġfound Ġ$ form Count Ġform Count Ġin ĠFL ST ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFOR MS Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġform Count ). forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠREF Ġ= Ġcontext . read Ref ID ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFOR MS !!. add ( REF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFOR MS Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }