// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . pom . java Ċ Ċ import Ġcom . intellij . internal . statistic . beans . Metric Event Ċ import Ġcom . intellij . internal . statistic . beans . new Metric Ċ import Ġcom . intellij . internal . statistic . event Log . Feature Usage Data Ċ import Ġcom . intellij . internal . statistic . service . f us . collect ors . Project Usage s Collector Ċ import Ġcom . intellij . openapi . module . Module Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Language Level Module Extension Impl Ċ import Ġcom . intellij . openapi . roots . Language Level Project Extension Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . util . lang . Java Version Ċ import Ġjava . util .* Ċ Ċ class ĠJava Language Versions Collector Ġ: ĠProject Usage s Collector () Ġ{ ĊĠ Ġoverride Ġfun Ġget GroupId (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" java . language " ĊĠ Ġ} ĊĊĠ Ġpublic Ġoverride Ġfun Ġget Metrics ( project : ĠProject ): ĠSet < Metric Event > Ġ{ ĊĠĠĠ Ġval Ġsdk s Ġ= ĠModule Manager . getInstance ( project ). modules . map NotNull To ( HashSet ()) Ġ{ ĊĠĠĠĠĠ ĠModule Root Manager . getInstance ( it ). sdk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġj dk Versions Ġ= Ġsdk s . map To ( HashSet ()) Ġ{ ĊĠĠĠĠĠ ĠJava Version . try Parse ( it . version String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmetrics Ġ= ĠHashSet < Metric Event >() ĊĠĠĠ Ġj dk Versions . map To ( metrics ) Ġ{ ĊĠĠĠĠĠ Ġnew Metric (" MODULE _ JDK _ VERSION ", ĠFeature Usage Data (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Data (" feature ", Ġit ?. feature Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġadd Data (" minor ", Ġit ?. minor Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġadd Data (" update ", Ġit ?. update Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġadd Data (" ea ", Ġit ?. ea Ġ?: Ġfalse ) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġproject Extension Ġ= ĠLanguage Level Project Extension . getInstance ( project ) ĊĠĠĠ Ġif Ġ( project Extension Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġproject Language Level Ġ= Ġproject Extension . language Level ĊĠĠĠĠĠ Ġval Ġlanguage Levels Ġ= ĠModule Manager . getInstance ( project ). modules . map To ( Enum Set . none Of ( Language Level :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠ ĠLanguage Level Module Extension Impl . getInstance ( it )?. language Level Ġ?: Ġproject Language Level ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġlanguage Levels . map To ( metrics ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Metric (" MODULE _ LANGUAGE _ LEVEL ", ĠFeature Usage Data (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġadd Data (" version ", Ġit . to Java Version (). feature ) ĊĠĠĠĠĠĠĠĠĠ Ġadd Data (" preview ", Ġit . is Preview ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġmetrics ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġrequires Read Access () Ġ= Ġtrue Ċ } Ċ