package Ġcom . he er ki rov . hed ge . server . components . manager . query Ċ Ċ import Ġcom . he er ki rov . hed ge . server . dao . source . Source Tags Ċ import Ġcom . he er ki rov . hed ge . server . dao . types . Meta Tag Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . semantic . plan . Meta String Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . semantic . plan . Meta Type Ċ import Ġcom . he er ki rov . hed ge . server . model . meta . Annotation Ċ import Ġcom . he er ki rov . hed ge . server . model . source . Source Tag Ċ import Ġcom . he er ki rov . hed ge . server . utils . kt orm . escape Like Ċ import Ġorg . kt orm . dsl . eq Ċ import Ġorg . kt orm . dsl . or Ċ import Ġorg . kt orm . expression . Binary Expression Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ internal Ġobject ĠMeta Parser Util Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ meta String çļĦåĢ¼ ç¼ĸè¯ĳ ä¸º å¯¹ æĮĩå®ļ ç§į ç±» meta Tag çļĦ çŃī ä»· æĪĸ æ¯Ķè¾ĥ æĵįä½ľ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompile Name String ( meta String : ĠMeta String , Ġmeta Tag : ĠMeta Tag < *> ): ĠBinary Expression < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( meta String . prec ise ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Tag . name Ġeq Ġmeta String . value ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap Match To Sql Like ( meta String . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( meta Tag . name Ġescape Like Ġvalue ) Ġor Ġ( meta Tag . other Names Ġescape Like Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ meta String çļĦåĢ¼ ç¼ĸè¯ĳ ä¸º å¯¹ æĮĩå®ļ ç§į ç±» meta Tag çļĦ çŃī ä»· æĪĸ æ¯Ķè¾ĥ æĵįä½ľ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompile Name String ( meta String : ĠMeta String , Ġmeta Tag : ĠSource Tags ): ĠBinary Expression < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( meta String . prec ise ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Tag . name Ġeq Ġmeta String . value ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap Match To Sql Like ( meta String . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( meta Tag . name Ġescape Like Ġvalue ) Ġor Ġ( meta Tag . displayName Ġescape Like Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® meta String çļĦ ç±»åŀĭ ï¼Į åĪ¤æĸŃ å®ĥ æĺ¯åĲ¦ èĥ½ åĮ¹éħį çĽ®æłĩ ç¼ĵåŃĺ é¡¹ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Name Equal Or Match ( meta String : ĠMeta String , Ġitem : ĠMeta Query er . Item Interface ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( meta String . prec ise ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta String . value . equals ( item . name , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġmap Match To Regex Pattern ( meta String . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregex . contains Match In ( item . name ) Ġ|| Ġitem . other Names . any Ġ{ Ġregex . contains Match In ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ è¯Ń ä¹ī ä¸ŃçļĦ meta Type è½¬æį¢ èĩ³ annotation æ¨¡åŀĭ å±Ĥ ä¸ŃçļĦ target å®ļä¹ī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap Meta Type To Target ( meta Types : ĠSet < Meta Type >): ĠAnnotation . Annotation Target Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtarget : ĠAnnotation . Annotation Target Ġ= ĠAnnotation . Annotation Target . empty ĊĠĠĠĠĠĠĠ Ġfor Ġ( meta Type Ġin Ġmeta Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( meta Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . TAG Ġ-> Ġtarget Ġ+= ĠAnnotation . Annotation Target . TAG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . TOPIC Ġ-> Ġtarget Ġ+= ĠAnnotation . Annotation Target . TOPIC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . AUTHOR Ġ-> Ġtarget Ġ+= ĠAnnotation . Annotation Target . AUTHOR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ H QL çļĦ match åŃĹç¬¦ä¸² ç¿» è¯ĳ èĩ³ ç¬¦åĲĪ sql Ġlike æłĩåĩĨ çļĦ æł¼å¼ı ï¼Į å¹¶ è½¬ ä¹ī éľĢè¦ģ éĺ² å¤ĩ çļĦ åŃĹç¬¦ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap Match To Sql Like ( match String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsql Like Map . compute If Absent ( match String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġescape Sql Like ( escape Sql Special ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į sql Ġlike è½¬ ä¹ī ï¼Į å°Ĩ åħ·æľī çī¹æ®Ĭ æĦı ä¹ī çļĦ ç¬¦ åı· è½¬ ä¹ī æİī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġescape Sql Special ( string : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstring . replace ( sql Like Replace Regex , Ġ""" \\ $ 0 """) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į sql Ġlike è½¬ ä¹ī ï¼Į å°Ĩ H QL ä¸ŃçļĦ æŁ¥è¯¢ ç¬¦ åı· è½¬ ä¹ī åĪ° sql Ġlike ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġescape Sql Like ( string : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ'%' Ġ+ Ġstring . replace ('* ', Ġ'% '). replace (' ?', Ġ'_ ') Ġ+ Ġ'%' ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ H QL çļĦ match åŃĹç¬¦ä¸² ç¿» è¯ĳ èĩ³ æŃ£ åĪĻ è¡¨è¾¾å¼ı æłĩåĩĨ æł¼å¼ı ï¼Į å¹¶ è½¬ ä¹ī éľĢè¦ģ éĺ² å¤ĩ çļĦ åŃĹç¬¦ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Match To Regex Pattern ( match String : ĠString ): ĠRegex Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġregex Pattern Map . compute If Absent ( match String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\\ ", Ġ" \\\\ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( regex Pattern Replace Regex , Ġ"\\ $ 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("* ", Ġ" .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (' ?', Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegex ( pattern , ĠRegex Option . IGNORE _ CASE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¸² èģĶ åĪĹè¡¨ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġunion List ( var arg Ġlist : ĠList < T >): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrayList < T >( list . sum Of Ġ{ Ġit . size Ġ}) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addAll ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsql Like Map Ġ= ĠConcurrent HashMap < String , ĠString >() ĊĠĠĠ Ġprivate Ġval Ġregex Pattern Map Ġ= ĠConcurrent HashMap < String , ĠRegex >() ĊĊĠĠĠ Ġprivate Ġval Ġsql Like Replace Regex Ġ= ĠRegex (""" [ /" '\ [\ ] % & _() \\ ] """) ĊĠĠĠ Ġprivate Ġval Ġregex Pattern Replace Regex Ġ= ĠRegex (""" [$ ()+ .\ [ \\ ^{ | ] """) Ċ }