/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . configuration . k lib Ċ Ċ import Ġcom . intellij . openapi . external System . model . DataNode Ċ import Ġcom . intellij . openapi . external System . model . Project Keys Ċ import Ġcom . intellij . openapi . external System . model . project . Library Data Ċ import Ġcom . intellij . openapi . external System . model . project . Project Data Ċ import Ġcom . intellij . openapi . external System . service . project . Ide Mod ifiable Models Provider Ċ import Ġcom . intellij . openapi . external System . service . project . Ide UI Mod ifiable Models Provider Ċ import Ġcom . intellij . openapi . external System . service . project . manage . Abstract Project DataService Ċ import Ġcom . intellij . openapi . external System . util . External System Constants Ċ import Ġcom . intellij . openapi . external System . util . Order Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Library Order Entry Ċ import Ġcom . intellij . openapi . roots . libraries . Library Ċ import Ġorg . jetbrains . kotlin . idea . configuration . k lib . Kotlin Native Library Name Util . K OT LIN _ NATIVE _ LIBRARY _ PREFIX _ PLUS _ SPACE Ċ Ċ // ĠK T - 3 0 4 9 0 . ĠThis Ġ` Project DataService ` Ġmust Ġbe Ġexecuted Ġimmediately Ġafter Ċ // Ġ` com . intellij . openapi . external System . service . project . manage . Library DataService ` Ġto Ġclean - up ĠK LIB s Ġbefore Ġany Ġother Ġactions Ġtaken Ġon Ġthem . Ċ @ Order ( External System Constants . BUIL TIN _ LIBRARY _ DATA _ SERVICE _ ORDER Ġ+ Ġ 1 ) Ġ// Ġforce Ġorder Ċ class ĠKotlin Native Library DataService Ġ: ĠAbstract Project DataService < Library Data , ĠLibrary >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Target Data Key () Ġ= ĠProject Keys . LIBRARY ĊĊĠĠĠ Ġ// ĠSee Ġalso Ġ` com . intellij . openapi . external System . service . project . manage . Library DataService . post Process ()` ĊĠĠĠ Ġoverride Ġfun Ġpost Process ( ĊĠĠĠĠĠĠĠ Ġto Import : ĠMutable Collection < DataNode < Library Data >>, ĊĠĠĠĠĠĠĠ Ġproject Data : ĠProject Data ?, ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġmodels Provider : ĠIde Mod ifiable Models Provider ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( project Data Ġ== Ġnull Ġ|| Ġmodels Provider Ġis ĠIde UI Mod ifiable Models Provider ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġlibraries Model Ġ= Ġmodels Provider . modifiable Project Libraries Model ĊĠĠĠĠĠĠĠ Ġval Ġpotential Or ph ans Ġ= ĠHashMap < String , ĠLibrary >() ĊĊĠĠĠĠĠĠĠ Ġlibraries Model . libraries . forEach Ġ{ Ġlibrary Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlibrary Name Ġ= Ġlibrary . name ?. take If Ġ{ Ġit . startsWith ( K OT LIN _ NATIVE _ LIBRARY _ PREFIX _ PLUS _ SPACE ) Ġ} Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpotential Or ph ans [ library Name ] Ġ= Ġlibrary ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( potential Or ph ans . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġmodels Provider . modules . forEach Ġ{ Ġmodule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodels Provider . getOrder Entries ( module ). forEach Ġinner @{ Ġorder Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlibrary Order Entry Ġ= Ġorder Entry Ġas ? ĠLibrary Order Entry Ġ?: Ġreturn @ inner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( library Order Entry . is Module Level ) Ġreturn @ inner ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlibrary Name Ġ= Ġ( library Order Entry . library ?. name Ġ?: Ġlibrary Order Entry . library Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . startsWith ( K OT LIN _ NATIVE _ LIBRARY _ PREFIX _ PLUS _ SPACE ) Ġ} Ġ?: Ġreturn @ inner ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpotential Or ph ans . remove ( library Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpotential Or ph ans . keys . forEach Ġ{ Ġlibrary Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlibraries Model . get Library ByName ( library Name )?. let Ġ{ Ġlibraries Model . remove Library ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ