# Hierarchy For All Packages

Package Hierarchies:

- com.university.bookstore,
- com.university.bookstore.api,
- com.university.bookstore.builder,
- com.university.bookstore.chain,
- com.university.bookstore.composite,
- com.university.bookstore.controller,
- com.university.bookstore.decorator,
- com.university.bookstore.demo,
- com.university.bookstore.factory,
- com.university.bookstore.impl,
- com.university.bookstore.iterator,
- com.university.bookstore.model,
- com.university.bookstore.observer,
- com.university.bookstore.repository,
- com.university.bookstore.search,
- com.university.bookstore.service,
- com.university.bookstore.utils,
- com.university.bookstore.visitor

## Class Hierarchy

- java.lang.Object
  - com.university.bookstore.factory.AdvancedMaterialFactory
  - com.university.bookstore.observer.AnalyticsObserver (implements com.university.bookstore.observer.MaterialObserver)
  - com.university.bookstore.observer.AnalyticsObserver.AnalyticsData
  - com.university.bookstore.observer.AuditLogObserver (implements com.university.bookstore.observer.MaterialObserver)
  - com.university.bookstore.observer.AuditLogObserver.AuditLogEntry
  - com.university.bookstore.observer.AuditLogObserver.AuditLogStats
  - com.university.bookstore.model.Book (implements java.lang.Comparable<T>)
  - com.university.bookstore.utils.BookArrayUtils
  - com.university.bookstore.BookstoreApplication
  - com.university.bookstore.impl.BookstoreArrayList (implements com.university.bookstore.api.BookstoreAPI)
  - com.university.bookstore.composite.BundleService
  - com.university.bookstore.composite.BundleService.BundleStats
  - com.university.bookstore.search.CachedSearchService
  - com.university.bookstore.impl.ConcurrentMaterialStore (implements com.university.bookstore.api.MaterialStore)
  - com.university.bookstore.chain.DiscountApprovalService
  - com.university.bookstore.chain.DiscountApprovalService.ApprovalStats
  - com.university.bookstore.chain.DiscountHandler
    - com.university.bookstore.chain.DirectorHandler
    - com.university.bookstore.chain.ManagerHandler
    - com.university.bookstore.chain.VPHandler
  - com.university.bookstore.chain.DiscountRequest
  - com.university.bookstore.builder.EBookBuilder (implements com.university.bookstore.builder.MaterialBuilder<T>)
  - com.university.bookstore.observer.InventoryObserver (implements com.university.bookstore.observer.MaterialObserver)
  - com.university.bookstore.repository.JsonMaterialRepository (implements com.university.bookstore.repository.MaterialRepository)
  - com.university.bookstore.utils.LoggerFactory
  - com.university.bookstore.model.Material (implements java.lang.Comparable<T>)
    - com.university.bookstore.model.AudioBook (implements com.university.bookstore.model.Media)
    - com.university.bookstore.model.EBook (implements com.university.bookstore.model.Media)
    - com.university.bookstore.model.Magazine
    - com.university.bookstore.decorator.MaterialDecorator
      - com.university.bookstore.decorator.DigitalAnnotationDecorator
      - com.university.bookstore.decorator.ExpeditedDeliveryDecorator
      - com.university.bookstore.decorator.GiftWrappingDecorator
    - com.university.bookstore.model.PrintedBook
    - com.university.bookstore.model.VideoMaterial (implements com.university.bookstore.model.Media)
  - com.university.bookstore.observer.MaterialAddedEvent (implements com.university.bookstore.observer.MaterialEvent)
  - com.university.bookstore.composite.MaterialBundle (implements com.university.bookstore.composite.MaterialComponent)
  - com.university.bookstore.builder.MaterialBundleBuilder (implements com.university.bookstore.builder.ComponentBuilder<T>)
  - com.university.bookstore.controller.MaterialController
  - com.university.bookstore.builder.MaterialDirector
  - com.university.bookstore.decorator.MaterialEnhancementService
  - com.university.bookstore.observer.MaterialEventPublisher (implements com.university.bookstore.observer.MaterialSubject)
  - com.university.bookstore.factory.MaterialFactory
  - com.university.bookstore.iterator.MaterialIteratorFactory
  - com.university.bookstore.composite.MaterialLeaf (implements com.university.bookstore.composite.MaterialComponent)
  - com.university.bookstore.service.MaterialService
  - com.university.bookstore.api.MaterialStore.InventoryStats
  - com.university.bookstore.impl.MaterialStoreImpl (implements com.university.bookstore.api.MaterialStore)
  - com.university.bookstore.repository.MaterialsWrapper
  - com.university.bookstore.search.MaterialTrie
  - com.university.bookstore.iterator.MaterialTypeIterator (implements com.university.bookstore.iterator.MaterialIterator)
  - com.university.bookstore.impl.ModernConcurrentMaterialStore (implements java.lang.AutoCloseable, com.university.bookstore.api.MaterialStore)
  - com.university.bookstore.repository.ModernJsonMaterialRepository (implements java.lang.AutoCloseable, com.university.bookstore.repository.MaterialRepository)
  - com.university.bookstore.api.ModernMaterialStore.SearchCriteria.Builder
  - com.university.bookstore.search.ModernSearchCache (implements java.lang.AutoCloseable)
  - com.university.bookstore.demo.PolymorphismDemo
  - com.university.bookstore.observer.PriceChangedEvent (implements com.university.bookstore.observer.MaterialEvent)
  - com.university.bookstore.iterator.PriceRangeIterator (implements com.university.bookstore.iterator.MaterialIterator)
  - com.university.bookstore.iterator.PriceSortedIterator (implements com.university.bookstore.iterator.MaterialIterator)
  - com.university.bookstore.search.SearchResultCache
  - com.university.bookstore.search.SearchResultCache.CacheStats
  - com.university.bookstore.visitor.ShippingCostCalculator (implements com.university.bookstore.visitor.MaterialVisitor)
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - java.lang.RuntimeException
        - com.university.bookstore.service.MaterialService.InvalidMaterialException
        - com.university.bookstore.service.MaterialService.MaterialNotFoundException
        - com.university.bookstore.repository.RepositoryException

## Interface Hierarchy

- com.university.bookstore.api.BookstoreAPI
- com.university.bookstore.builder.ComponentBuilder<T>
- com.university.bookstore.builder.MaterialBuilder<T>
- com.university.bookstore.composite.MaterialComponent
- com.university.bookstore.observer.MaterialEvent
- com.university.bookstore.iterator.MaterialIterator
- com.university.bookstore.observer.MaterialObserver
- com.university.bookstore.repository.MaterialRepository
- com.university.bookstore.api.MaterialStore
  - com.university.bookstore.api.ModernMaterialStore
- com.university.bookstore.observer.MaterialSubject
- com.university.bookstore.visitor.MaterialVisitor
- com.university.bookstore.model.Media

## Enum Class Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable)
    - com.university.bookstore.model.Magazine.PublicationFrequency
    - com.university.bookstore.model.Material.MaterialType
    - com.university.bookstore.model.Media.MediaQuality
    - com.university.bookstore.model.VideoMaterial.VideoType

## Record Class Hierarchy

- java.lang.Object
  - java.lang.Record
    - com.university.bookstore.api.ModernMaterialStore.BatchOperationResult
    - com.university.bookstore.api.ModernMaterialStore.ModernInventoryStats
    - com.university.bookstore.api.ModernMaterialStore.SearchCriteria
    - com.university.bookstore.search.ModernSearchCache.CacheStats