package Ġorg . jetbrains . idea . ins pe ctions . generators Ċ Ċ import Ġorg . j dom 2 . Document Ċ import Ġorg . j dom 2 . Element Ċ import Ġorg . j dom 2 . output . XM LO ut put ter Ċ import Ġorg . jetbrains . idea . ins pe ctions . problems . Display able Problem Descriptor Ċ import Ġorg . jetbrains . idea . ins pe ctions . problems . Pin ned Problem Descriptor Ċ import Ġorg . jetbrains . idea . ins pe ctions . problems . Problem Level Ċ import Ġjava . io . File Ċ Ċ class ĠXML Generator ( override Ġval Ġreport File : ĠFile ) Ġ: ĠReport Generator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġerrors Root Ġ= ĠElement (" errors ") ĊĠĠĠ Ġprivate Ġval Ġerror Elements Ġ= Ġmutable ListOf < Element >() ĊĠĠĠ Ġprivate Ġval Ġwarnings Root Ġ= ĠElement (" warnings ") ĊĠĠĠ Ġprivate Ġval Ġwarning Elements Ġ= Ġmutable ListOf < Element >() ĊĠĠĠ Ġprivate Ġval Ġinfo Root Ġ= ĠElement (" info ") ĊĠĠĠ Ġprivate Ġval Ġinfo Elements Ġ= Ġmutable ListOf < Element >() ĊĊĠĠĠ Ġoverride Ġfun Ġreport ( problem : ĠDisplay able Problem Descriptor <* >, Ġinspection Class : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= ĠElement (" problem ") ĊĠĠĠĠĠĠĠ Ġif Ġ( problem Ġis ĠPin ned Problem Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" file "). add Content ( problem . fileName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" line "). add Content (( problem . line Ġ+ Ġ 1 ). toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" row "). add Content (( problem . row Ġ+ Ġ 1 ). toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" java _ class "). add Content ( inspection Class )) ĊĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" problem _ class ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAttribute (" severity ", Ġproblem . level . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Content ( problem . displayName )) ĊĠĠĠĠĠĠĠ Ġval Ġrendered Problem Ġ= Ġwhen Ġ( problem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPin ned Problem Descriptor Ġ-> Ġproblem . render Description () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġproblem . render () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelement . add Content ( Element (" description "). add Content ( rendered Problem )) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( problem . level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Level . ERROR Ġ-> Ġerror Elements Ġ+= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Level . WARNING , ĠProblem Level . WE AK _ WARNING Ġ-> Ġwarning Elements Ġ+= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Level . INFO Ġ-> Ġinfo Elements Ġ+= Ġelement ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate () Ġ{ ĊĠĠĠĠĠĠĠ Ġerrors Root . setContent ( error Elements ) ĊĠĠĠĠĠĠĠ Ġwarnings Root . setContent ( warning Elements ) ĊĠĠĠĠĠĠĠ Ġinfo Root . setContent ( info Elements ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠElement (" report ") ĊĠĠĠĠĠĠĠ Ġroot . add Content ( errors Root ) ĊĠĠĠĠĠĠĠ Ġroot . add Content ( warnings Root ) ĊĠĠĠĠĠĠĠ Ġroot . add Content ( info Root ) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠDocument ( root ) ĊĠĠĠĠĠĠĠ ĠX M LO ut put ter (). output ( document , Ġreport File . output Stream ()) ĊĠĠĠ Ġ} Ċ }