/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . bk repo . op data . model Ċ Ċ import Ġcom . tencent . bk repo . op data . constant . OP DATA _ FILE _ EXTENSION _ METR ICS Ċ import Ġcom . tencent . bk repo . op data . pojo . enums . Stat Metrics Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . data . domain . Sort Ċ import Ġorg . springframework . data . mongodb . core . Mongo Template Ċ import Ġorg . springframework . data . mongodb . core . aggregation . Aggregation . group Ċ import Ġorg . springframework . data . mongodb . core . aggregation . Aggregation . match Ċ import Ġorg . springframework . data . mongodb . core . aggregation . Aggregation . new Aggregation Ċ import Ġorg . springframework . data . mongodb . core . aggregation . Aggregation . project Ċ import Ġorg . springframework . data . mongodb . core . aggregation . Aggregation . sort Ċ import Ġorg . springframework . data . mongodb . core . query . Criteria Ċ import Ġorg . springframework . data . mongodb . core . query . and Ċ import Ġorg . springframework . data . mongodb . core . query . isEqualTo Ċ import Ġorg . springframework . data . mongodb . core . query . where Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠFile Extension Metrics Model Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmongo Template : ĠMongo Template Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĢ» ä½ĵ çļĦæĸĩä»¶ åĲİ ç¼Ģ åĲį çļĦ ç»Łè®¡ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetFile Extension Metrics ( metrics : ĠStat Metrics ): ĠList < HashMap < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaggregate Query ( Criteria (), Ġmetrics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ é¡¹çĽ® çļĦæĸĩä»¶ åĲİ ç¼Ģ åĲį çļĦ ç»Łè®¡ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Proj File Extension Metrics ( projectId : ĠString , Ġmetrics : ĠStat Metrics ): ĠList < HashMap < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= Ġwhere ( T File Extension Metrics :: projectId ). isEqualTo ( projectId ) ĊĠĠĠĠĠĠĠ Ġreturn Ġaggregate Query ( criteria , Ġmetrics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»ĵåºĵ çļĦæĸĩä»¶ åĲİ ç¼Ģ åĲį çļĦ ç»Łè®¡ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Repo File Extension Metrics ( ĊĠĠĠĠĠĠĠ ĠprojectId : ĠString , ĊĠĠĠĠĠĠĠ Ġrepo Name : ĠString , ĊĠĠĠĠĠĠĠ Ġmetrics : ĠStat Metrics ĊĠĠĠ Ġ): ĠList < HashMap < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= Ġwhere ( T File Extension Metrics :: projectId ). isEqualTo ( projectId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( T File Extension Metrics :: repo Name ). isEqualTo ( repo Name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġaggregate Query ( criteria , Ġmetrics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġaggregate Query ( criteria : ĠCriteria , Ġmetrics : ĠStat Metrics ): ĠList < HashMap < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġmetrics . name . toLowerCase () ĊĠĠĠĠĠĠĠ Ġval Ġaggregate Ġ= Ġnew Aggregation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch ( criteria ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup ( T File Extension Metrics :: extension . name ). sum ( field ). ` as `( field ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort ( Sort . Direction . DESC , Ġfield ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject (). and Include ( field ). and ( ID ). ` as `( T File Extension Metrics :: extension . name ). and Exclude ( ID ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaggregate Result Ġ= Ġmongo Template . aggregate ( aggregate , ĠOP DATA _ FILE _ EXTENSION _ METR ICS , ĠHashMap :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġaggregate Result . mapped Results Ġas ? ĠList < HashMap < String , ĠAny >> Ġ?: ĠlistOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠID Ġ= Ġ"_ id " ĊĠĠĠ Ġ} Ċ } Ċ