package Ġcom . yo 1 0 0 0 . hay stacks . web . service Ċ Ċ import Ġcom . yo 1 0 0 0 . hay stacks . core . service . Table Domain Service Ċ import Ġcom . yo 1 0 0 0 . hay stacks . core . value object . Fully QualifiedName Ċ import Ġcom . yo 1 0 0 0 . hay stacks . core . value object . Note Ċ import Ġcom . yo 1 0 0 0 . hay stacks . core . value object . Table Physical Name Ċ import Ġcom . yo 1 0 0 0 . hay stacks . web . resource . SearchResult Ċ import Ġcom . yo 1 0 0 0 . hay stacks . web . resource . Table Ċ import Ġcom . yo 1 0 0 0 . hay stacks . web . resource . Table Outline Ċ Ċ class ĠTable Application Service ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtable Domain Service : ĠTable Domain Service Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġget Table Out lines (): ĠList < Table Outline > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotes Ġ= Ġtable Domain Service . get Notes Map () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtable Domain Service . getTable Out lines (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTable Outline ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf qn Ġ= Ġit . names . fully QualifiedName . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Count Ġ= Ġit . column Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Count Ġ= Ġit . rowCount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Count Ġ= Ġit . refer encing Count To Parent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Count Ġ= Ġit . referenced Count From Children , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġit . names . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnotes [ it . names . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Table ByName ( name : ĠString ): ĠTable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġtable Domain Service . getTable ( Table Physical Name ( name )) ĊĠĠĠĠĠĠĠ Ġval Ġindexes Ġ= Ġtable Domain Service . get Indexes ( Table Physical Name ( name )) ĊĠĠĠĠĠĠĠ Ġval Ġstatement Ġ= Ġtable Domain Service . get Statement ( Table Physical Name ( name )) ĊĠĠĠĠĠĠĠ Ġval Ġnotes Ġ= Ġtable Domain Service . get Notes Map By Table ( table . names . fully QualifiedName ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf qn Ġ= Ġtable . names . fully QualifiedName . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġtable . names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġtable . names . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġtable . columns . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable . Column ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf qn Ġ= Ġit . names . fully QualifiedName . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġit . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġit . nullable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġit . default , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġit . parent ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable . Reference ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ= Ġit . table Physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Ġ= Ġit . column Physical Name . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġit . children . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable . Reference ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ= Ġit . table Physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Ġ= Ġit . column Physical Name . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġit . names . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnotes [ it . names . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindexes Ġ= Ġindexes . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable . Index ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf qn Ġ= Ġit . names . fully QualifiedName . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġit . type . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġit . column Names . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable . Reference ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ= Ġtable . names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Ġ= Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġit . names . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnotes [ it . names . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatement Ġ= Ġstatement . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnotes [ table . names . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch ( q : ĠList < String >): ĠList < SearchResult > Ġ= Ġtable Domain Service . find (* q . to Typed Array ()). map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnote Map Ġ= Ġtable Domain Service . get Notes Map () ĊĠĠĠĠĠĠĠ ĠSearch Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ= ĠSearch Result . Table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . table Names . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġit . table Names . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnote Map [ it . table Names . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġit . column Names List . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Result . Column ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . physical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġit . logical Name . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnote Map [ it . fully QualifiedName ]?. value Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Note ( fully QualifiedName : ĠString , Ġnote : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable Domain Service . set Note ( Fully QualifiedName ( fully QualifiedName ), ĠNote ( note )) ĊĠĠĠ Ġ} Ċ }