package Ġnet . j ib ini . eb . data Ċ Ċ import Ġnet . j ib ini . eb . impl . Classpath Annotation Impl Ċ Ċ import Ġorg . json . JSONObject Ċ Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalStateException Ċ Ċ /** Ċ Ġ* ĠContains Ġa Ġcollection Ġof Ġfields Ġwhich Ġmake Ġup Ġa Ġcertain Ġtype Ġof Ċ Ġ* Ġdocument , Ġsuch Ġas Ġthe Ġdocument 's Ġname Ġand Ġits Ġdata Ġvalues . ĠAll Ċ Ġ* Ġdocuments Ġstored Ġin Ġa Ġsingle Ġrel ational Ġdatabase Ġtable Ġshould Ġshare Ċ Ġ* Ġthis Ġcommon Ġschema . Ċ Ġ* Ċ Ġ* ĠThis Ġdescriptor Ġprovides Ġa Ġlist Ġof Ġfields Ġand Ġhow Ġthey Ġshould Ġbe Ċ Ġ* Ġformatted . ĠThe Ġdescription Ġof Ġa Ġdocument 's Ġschema Ġallows Ġquerying Ċ Ġ* Ġof Ġdata Ġsources Ġfor Ġthe Ġfields Ġnecessary Ġto Ġcreate Ġnew Ġdocuments . Ċ Ġ* ĠFor Ġexample , Ġsee Ġthe Ġ[ Epic or Source ] Ġimplementation Ġand Ġits Ġinfo Ċ Ġ* Ġabout Ġhow Ġdescriptors Ġare Ġused Ġto Ġquery ĠO Data ĠAPIs . Ċ Ġ* Ċ Ġ* ĠThese Ġdescriptors Ġshould Ġbe Ġstored Ġin Ġa Ġdirectory Ġcalled Ġ" schemas " Ċ Ġ* Ġin Ġthe Ġroot Ġworking Ġdirectory . ĠDes cript ors Ġare Ġloaded Ġfrom Ġthis Ċ Ġ* Ġdirectory Ġas ĠJSON Ġfiles Ġdescribing Ġdocument Ġtypes Ġand Ġfields . Ċ Ġ* ĠUp on Ġloading Ġthese Ġdescriptors , Ġrepositories Ġare Ġcreated Ġto Ġstore Ċ Ġ* Ġcaches Ġof Ġdocuments . ĠThis Ġallows Ġqu icker Ġaccess Ġto Ġdata Ġto Ġjoin Ċ Ġ* Ġtogether Ġassemb led Ġdocuments Ġ( accessing Ġmemory Ġvs . Ġaccessing Ġan Ċ Ġ* ĠAPI ). ĠThis Ġis Ġa Ġreplacement Ġto Ġthe Ġusage Ġof ĠBusiness ĠActivity Ċ Ġ* ĠQueries Ġin ĠEasy Button Ġ 2 . Ċ Ġ* Ċ Ġ* Ġ@ author ĠZ ach ĠGo et hel Ċ Ġ*/ Ċ class ĠDocument Descriptor ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġdocument Ġschema 's Ġunique Ġname ; Ġall Ġdocuments Ġof Ġa Ġgiven Ġtype ĊĠĠĠĠ Ġ* Ġshould Ġshare Ġthe Ġsame Ġname . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDocument Ġcaches Ġwill Ġbe Ġkept Ġagainst Ġthis Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġname : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġplain - English Ġrepresentation Ġof Ġthis Ġdocument Ġname Ġfor ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġdocument 's Ġprimary Ġkey . ĠEach Ġinstance Ġof Ġa Ġdocument Ġwith ĊĠĠĠĠ Ġ* Ġthis Ġschema Ġwill Ġbe Ġhashed Ġagainst Ġthe Ġstring Ġvalue Ġof Ġthe Ġvalue ĊĠĠĠĠ Ġ* Ġassociated Ġwith Ġthis Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġexample , Ġset Ġto Ġ" Part Num " Ġfor Ġparts . ĠPart Ġdocuments Ġare Ġthen ĊĠĠĠĠ Ġ* Ġindexed Ġagainst Ġtheir Ġpart Ġnumbers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġprimary Key : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġsystem Ġrevision ĠID , Ġwhich Ġis ĠE pic or 's Ġrepresentation Ġof Ġthe ĊĠĠĠĠ Ġ* ĠSQL Ġsequential Ġexchange Ġcounter . ĠFor Ġa Ġtable Ġcalled Ġ" Part ," Ġthis ĊĠĠĠĠ Ġ* Ġshould Ġbe Ġ" Part _ Sys Rev ID ." ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtrack Index : ĠString Ċ ) Ċ { ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġmap Ġof Ġfields Ġfor Ġthis Ġdocument , Ġhashed Ġagainst Ġtheir Ġname . ĠA ĊĠĠĠĠ Ġ* Ġ[ Document ] Ġcreated Ġwith Ġthis Ġdescriptor Ġmust Ġcontain Ġvalues Ġfor ĊĠĠĠĠ Ġ* Ġall Ġfields Ġlisted Ġhere . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠEach Ġfield Ġdefines Ġits Ġname , Ġwhere Ġit 's Ġfrom , Ġand Ġhow Ġit Ġshould ĊĠĠĠĠ Ġ* Ġbe Ġformatted . ĠCert ain Ġfields Ġwill Ġdefine Ġindices Ġwhich Ġallow ĊĠĠĠĠ Ġ* Ġsearching Ġof Ġdocuments Ġby Ġthe Ġdefined Ġfield . ĠFor Ġexample , Ġa ĊĠĠĠĠ Ġ* Ġstring Ġmay Ġdefine Ġa Ġsubstring Ġindex Ġor Ġan Ġalphabet ized Ġbinary ĊĠĠĠĠ Ġ* Ġsearch Ġindex . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfields : ĠMap < String , ĠField > Ġ= ĠHashMap () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġordered Ġlist Ġof Ġwhich Ġfields Ġto Ġdisplay Ġin Ġthe Ġsearch Ġresults Ġtable ĊĠĠĠĠ Ġ* Ġby Ġdefault . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdefault Display Fields : ĠList < String > Ġ= ĠArrayList () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġthe Ġprovided Ġfield Ġto Ġthe Ġdocument Ġschema . ĠThis Ġwill Ġchange ĊĠĠĠĠ Ġ* Ġthe Ġdocument Ġdefinition Ġof Ġall Ġdocuments Ġcreated Ġwith Ġthis ĊĠĠĠĠ Ġ* Ġdescriptor . ĠBehavior Ġof Ġexisting Ġdocuments Ġat Ġthe Ġtime Ġthis Ġis ĊĠĠĠĠ Ġ* Ġchanged Ġis Ġundefined . ĠChanging Ġthe Ġdocument Ġdescriptor Ġwhile ĊĠĠĠĠ Ġ* Ġdocuments Ġare Ġactively Ġusing Ġit Ġmay Ġresult Ġin Ġunexpected Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġprimarily Ġused Ġto Ġload Ġfields Ġfrom ĠJSON Ġdescriptor Ġfiles ĊĠĠĠĠ Ġ* Ġand Ġadd Ġthe Ġfields Ġto Ġthe Ġschema . ĠThis Ġis Ġperformed Ġat Ġstartup ĊĠĠĠĠ Ġ* Ġbefore Ġany Ġdocuments Ġexist . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfield ĠField Ġto Ġadd Ġto Ġthis Ġdocument 's Ġschema . ĠIt Ġshould ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġdefine Ġthe Ġfield , Ġits Ġname , Ġindices Ġbuilt Ġon Ġthis Ġfield , Ġand ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġhow Ġto Ġpresent Ġit Ġto Ġthe Ġend Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( field : ĠField ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ( fields Ġas ĠMutable Map )[ field . name ] Ġ= Ġfield ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMap Ġcontaining Ġall Ġdocument Ġdescriptors Ġwhich Ġhave Ġbeen ĊĠĠĠĠĠĠĠĠ Ġ* Ġloaded , Ġhashed Ġagainst Ġtheir Ġnames . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġloaded Ġ= Ġmutable Map Of < String , ĠDocument Descriptor >() ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRetrieves Ġthe Ġdescriptor Ġwith Ġthe Ġgiven Ġname , Ġassuming Ġone ĊĠĠĠĠĠĠĠĠ Ġ* Ġhas Ġbeen Ġloaded . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException ĠIf Ġno Ġdescriptor Ġwith Ġthe Ġgiven ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġname Ġhas Ġbeen Ġloaded . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġloaded Ġdocument Ġdescriptor Ġwith Ġthe Ġgiven Ġname . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfor Name ( name : ĠString ) Ġ= Ġloaded [ name ] !! ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠLoads Ġthe Ġgiven ĠJSON Ġdocument Ġdescriptor . ĠThe Ġprovided Ġfile ĊĠĠĠĠĠĠĠĠ Ġ* Ġshould Ġbe Ġa ĠJSON Ġfile Ġcontaining Ġthe Ġschema Ġname , Ġsource , Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġfields Ġdefined Ġfor Ġthe Ġschema . ĠEach Ġfield Ġshould Ġdefine Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġname , Ġformat , Ġsource , Ġand Ġsearch Ġindex Ġif Ġapplicable . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠDocuments Ġmay Ġbe Ġs ourced Ġfrom Ġa Ġbackend Ġserver , Ġsuch Ġas ĊĠĠĠĠĠĠĠĠ Ġ* ĠE pic or , Ġor Ġassemb led Ġfrom Ġother Ġsources Ġwhich Ġare Ġcached Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġmemory . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfile ĠJSON Ġfile Ġcontaining Ġthe Ġschema Ġdefinition Ġdata . ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ ĠMust Ġbe Ġa ĠJSON Ġfile . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠLoaded Ġdocument Ġdescriptor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġload ( file : ĠFile ): ĠDocument Descriptor ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile Ġ|| Ġ! file . name . toLowerCase (). endsWith (". json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Provided Ġfile Ġis Ġnot Ġa Ġvalid Ġfile ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( file . read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= ĠDocument Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . getString (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . getString (" title "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . getString (" primaryKey "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . getString (" track Index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . get JSONArray (" fields ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ! is ĠJSONObject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Malformed Ġfields Ġlist Ġin Ġdocument Ġdescriptor ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . add ( Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString (" title "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass path Annotation Impl . find And Create ( it . getString (" format ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . get JSONArray (" default Display Fields ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( descriptor . default Display Fields Ġas ĠMutable List ) Ġ+= Ġ"$ it " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded [ descriptor . name ] Ġ= Ġdescriptor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdescriptor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠLoads Ġall ĠJSON Ġdocument Ġdescriptors Ġin Ġthe Ġprovided ĊĠĠĠĠĠĠĠĠ Ġ* Ġdirectory . ĠDoes Ġnot Ġrecurse . ĠThis Ġis Ġuseful Ġfor Ġloading Ġall ĊĠĠĠĠĠĠĠĠ Ġ* Ġdescriptors Ġin Ġa Ġconfiguration Ġfolder . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġprovided Ġfolder Ġshould Ġcontain ĠJSON Ġfiles Ġdefining Ġschema ĊĠĠĠĠĠĠĠĠ Ġ* Ġnames , Ġsources , Ġand Ġfields Ġdefined Ġfor Ġeach Ġschema . ĠEach ĊĠĠĠĠĠĠĠĠ Ġ* Ġfield Ġshould Ġdefine Ġa Ġname , Ġformat , Ġsource , Ġand Ġsearch Ġindex ĊĠĠĠĠĠĠĠĠ Ġ* Ġif Ġapplicable . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠDocuments Ġmay Ġbe Ġs ourced Ġfrom Ġa Ġbackend Ġserver , Ġsuch Ġas ĊĠĠĠĠĠĠĠĠ Ġ* ĠE pic or , Ġor Ġassemb led Ġfrom Ġother Ġsources Ġwhich Ġare Ġcached Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġmemory . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdirectory ĠDirectory Ġcontaining Ġdocument Ġdescriptors . ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ ĠAll Ġfiles Ġending Ġin Ġ". json " Ġwill Ġbe Ġloaded Ġusing Ġ[ load ]. ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠCollection Ġof Ġloaded Ġdocument Ġdescriptors . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġload All ( directory : ĠFile ): ĠCollection < Document Descriptor > ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! directory . isDirectory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Provided Ġfile Ġis Ġnot Ġa Ġdirectory ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdirectory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. list Files Ġ{ Ġ_, Ġname Ġ-> Ġname . toLowerCase (). endsWith (". json ") Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġload ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }