/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGeneral ĠE lectric ĠCompany Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ************************************************************************* ******/ Ċ Ċ package Ġorg . eclipse . ket i . acs . privilege . management . dao Ċ Ċ import Ġorg . eclipse . ket i . acs . model . Attribute Ċ import Ġorg . eclipse . ket i . acs . zone . management . dao . Zone Entity Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . Initializing Bean Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . beans . factory . annotation . Qualifier Ċ import Ġorg . springframework . core . env . Environment Ċ import Ġorg . springframework . data . domain . Example Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . domain . Sort Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ private Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( Subject Repository Proxy :: class . java ) Ċ private Ġconst Ġval ĠMESSAGE Ġ= Ġ" method Ġnot Ġsupported " Ċ Ċ @ Component Ċ class ĠSubject Repository Proxy Ġ: ĠSubject Repository , ĠSubject Hierarchical Repository , ĠInitial izing Bean Ġ{ ĊĊĠĠĠ Ġ@ Autowired ( required Ġ= Ġfalse ) ĊĠĠĠ Ġprivate Ġval Ġgraph Repository : ĠGraph Subject Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġ@ Qualifier (" subject Repository ") Ġ// ĠThis Ġis Ġthe Ġbean Ġid Ġregistered Ġby ĠSpring Ġdata ĠJ PA . ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnon Graph Repository : ĠSubject Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenvironment : ĠEnvironment ĊĊĠĠĠ Ġ// ĠThis Ġis Ġset Ġto Ġthe Ġactive Ġrepository Ġbeing Ġprox ied Ġto , Ġbased Ġon Ġthe Ġactive Ġprofile . ĠSee Ġafter Properties Set () ĊĠĠĠ Ġprivate Ġvar Ġactive Repository : ĠSubject Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġafter Properties Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( listOf (* this . environment . active Profiles ). contains (" graph ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . active Repository Ġ= Ġthis . graph Repository ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . info (" Subject Ġh ierarchical Ġrepository Ġenabled .") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . active Repository Ġ= Ġthis . non Graph Repository ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . info (" Subject Ġnon - hierarchical Ġrepository Ġenabled .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll (): ĠList < Subject Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll ( sort : ĠSort ): ĠList < Subject Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll ( ids : ĠIterable < Long >): ĠList < Subject Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġsave ( entities : ĠIterable < S >): ĠList < S > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . active Repository !!. save ( entities ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġflush () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġsave And Flush ( entity : ĠS ): ĠS Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete In Batch ( entities : ĠIterable < Subject Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete All In Batch () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget One ( id : ĠLong ?): ĠSubject Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > ĠfindAll ( ĊĠĠĠĠĠĠĠ Ġexample : ĠExample < S >, ĊĠĠĠĠĠĠĠ Ġsort : ĠSort ĊĠĠĠ Ġ): ĠList < S > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > ĠfindAll ( example : ĠExample < S >): ĠList < S > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll ( page able : ĠPage able ): ĠPage < Subject Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > ĠfindAll ( ĊĠĠĠĠĠĠĠ Ġexample : ĠExample < S >, ĊĠĠĠĠĠĠĠ Ġpage able : ĠPage able ĊĠĠĠ Ġ): ĠPage < S > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġsave ( entity : ĠS ): ĠS Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . active Repository !!. save ( entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind One ( id : ĠLong ?): ĠSubject Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġfind One ( example : ĠExample < S >): ĠS Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexists ( id : ĠLong ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcount (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġcount ( example : ĠExample < S >): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( id : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . active Repository !!. delete ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( entity : ĠSubject Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . active Repository !!. delete ( entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( entities : ĠIterable < Subject Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . active Repository !!. delete ( entities ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete All () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Subject With Inherited Attributes For Scopes ( ĊĠĠĠĠĠĠĠ Ġzone : ĠZone Entity , ĊĠĠĠĠĠĠĠ Ġsubject Identifier : ĠString , ĊĠĠĠĠĠĠĠ Ġscopes : ĠSet < Attribute >? ĊĠĠĠ Ġ): ĠSubject Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . active Repository Ġ=== Ġthis . graph Repository ) Ġ{ Ġ// Ġi . e . Ġgraph Ġis Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . graph Repository !!. get Subject With Inherited Attributes For Scopes ( zone , Ġsubject Identifier , Ġscopes ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . non Graph Repository . getBy Zone And Subject Identifier ( zone , Ġsubject Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Subject With Inherited Attributes ( ĊĠĠĠĠĠĠĠ Ġzone : ĠZone Entity , ĊĠĠĠĠĠĠĠ Ġsubject Identifier : ĠString ĊĠĠĠ Ġ): ĠSubject Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . active Repository Ġ=== Ġthis . graph Repository ) Ġ{ Ġ// Ġi . e . Ġgraph Ġis Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . graph Repository !!. get Subject With Inherited Attributes ( zone , Ġsubject Identifier ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . non Graph Repository . getBy Zone And Subject Identifier ( zone , Ġsubject Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Zone ( zone Entity : ĠZone Entity ): ĠList < Subject Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . active Repository !!. findBy Zone ( zone Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetBy Zone And Subject Identifier ( ĊĠĠĠĠĠĠĠ Ġzone : ĠZone Entity , ĊĠĠĠĠĠĠĠ Ġsubject Identifier : ĠString ĊĠĠĠ Ġ): ĠSubject Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . active Repository !!. getBy Zone And Subject Identifier ( zone , Ġsubject Identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Subject Entity And Desc endants Ids ( entity : ĠSubject Entity ?): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . active Repository Ġ=== Ġthis . graph Repository ) Ġ{ Ġ// Ġi . e . Ġgraph Ġis Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . graph Repository !!. get Subject Entity And Desc endants Ids ( entity ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( entity !!. subject Identifier !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSubject Entity > Ġexists ( example : ĠExample < S >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( MESSAGE ) ĊĠĠĠ Ġ} Ċ } Ċ