package Ġcom . he er ki rov . hed ge . server . library . compiler . translator Ċ Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . semantic . plan .* Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . translator . visual .* Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . translator . visual . Element Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . utils . Analysis Result Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . utils . Error Collector Ċ import Ġcom . he er ki rov . hed ge . server . library . compiler . utils . Translator Error Ċ Ċ /** Ċ Ġ* Ġæī§è¡Į è®¡åĪĴ ç¿» è¯ĳ åĻ¨ ãĢĤ æī§è¡Į æŁ¥è¯¢ è®¡åĪĴ Ġ-> Ġæī§è¡Į è®¡åĪĴ Ġ& Ġåı¯ è§Ĩ åĮĸ æŁ¥è¯¢ è®¡åĪĴ çļĦ è¿ĩç¨ĭ ãĢĤ Ċ Ġ*/ Ċ object ĠTrans lator Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į ç¿» è¯ĳ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġquery Plan Ġ è¾ĵåħ¥ åıĤæķ° ï¼Į æŁ¥è¯¢ è®¡åĪĴ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġquery er Ġæī§è¡Į é¢Ħ æŁ¥è¯¢ åĴĮ ä¸ŃéĹ´ ä»£ æį¢ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġexecute Builder Ġ æŀĦå»º ä¼ ´ çĶŁ çļĦ æī§è¡Į è®¡åĪĴ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġ ç¿» è¯ĳ åĻ¨ éĢīé¡¹ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse ( query Plan : ĠQuery Plan , Ġquery er : ĠQuery er , Ġexecute Builder : ĠExecute Builder , Ġoptions : ĠTrans lator Options ? Ġ= Ġnull ): ĠAnalysis Result < Visual Query Plan , ĠTrans lator Error <* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollector Ġ= ĠError Collector < Translator Error <* >>() ĊĊĠĠĠĠĠĠĠ Ġ// ç¿» è¯ĳ order éĥ¨åĪĨ ĊĠĠĠĠĠĠĠ Ġval Ġvisual Order List Ġ= Ġquery Plan . orders . map (:: map Order Item ) ĊĠĠĠĠĠĠĠ Ġif ( query Plan . orders . isNotEmpty ()) Ġexecute Builder . map Orders ( query Plan . orders ) ĊĊĠĠĠĠĠĠĠ Ġ// ç¿» è¯ĳ filter éĥ¨åĪĨ ĊĠĠĠĠĠĠĠ Ġval Ġvisual Filters Ġ= Ġquery Plan . filters . map Ġ{ Ġunion Filters Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Builder . map Filter ( union Filters , Ġunion Filters . exclude ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Item ( exclude Ġ= Ġunion Filters . exclude , Ġfields Ġ= Ġunion Filters . groupBy Ġ{ Ġit . field Ġ}. map Ġ{ Ġ( field , Ġfilters ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Of One Field ( field . key , Ġfilters . flatMap Ġ{ Ġfilter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEqual Filter Ġ-> Ġ( filter Ġas ĠEqual Filter < *> ). values . map Ġ{ ĠFilter Equal ( it . equal Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠComp osition Filter Ġ-> Ġ( filter Ġas ĠComp osition Filter < *> ). values . map Ġ{ ĠFilter Equal ( it . equal Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMatch Filter Ġ-> Ġ( filter Ġas ĠMatch Filter < *> ). values . map Ġ{ ĠFilter Match ( it . match Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRange Filter Ġ-> Ġ( filter Ġas ĠRange Filter < *> ). let Ġ{ ĠlistOf ( Filter Range ( it . begin ?. compare Value , Ġit . end ?. compare Value , Ġit . include Begin , Ġit . include End )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlag Filter Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unsupported Ġfilter Ġtype Ġ${ filter :: class . simple Name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ç¿» è¯ĳ element éĥ¨åĪĨ ĊĠĠĠĠĠĠĠ Ġvar Ġjoin Depth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġvisual Elements Ġ= Ġquery Plan . elements . groupBy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠName Element For Meta Ġ-> Ġ" name " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAnnotation Element , Ġis ĠAnnotation Element For Meta Ġ-> Ġ" annotation " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTag Element Ġ-> Ġ" meta - tag " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSource Tag Element Ġ-> Ġ" source - tag " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unsupported Ġelement Ġtype Ġ${ it :: class . simple Name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġ( type , Ġelements ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠElement ( type , Ġelements . map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( element Ġis ĠAnnotation Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmap Annotation Element ( element , Ġquery er , Ġcollector , Ġoptions ). also Ġ{ Ġjoin Depth Ġ+= Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexported From Author Ġ= ĠMeta Type . AUTHOR Ġin Ġelement . meta Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexported From Topic Ġ= ĠMeta Type . TOPIC Ġin Ġelement . meta Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexported From Tag Ġ= ĠMeta Type . TAG Ġin Ġelement . meta Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Builder . map Annotation Element ( items , Ġelement . exclude , Ġexported From Author Ġ= Ġexported From Author , Ġexported From Topic Ġ= Ġexported From Topic , Ġexported From Tag Ġ= Ġexported From Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement Item For Annotation ( element . exclude , Ġitems , Ġexported From Author Ġ= Ġexported From Author , Ġexported From Topic Ġ= Ġexported From Topic , Ġexported From Tag Ġ= Ġexported From Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement Item ( element . exclude , Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠName Element For Meta Ġ-> Ġelement . items . map Ġ{ ĠElement String ( it . value , Ġit . prec ise ) Ġ}. also Ġ{ Ġexecute Builder . map Name Element ( it , Ġelement . exclude ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAnnotation Element For Meta Ġ-> Ġmap Annotation Element For Meta ( element , Ġquery er , Ġcollector , Ġoptions ). also Ġ{ Ġjoin Depth Ġ+= Ġ 1 Ġ}. also Ġ{ Ġexecute Builder . map Annotation Element ( it , Ġelement . exclude , Ġexported From Author Ġ= Ġfalse , Ġexported From Topic Ġ= Ġfalse , Ġexported From Tag Ġ= Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSource Tag Element Ġ-> Ġmap Source Tag Element ( element , Ġquery er , Ġcollector , Ġoptions ). also Ġ{ Ġjoin Depth Ġ+= Ġ 1 Ġ}. also Ġ{ Ġexecute Builder . map Source Tag Element ( it , Ġelement . exclude ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTag Element Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( r , Ġt ) Ġ= Ġmap Tag Element ( element , Ġquery er , Ġcollector , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( t ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tag " Ġ-> Ġexecute Builder . map Tag Element ( r Ġas ĠList < Element Tag >, Ġelement . exclude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" author " Ġ-> Ġexecute Builder . map Author Element ( r Ġas ĠList < Element Author >, Ġelement . exclude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" topic " Ġ-> Ġexecute Builder . map Topic Element ( r Ġas ĠList < Element Topic >, Ġelement . exclude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Depth Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unsupported Ġelement Ġtype Ġ$ type .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( options Ġ!= Ġnull Ġ&& Ġjoin Depth Ġ>= Ġoptions . warning Limit Of Intersect Items ) Ġcollector . warning ( NumberOf Intersect Item Ex ceed ( options . warning Limit Of Intersect Items )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif ( collector . has Errors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalysis Result ( null , Ġwarnings Ġ= Ġcollector . warnings , Ġerrors Ġ= Ġcollector . errors ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalysis Result ( Visual Query Plan ( visual Order List , Ġvisual Elements , Ġvisual Filters ), Ġwarnings Ġ= Ġcollector . warnings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ä¸Ģä¸ª Annotation Element çļĦ ç¿» è¯ĳ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Annotation Element ( element : ĠAnnotation Element , Ġquery er : ĠQuery er , Ġcollector : ĠError Collector < Translator Error <* >>, Ġoptions : ĠTrans lator Options ?): ĠList < Element Annotation > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . items . flatMap Ġ{ Ġquery er . find Annotation ( it , Ġelement . meta Type , Ġfalse , Ġcollector ) Ġ}. also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result . isEmpty ()) Ġcollector . warning ( Whole Element Matches None ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( options != Ġnull Ġ&& Ġresult . size Ġ>= Ġoptions . warning Limit Of Union Items ) Ġcollector . warning ( NumberOf Union Item Ex ceed ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ}, Ġoptions . warning Limit Of Union Items )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ä¸Ģä¸ª Annotation Element For Meta çļĦ ç¿» è¯ĳ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Annotation Element For Meta ( element : ĠAnnotation Element For Meta , Ġquery er : ĠQuery er , Ġcollector : ĠError Collector < Translator Error <* >>, Ġoptions : ĠTrans lator Options ?): ĠList < Element Annotation > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . items . flatMap Ġ{ Ġquery er . find Annotation ( it , Ġempty Set (), Ġtrue , Ġcollector ) Ġ}. also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result . isEmpty ()) Ġcollector . warning ( Whole Element Matches None ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( options != Ġnull Ġ&& Ġresult . size Ġ>= Ġoptions . warning Limit Of Union Items ) Ġcollector . warning ( NumberOf Union Item Ex ceed ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ}, Ġoptions . warning Limit Of Union Items )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ä¸Ģä¸ª Tag Element çļĦ ç¿» è¯ĳ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Tag Element ( element : ĠTag Element <* >, Ġquery er : ĠQuery er , Ġcollector : ĠError Collector < Translator Error <* >>, Ġoptions : ĠTrans lator Options ?): ĠPair < List < Element Meta >, ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( if ( element . meta Type Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľª æłĩè®° ç±»åŀĭ æĹ¶ ï¼Į æĮī tag -> topic -> author çļĦ é¡ºåºı ï¼Į ä¾Ŀ æ¬¡ è¿Ľè¡Į æĲľç´¢ ãĢĤ çĶ±äºİ æķ´ä¸ª åĲĪ åıĸ é¡¹ çļĦ ç±»åŀĭ ç»Łä¸Ģ ï¼Į ä¸Ģ æĹ ¦ æŁĲ ç§į ç±»åŀĭ æī¾åĪ° äºĨ èĩ³ å°ĳ 1 ä¸ª ç»ĵæŀľ ï¼Į å°± ä»İ è¿Ļä¸ª ç±»åŀĭ è¿ĶåĽŀ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Collector Ġ= ĠError Collector < Translator Error <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Result Ġ= Ġelement . items . flatMap Ġ{ Ġquery er . find Tag ( it , Ġtag Collector ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tag Result . isNotEmpty () Ġ|| Ġelement Ġ! is ĠTopic Element <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollector . collect ( tag Collector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Result Ġto Ġ" tag " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopic Collector Ġ= ĠError Collector < Translator Error <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopic Result Ġ= Ġelement . items . flatMap Ġ{ Ġquery er . find Topic ( it , Ġtopic Collector ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( topic Result . isNotEmpty () Ġ|| Ġelement Ġ! is ĠAuthor Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollector . collect ( topic Collector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Result Ġto Ġ" topic " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor Collector Ġ= ĠError Collector < Translator Error <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor Result Ġ= Ġelement . items . flatMap Ġ{ Ġquery er . find Author ( it , Ġauthor Collector ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollector . collect ( author Collector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Result Ġto Ġ" author " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else Ġwhen Ġ( element . meta Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æłĩè®° äºĨ ç±»åŀĭ æĹ¶ ï¼Į æĮī author -> topic -> tag çļĦ é¡ºåºı ï¼Į ç¡®å®ļ å®ŀéĻħ çļĦ ç±»åŀĭ æĺ¯ ä»Ģä¹Ī ï¼Į çĦ¶åĲİ æł¹æį® åįķ ä¸Ģ ç±»åŀĭ ç¡®å®ļ æŁ¥è¯¢ ç»ĵæŀľ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . AUTHOR Ġ-> Ġ( element Ġas ĠAuthor Element ). items . flatMap Ġ{ Ġquery er . find Author ( it , Ġcollector ) Ġ} Ġto Ġ" author " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . TOPIC Ġ-> Ġ( element Ġas ĠTopic Element < *> ). items . flatMap Ġ{ Ġquery er . find Topic ( it , Ġcollector ) Ġ} Ġto Ġ" topic " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Type . TAG Ġ-> Ġelement . items . flatMap Ġ{ Ġquery er . find Tag ( it , Ġcollector ) Ġ} Ġto Ġ" tag " ĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ Ġ( result , Ġ_) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result . isEmpty ()) Ġcollector . warning ( Whole Element Matches None ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( options != Ġnull Ġ&& Ġresult . size Ġ>= Ġoptions . warning Limit Of Union Items ) Ġcollector . warning ( NumberOf Union Item Ex ceed ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ}, Ġoptions . warning Limit Of Union Items )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ä¸Ģä¸ª Source Tag Element çļĦ ç¿» è¯ĳ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Source Tag Element ( element : ĠSource Tag Element , Ġquery er : ĠQuery er , Ġcollector : ĠError Collector < Translator Error <* >>, Ġoptions : ĠTrans lator Options ?): ĠList < Element Source Tag > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . items . flatMap Ġ{ Ġquery er . find Source Tag ( it , Ġcollector ) Ġ}. also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result . isEmpty ()) Ġcollector . warning ( Whole Element Matches None ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( options != Ġnull Ġ&& Ġresult . size Ġ>= Ġoptions . warning Limit Of Union Items ) Ġcollector . warning ( NumberOf Union Item Ex ceed ( element . items . map Ġ{ Ġit . revert To QueryString () Ġ}, Ġoptions . warning Limit Of Union Items )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ ä¸Ģä¸ª semantic Ġorder é¡¹ ç¿» è¯ĳ ä¸º åı¯ è§Ĩ åĮĸ é¡¹ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap Order Item ( order : ĠOrder < *> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ if ( order . is Ascending ()) Ġ" +" Ġelse Ġ"- "} ${ order . value }" ĊĠĠĠ Ġ} Ċ }