# Uses of Class
com.university.bookstore.model.Material

Packages that use Material
Package
Description
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.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.visitor

- ## Uses of Material in com.university.bookstore.api

  Methods in com.university.bookstore.api that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `CompletableFuture<List<Material>>`
  ModernMaterialStore.`advancedSearchAsync(ModernMaterialStore.SearchCriteria criteria)`
  Performs advanced search with multiple criteria.
  `List<Material>`
  MaterialStore.`filterMaterials(Predicate<Material> predicate)`
  Filters materials by a custom predicate.
  `List<Material>`
  MaterialStore.`findByCreators(String... creators)`
  Finds materials by multiple creators (OR condition).
  `Optional<Material>`
  MaterialStore.`findById(String id)`
  Finds a material by its ID.
  `CompletableFuture<Optional<Material>>`
  ModernMaterialStore.`findByIdAsync(String id)`
  Finds material by ID asynchronously.
  `List<Material>`
  MaterialStore.`findRecentMaterials(int years)`
  Finds materials published in the last N years.
  `List<Material>`
  MaterialStore.`findWithPredicate(Predicate<Material> condition)`
  Finds materials with custom filtering using predicate.
  `List<Material>`
  MaterialStore.`getAllMaterials()`
  Gets all materials (unsorted).
  `List<Material>`
  MaterialStore.`getAllMaterialsSorted()`
  Gets all materials sorted by title.
  `List<Material>`
  MaterialStore.`getMaterialsByPriceRange(double minPrice, double maxPrice)`
  Gets materials within a price range.
  `List<Material>`
  MaterialStore.`getMaterialsByType(Material.MaterialType type)`
  Gets all materials of a specific type.
  `List<Material>`
  MaterialStore.`getMaterialsByYear(int year)`
  Gets materials published/released in a specific year.
  `List<Material>`
  MaterialStore.`getSorted(Comparator<Material> comparator)`
  Gets materials sorted by custom comparator.
  `Optional<Material>`
  MaterialStore.`removeMaterial(String id)`
  Removes a material by its ID.
  `List<Material>`
  MaterialStore.`searchByCreator(String creator)`
  Searches materials by creator (author/director/publisher).
  `List<Material>`
  MaterialStore.`searchByTitle(String title)`
  Searches materials by title (case-insensitive partial match).
  `CompletableFuture<List<Material>>`
  ModernMaterialStore.`searchByTitleAsync(String title)`
  Searches by title asynchronously.
  Methods in com.university.bookstore.api with parameters of type Material
  Modifier and Type
  Method
  Description
  `boolean`
  MaterialStore.`addMaterial(Material material)`
  Adds a material to the store inventory.
  `CompletableFuture<Boolean>`
  ModernMaterialStore.`addMaterialAsync(Material material)`
  Adds material asynchronously.
  Method parameters in com.university.bookstore.api with type arguments of type Material
  Modifier and Type
  Method
  Description
  `CompletableFuture<ModernMaterialStore.BatchOperationResult>`
  ModernMaterialStore.`addMaterialsBatchAsync(List<Material> materials)`
  Adds multiple materials in batch.
  `List<Material>`
  MaterialStore.`filterMaterials(Predicate<Material> predicate)`
  Filters materials by a custom predicate.
  `List<Material>`
  MaterialStore.`findWithPredicate(Predicate<Material> condition)`
  Finds materials with custom filtering using predicate.
  `List<Material>`
  MaterialStore.`getSorted(Comparator<Material> comparator)`
  Gets materials sorted by custom comparator.

- ## Uses of Material in com.university.bookstore.builder

  Classes in com.university.bookstore.builder with type parameters of type Material
  Modifier and Type
  Interface
  Description
  `interface`
  `MaterialBuilder<T extends Material>`
  Builder interface for creating Material instances.
  Methods in com.university.bookstore.builder that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialDirector.`buildBasicEBook(String id, String title, String author, double price)`
  Constructs a basic EBook with minimal features.
  `Material`
  MaterialDirector.`buildPremiumEBook(String id, String title, String author, double price)`
  Constructs a premium EBook with all features enabled.
  `Material`
  MaterialDirector.`buildStudentEBook(String id, String title, String author, double price)`
  Constructs a student EBook with educational features.
  Methods in com.university.bookstore.builder with parameters of type Material
  Modifier and Type
  Method
  Description
  `MaterialBundleBuilder`
  MaterialBundleBuilder.`addMaterial(Material material)`
  Adds a material to the bundle.
  `MaterialBundleBuilder`
  MaterialBundleBuilder.`removeMaterial(Material material)`
  Removes a material from the bundle.
  Method parameters in com.university.bookstore.builder with type arguments of type Material
  Modifier and Type
  Method
  Description
  `MaterialBundleBuilder`
  MaterialBundleBuilder.`addMaterials(List<Material> materials)`
  Adds multiple materials to the bundle.
  `MaterialBundle`
  MaterialDirector.`buildCourseBundle(String bundleName, List<Material> materials)`
  Constructs a course bundle with a 25% discount.
  `MaterialBundle`
  MaterialDirector.`buildCustomBundle(String bundleName, List<Material> materials, double discount)`
  Constructs a custom bundle with specified parameters.
  `MaterialBundle`
  MaterialDirector.`buildPremiumBundle(String bundleName, List<Material> materials)`
  Constructs a premium bundle with a 30% discount.
  `MaterialBundle`
  MaterialDirector.`buildStarterBundle(String bundleName, List<Material> materials)`
  Constructs a starter bundle with a 10% discount.
  `MaterialBundle`
  MaterialDirector.`buildTextbookBundle(String bundleName, List<Material> materials)`
  Constructs a textbook bundle with a 20% discount.

- ## Uses of Material in com.university.bookstore.chain

  Methods in com.university.bookstore.chain that return Material
  Modifier and Type
  Method
  Description
  `Material`
  DiscountRequest.`getMaterial()`
  Gets the material for which discount is requested.
  Methods in com.university.bookstore.chain with parameters of type Material
  Modifier and Type
  Method
  Description
  `List<DiscountRequest>`
  DiscountApprovalService.`getRequestsForMaterial(Material material)`
  Gets discount requests for a specific material.
  `DiscountRequest`
  DiscountApprovalService.`requestDiscount(Material material, double discountPercent, String customerId, String reason)`
  Processes a discount request through the approval chain.
  Constructors in com.university.bookstore.chain with parameters of type Material
  Modifier
  Constructor
  Description
  ``
  `DiscountRequest(Material material, double requestedDiscount, String customerId, String reason)`
  Creates a new discount request.

- ## Uses of Material in com.university.bookstore.composite

  Methods in com.university.bookstore.composite that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialLeaf.`getMaterial()`
  Gets the wrapped material.
  Methods in com.university.bookstore.composite that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  MaterialBundle.`getMaterials()`
  `List<Material>`
  MaterialComponent.`getMaterials()`
  Gets all materials contained in this component.
  `List<Material>`
  MaterialLeaf.`getMaterials()`
  `List<Material>`
  MaterialBundle.`getMaterialsByType(Material.MaterialType type)`
  Gets all materials of the specified type in this bundle.
  Methods in com.university.bookstore.composite with parameters of type Material
  Modifier and Type
  Method
  Description
  `void`
  BundleService.`addToBundle(String bundleName, Material material)`
  Adds a material to the specified bundle.
  `boolean`
  MaterialBundle.`containsMaterial(Material material)`
  Checks if this bundle contains the specified material.
  `boolean`
  BundleService.`removeFromBundle(String bundleName, Material material)`
  Removes a material from the specified bundle.
  Constructors in com.university.bookstore.composite with parameters of type Material
  Modifier
  Constructor
  Description
  ``
  `MaterialLeaf(Material material)`
  Creates a new material leaf wrapping the specified material.

- ## Uses of Material in com.university.bookstore.controller

  Methods in com.university.bookstore.controller that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `org.springframework.http.ResponseEntity<Material>`
  MaterialController.`createMaterial(Material material)`
  POST /api/materials - Create a new material
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`getAllMaterials()`
  GET /api/materials - Retrieve all materials
  `org.springframework.http.ResponseEntity<Material>`
  MaterialController.`getMaterialById(String id)`
  GET /api/materials/{id} - Retrieve a specific material by ID
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`getMaterialsByPriceRange(double min, double max)`
  Get materials by price range.
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`getMaterialsByType(Material.MaterialType type)`
  GET /api/materials/type/{type} - Get materials by type
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`getRecentMaterials(int years)`
  GET /api/materials/recent?years={years} - Get recent materials
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`searchByCreator(String q)`
  GET /api/materials/search/creator?q={query} - Search materials by creator
  `org.springframework.http.ResponseEntity<List<Material>>`
  MaterialController.`searchByTitle(String q)`
  GET /api/materials/search/title?q={query} - Search materials by title
  `org.springframework.http.ResponseEntity<Material>`
  MaterialController.`updateMaterial(String id, Material material)`
  PUT /api/materials/{id} - Update an existing material
  Methods in com.university.bookstore.controller with parameters of type Material
  Modifier and Type
  Method
  Description
  `org.springframework.http.ResponseEntity<Material>`
  MaterialController.`createMaterial(Material material)`
  POST /api/materials - Create a new material
  `org.springframework.http.ResponseEntity<Material>`
  MaterialController.`updateMaterial(String id, Material material)`
  PUT /api/materials/{id} - Update an existing material

- ## Uses of Material in com.university.bookstore.decorator

  Subclasses of Material in com.university.bookstore.decorator
  Modifier and Type
  Class
  Description
  `class`
  `DigitalAnnotationDecorator`
  Decorator that adds digital annotation functionality to materials.
  `class`
  `ExpeditedDeliveryDecorator`
  Decorator that adds expedited delivery functionality to materials.
  `class`
  `GiftWrappingDecorator`
  Decorator that adds gift wrapping functionality to materials.
  `class`
  `MaterialDecorator`
  Abstract base class for material decorators in the Decorator pattern.
  Methods in com.university.bookstore.decorator that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialEnhancementService.`addDigitalAnnotations(Material material)`
  Adds digital annotations to a material.
  `Material`
  MaterialEnhancementService.`addExpeditedDelivery(Material material, int deliveryDays)`
  Adds expedited delivery to a material.
  `Material`
  MaterialEnhancementService.`addGiftWrapping(Material material, String style)`
  Adds gift wrapping to a material.
  `Material`
  MaterialEnhancementService.`createDigitalPackage(Material material)`
  Creates a digital package with digital annotations (for e-books only).
  `Material`
  MaterialEnhancementService.`createGiftPackage(Material material, String giftStyle, int deliveryDays)`
  Creates a gift package with gift wrapping and expedited delivery.
  `Material`
  MaterialEnhancementService.`createPremiumPackage(Material material, String giftStyle, int deliveryDays)`
  Creates a premium package with multiple enhancements.
  `Material`
  MaterialDecorator.`getBaseMaterial()`
  Gets the base material (unwraps all decorators).
  `Material`
  MaterialEnhancementService.`getBaseMaterial(Material material)`
  Gets the base material (unwraps all decorators).
  `Material`
  MaterialDecorator.`getDecoratedMaterial()`
  Gets the decorated material.
  Methods in com.university.bookstore.decorator with parameters of type Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialEnhancementService.`addDigitalAnnotations(Material material)`
  Adds digital annotations to a material.
  `Material`
  MaterialEnhancementService.`addExpeditedDelivery(Material material, int deliveryDays)`
  Adds expedited delivery to a material.
  `Material`
  MaterialEnhancementService.`addGiftWrapping(Material material, String style)`
  Adds gift wrapping to a material.
  `double`
  MaterialEnhancementService.`calculateEnhancementCost(Material original, Material enhanced)`
  Calculates the total enhancement cost for a material.
  `Material`
  MaterialEnhancementService.`createDigitalPackage(Material material)`
  Creates a digital package with digital annotations (for e-books only).
  `Material`
  MaterialEnhancementService.`createGiftPackage(Material material, String giftStyle, int deliveryDays)`
  Creates a gift package with gift wrapping and expedited delivery.
  `Material`
  MaterialEnhancementService.`createPremiumPackage(Material material, String giftStyle, int deliveryDays)`
  Creates a premium package with multiple enhancements.
  `Material`
  MaterialEnhancementService.`getBaseMaterial(Material material)`
  Gets the base material (unwraps all decorators).
  `double`
  MaterialEnhancementService.`getBasePrice(Material material)`
  Gets the base price of a material (without decorators).
  `int`
  MaterialEnhancementService.`getEnhancementCount(Material material)`
  Gets the number of decorators applied to a material.
  `String`
  MaterialEnhancementService.`getEnhancementSummary(Material material)`
  Gets a summary of enhancements applied to a material.
  `boolean`
  MaterialEnhancementService.`hasEnhancement(Material material, Class<? extends MaterialDecorator> enhancementType)`
  Checks if a material has a specific type of enhancement.
  `boolean`
  MaterialEnhancementService.`hasEnhancements(Material material)`
  Checks if a material has any enhancements applied.
  Constructors in com.university.bookstore.decorator with parameters of type Material
  Modifier
  Constructor
  Description
  ``
  `DigitalAnnotationDecorator(Material material)`
  Creates a new digital annotation decorator.
  ``
  `ExpeditedDeliveryDecorator(Material material, int deliveryDays)`
  Creates a new expedited delivery decorator.
  ``
  `GiftWrappingDecorator(Material material, String wrappingStyle)`
  Creates a new gift wrapping decorator.
  ``
  `MaterialDecorator(Material material)`
  Creates a new material decorator wrapping the specified material.

- ## Uses of Material in com.university.bookstore.factory

  Methods in com.university.bookstore.factory that return Material
  Modifier and Type
  Method
  Description
  `static Material`
  AdvancedMaterialFactory.`createMaterial(String type, Map<String,Object> properties)`
  Creates a Material instance based on the specified type and properties.
  `static Material`
  MaterialFactory.`createMaterial(String type, Map<String,Object> properties)`
  Creates a Material instance based on the specified type and properties.

- ## Uses of Material in com.university.bookstore.impl

  Methods in com.university.bookstore.impl that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  ConcurrentMaterialStore.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  MaterialStoreImpl.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  ModernConcurrentMaterialStore.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  ConcurrentMaterialStore.`findByCreators(String... creators)`
  `List<Material>`
  MaterialStoreImpl.`findByCreators(String... creators)`
  `List<Material>`
  ModernConcurrentMaterialStore.`findByCreators(String... creators)`
  `Optional<Material>`
  ConcurrentMaterialStore.`findById(String id)`
  `Optional<Material>`
  MaterialStoreImpl.`findById(String id)`
  `Optional<Material>`
  ModernConcurrentMaterialStore.`findById(String id)`
  `CompletableFuture<Optional<Material>>`
  ModernConcurrentMaterialStore.`findByIdAsync(String id)`
  Finds material by ID asynchronously.
  `CompletableFuture<Map<String,Material>>`
  ModernConcurrentMaterialStore.`findByIdsAsync(List<String> ids)`
  Finds multiple materials by IDs asynchronously.
  `List<Material>`
  ConcurrentMaterialStore.`findRecentMaterials(int years)`
  `List<Material>`
  MaterialStoreImpl.`findRecentMaterials(int years)`
  `List<Material>`
  ModernConcurrentMaterialStore.`findRecentMaterials(int years)`
  `List<Material>`
  ConcurrentMaterialStore.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  MaterialStoreImpl.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  ModernConcurrentMaterialStore.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  ConcurrentMaterialStore.`getAllMaterials()`
  `List<Material>`
  MaterialStoreImpl.`getAllMaterials()`
  `List<Material>`
  ModernConcurrentMaterialStore.`getAllMaterials()`
  `List<Material>`
  ConcurrentMaterialStore.`getAllMaterialsSorted()`
  `List<Material>`
  MaterialStoreImpl.`getAllMaterialsSorted()`
  `List<Material>`
  ModernConcurrentMaterialStore.`getAllMaterialsSorted()`
  `List<Material>`
  ConcurrentMaterialStore.`getDiscountedMaterials()`
  Gets materials with active discounts (thread-safe).
  `List<Material>`
  MaterialStoreImpl.`getDiscountedMaterials()`
  Gets materials with active discounts.
  `List<Material>`
  ModernConcurrentMaterialStore.`getDiscountedMaterials()`
  Gets materials with active discounts.
  `List<Material>`
  ConcurrentMaterialStore.`getMaterialsByPriceRange(double minPrice, double maxPrice)`
  `List<Material>`
  MaterialStoreImpl.`getMaterialsByPriceRange(double minPrice, double maxPrice)`
  `List<Material>`
  ModernConcurrentMaterialStore.`getMaterialsByPriceRange(double minPrice, double maxPrice)`
  `List<Material>`
  ConcurrentMaterialStore.`getMaterialsByType(Material.MaterialType type)`
  `List<Material>`
  MaterialStoreImpl.`getMaterialsByType(Material.MaterialType type)`
  `List<Material>`
  ModernConcurrentMaterialStore.`getMaterialsByType(Material.MaterialType type)`
  `List<Material>`
  ConcurrentMaterialStore.`getMaterialsByYear(int year)`
  `List<Material>`
  MaterialStoreImpl.`getMaterialsByYear(int year)`
  `List<Material>`
  ModernConcurrentMaterialStore.`getMaterialsByYear(int year)`
  `List<Material>`
  ConcurrentMaterialStore.`getSorted(Comparator<Material> comparator)`
  `List<Material>`
  MaterialStoreImpl.`getSorted(Comparator<Material> comparator)`
  `List<Material>`
  ModernConcurrentMaterialStore.`getSorted(Comparator<Material> comparator)`
  `Map<Material.MaterialType, List<Material>>`
  ConcurrentMaterialStore.`groupByType()`
  Groups materials by type for reporting (thread-safe).
  `Map<Material.MaterialType, List<Material>>`
  MaterialStoreImpl.`groupByType()`
  Groups materials by type for reporting.
  `Map<Material.MaterialType, List<Material>>`
  ModernConcurrentMaterialStore.`groupByType()`
  Groups materials by type for reporting.
  `CompletableFuture<List<Material>>`
  ModernConcurrentMaterialStore.`parallelSearchAsync(String title, String creator, Material.MaterialType type)`
  Performs parallel search across multiple criteria.
  `Optional<Material>`
  ConcurrentMaterialStore.`removeMaterial(String id)`
  `Optional<Material>`
  MaterialStoreImpl.`removeMaterial(String id)`
  `Optional<Material>`
  ModernConcurrentMaterialStore.`removeMaterial(String id)`
  `List<Material>`
  ConcurrentMaterialStore.`searchByCreator(String creator)`
  `List<Material>`
  MaterialStoreImpl.`searchByCreator(String creator)`
  `List<Material>`
  ModernConcurrentMaterialStore.`searchByCreator(String creator)`
  `List<Material>`
  ConcurrentMaterialStore.`searchByTitle(String title)`
  `List<Material>`
  MaterialStoreImpl.`searchByTitle(String title)`
  `List<Material>`
  ModernConcurrentMaterialStore.`searchByTitle(String title)`
  `CompletableFuture<List<Material>>`
  ModernConcurrentMaterialStore.`searchByTitleAsync(String title)`
  Searches by title asynchronously.
  Methods in com.university.bookstore.impl with parameters of type Material
  Modifier and Type
  Method
  Description
  `boolean`
  ConcurrentMaterialStore.`addMaterial(Material material)`
  `boolean`
  MaterialStoreImpl.`addMaterial(Material material)`
  `boolean`
  ModernConcurrentMaterialStore.`addMaterial(Material material)`
  `CompletableFuture<Boolean>`
  ModernConcurrentMaterialStore.`addMaterialAsync(Material material)`
  Adds material asynchronously.
  Method parameters in com.university.bookstore.impl with type arguments of type Material
  Modifier and Type
  Method
  Description
  `CompletableFuture<Map<String,Boolean>>`
  ModernConcurrentMaterialStore.`addMaterialsBatchAsync(Collection<Material> materials)`
  Adds multiple materials in batch asynchronously.
  `List<Material>`
  ConcurrentMaterialStore.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  MaterialStoreImpl.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  ModernConcurrentMaterialStore.`filterMaterials(Predicate<Material> predicate)`
  `List<Material>`
  ConcurrentMaterialStore.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  MaterialStoreImpl.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  ModernConcurrentMaterialStore.`findWithPredicate(Predicate<Material> condition)`
  `List<Material>`
  ConcurrentMaterialStore.`getSorted(Comparator<Material> comparator)`
  `List<Material>`
  MaterialStoreImpl.`getSorted(Comparator<Material> comparator)`
  `List<Material>`
  ModernConcurrentMaterialStore.`getSorted(Comparator<Material> comparator)`
  Constructor parameters in com.university.bookstore.impl with type arguments of type Material
  Modifier
  Constructor
  Description
  ``
  `ConcurrentMaterialStore(Collection<Material> initialMaterials)`
  Creates a material store with initial materials.
  ``
  `MaterialStoreImpl(Collection<Material> initialMaterials)`
  Creates a material store with initial materials.
  ``
  `ModernConcurrentMaterialStore(Collection<Material> initialMaterials)`
  Creates a material store with initial materials.

- ## Uses of Material in com.university.bookstore.iterator

  Methods in com.university.bookstore.iterator that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialIterator.`next()`
  Gets the next material in the iteration.
  `Material`
  MaterialTypeIterator.`next()`
  `Material`
  PriceRangeIterator.`next()`
  `Material`
  PriceSortedIterator.`next()`
  `Material`
  PriceSortedIterator.`peek()`
  Gets the current material without advancing the iterator.
  `Material`
  PriceSortedIterator.`peekNext()`
  Gets the next material without advancing the iterator.
  Methods in com.university.bookstore.iterator that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  MaterialIteratorFactory.`collectAll(MaterialIterator iterator)`
  Collects all materials from an iterator into a list.
  `List<Material>`
  MaterialIteratorFactory.`findAll(MaterialIterator iterator, Predicate<Material> predicate)`
  Finds all materials matching a predicate.
  `Optional<Material>`
  MaterialIteratorFactory.`findFirst(MaterialIterator iterator, Predicate<Material> predicate)`
  Finds the first material matching a predicate.
  Method parameters in com.university.bookstore.iterator with type arguments of type Material
  Modifier and Type
  Method
  Description
  `boolean`
  MaterialIteratorFactory.`allMatch(MaterialIterator iterator, Predicate<Material> predicate)`
  Checks if all materials match a predicate.
  `boolean`
  MaterialIteratorFactory.`anyMatch(MaterialIterator iterator, Predicate<Material> predicate)`
  Checks if any material matches a predicate.
  `int`
  MaterialIteratorFactory.`count(MaterialIterator iterator, Predicate<Material> predicate)`
  Counts materials matching a predicate.
  `MaterialIterator`
  MaterialIteratorFactory.`createAudioBookIterator(List<Material> materials)`
  Creates an audio book iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createBookIterator(List<Material> materials)`
  Creates a book iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createCheapIterator(List<Material> materials, double threshold)`
  Creates a cheap materials iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createEBookIterator(List<Material> materials)`
  Creates an e-book iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createExpensiveIterator(List<Material> materials, double threshold)`
  Creates an expensive materials iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createMagazineIterator(List<Material> materials)`
  Creates a magazine iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createPriceRangeIterator(List<Material> materials, double minPrice, double maxPrice)`
  Creates a price range iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createPriceSortedIterator(List<Material> materials, boolean ascending)`
  Creates a price-sorted iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createTypeIterator(List<Material> materials, Material.MaterialType type)`
  Creates a type-filtering iterator.
  `MaterialIterator`
  MaterialIteratorFactory.`createVideoIterator(List<Material> materials)`
  Creates a video iterator.
  `List<Material>`
  MaterialIteratorFactory.`findAll(MaterialIterator iterator, Predicate<Material> predicate)`
  Finds all materials matching a predicate.
  `Optional<Material>`
  MaterialIteratorFactory.`findFirst(MaterialIterator iterator, Predicate<Material> predicate)`
  Finds the first material matching a predicate.
  Constructor parameters in com.university.bookstore.iterator with type arguments of type Material
  Modifier
  Constructor
  Description
  ``
  `MaterialTypeIterator(List<Material> materials, Material.MaterialType targetType)`
  Creates a new material type iterator.
  ``
  `PriceRangeIterator(List<Material> materials, double minPrice, double maxPrice)`
  Creates a new price range iterator.
  ``
  `PriceSortedIterator(List<Material> materials, boolean ascending)`
  Creates a new price sorted iterator.

- ## Uses of Material in com.university.bookstore.model

  Subclasses of Material in com.university.bookstore.model
  Modifier and Type
  Class
  Description
  `class`
  `AudioBook`
  Represents an audio book that implements both Material and Media interfaces.
  `class`
  `EBook`
  Represents an electronic book (e-book) in the bookstore system.
  `class`
  `Magazine`
  Represents a magazine in the store inventory.
  `class`
  `PrintedBook`
  Represents a physical printed book in the bookstore inventory.
  `class`
  `VideoMaterial`
  Represents video content (movies, documentaries, educational videos).
  Classes in com.university.bookstore.model that implement interfaces with type arguments of type Material
  Modifier and Type
  Class
  Description
  `class`
  `Material`
  Abstract base class representing any material in the store inventory.
  Methods in com.university.bookstore.model with parameters of type Material
  Modifier and Type
  Method
  Description
  `int`
  Material.`compareTo(Material other)`
  Compares materials by title for natural ordering.

- ## Uses of Material in com.university.bookstore.observer

  Methods in com.university.bookstore.observer that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialAddedEvent.`getMaterial()`
  `Material`
  MaterialEvent.`getMaterial()`
  Gets the material associated with this event.
  `Material`
  PriceChangedEvent.`getMaterial()`
  Methods in com.university.bookstore.observer with parameters of type Material
  Modifier and Type
  Method
  Description
  `void`
  MaterialEventPublisher.`publishMaterialAdded(Material material)`
  Publishes a material added event.
  `void`
  MaterialEventPublisher.`publishPriceChanged(Material material, double oldPrice, double newPrice)`
  Publishes a price changed event.
  Constructors in com.university.bookstore.observer with parameters of type Material
  Modifier
  Constructor
  Description
  ``
  `MaterialAddedEvent(Material material)`
  Creates a new material added event.
  ``
  `PriceChangedEvent(Material material, double oldPrice, double newPrice)`
  Creates a new price changed event.

- ## Uses of Material in com.university.bookstore.repository

  Methods in com.university.bookstore.repository that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  JsonMaterialRepository.`findAll()`
  `List<Material>`
  MaterialRepository.`findAll()`
  Retrieves all materials from the repository.
  `List<Material>`
  ModernJsonMaterialRepository.`findAll()`
  `Optional<Material>`
  JsonMaterialRepository.`findById(String id)`
  `Optional<Material>`
  MaterialRepository.`findById(String id)`
  Finds a material by its unique identifier.
  `Optional<Material>`
  ModernJsonMaterialRepository.`findById(String id)`
  `List<Material>`
  MaterialsWrapper.`getMaterials()`
  Methods in com.university.bookstore.repository with parameters of type Material
  Modifier and Type
  Method
  Description
  `void`
  JsonMaterialRepository.`save(Material material)`
  `void`
  MaterialRepository.`save(Material material)`
  Saves a material to the repository.
  `void`
  ModernJsonMaterialRepository.`save(Material material)`
  Method parameters in com.university.bookstore.repository with type arguments of type Material
  Modifier and Type
  Method
  Description
  `void`
  ModernJsonMaterialRepository.`saveAll(Collection<Material> materialsToSave)`
  Saves multiple materials in batch for better performance.
  `void`
  MaterialsWrapper.`setMaterials(List<Material> materials)`
  Constructor parameters in com.university.bookstore.repository with type arguments of type Material
  Modifier
  Constructor
  Description
  ``
  `MaterialsWrapper(List<Material> materials)`

- ## Uses of Material in com.university.bookstore.search

  Methods in com.university.bookstore.search that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  ModernSearchCache.`get(String key, Function<String, List<Material>> loader)`
  Gets a value from the cache or loads it if not present.
  `Optional<List<Material>>`
  SearchResultCache.`get(String key)`
  Retrieves cached search results for the given key.
  `List<Material>`
  MaterialTrie.`getAllMaterials()`
  Gets all materials in the trie.
  `CompletableFuture<List<Material>>`
  ModernSearchCache.`getAsync(String key, Function<String, CompletableFuture<List<Material>>> asyncLoader)`
  Gets a value from the cache or loads it asynchronously.
  `CompletableFuture<List<Material>>`
  ModernSearchCache.`refresh(String key, Function<String, List<Material>> loader)`
  Refreshes a cache entry asynchronously.
  `List<Material>`
  CachedSearchService.`searchByPrefix(String prefix)`
  Searches for materials by title prefix with caching.
  `List<Material>`
  MaterialTrie.`searchByPrefix(String prefix)`
  Searches for materials with titles that start with the given prefix.
  `List<Material>`
  CachedSearchService.`searchByPrefixWithLimit(String prefix, int limit)`
  Searches for materials by title prefix with result limit and caching.
  `List<Material>`
  MaterialTrie.`searchByPrefixWithLimit(String prefix, int limit)`
  Searches for materials with titles that start with the given prefix, limited to a maximum number of results.
  Methods in com.university.bookstore.search with parameters of type Material
  Modifier and Type
  Method
  Description
  `void`
  CachedSearchService.`addMaterial(Material material)`
  Adds a material to the search index and invalidates relevant cache entries.
  `void`
  MaterialTrie.`insert(Material material)`
  Inserts a material into the trie using its title as the key.
  `boolean`
  MaterialTrie.`remove(Material material)`
  Removes a material from the trie.
  `void`
  CachedSearchService.`removeMaterial(Material material)`
  Removes a material from the search index and invalidates relevant cache entries.
  Method parameters in com.university.bookstore.search with type arguments of type Material
  Modifier and Type
  Method
  Description
  `List<Material>`
  ModernSearchCache.`get(String key, Function<String, List<Material>> loader)`
  Gets a value from the cache or loads it if not present.
  `CompletableFuture<List<Material>>`
  ModernSearchCache.`getAsync(String key, Function<String, CompletableFuture<List<Material>>> asyncLoader)`
  Gets a value from the cache or loads it asynchronously.
  `void`
  ModernSearchCache.`put(String key, List<Material> value)`
  Puts a value in the cache.
  `void`
  SearchResultCache.`put(String key, List<Material> results)`
  Stores search results in the cache with the given key.
  `CompletableFuture<List<Material>>`
  ModernSearchCache.`refresh(String key, Function<String, List<Material>> loader)`
  Refreshes a cache entry asynchronously.
  `CompletableFuture<Void>`
  ModernSearchCache.`warmUp(Collection<String> keys, Function<String, List<Material>> loader)`
  Warms up the cache with predefined keys.

- ## Uses of Material in com.university.bookstore.service

  Methods in com.university.bookstore.service that return Material
  Modifier and Type
  Method
  Description
  `Material`
  MaterialService.`findMaterial(String id)`
  Finds a material by its ID.
  Methods in com.university.bookstore.service that return types with arguments of type Material
  Modifier and Type
  Method
  Description
  `Optional<Material>`
  MaterialService.`findMaterialOptional(String id)`
  Finds a material by its ID, returning Optional.
  `List<Material>`
  MaterialService.`getAllMaterials()`
  Gets all materials in the system.
  Methods in com.university.bookstore.service with parameters of type Material
  Modifier and Type
  Method
  Description
  `void`
  MaterialService.`addMaterial(Material material)`
  Adds a material to the system with business logic validation.
  `void`
  MaterialService.`updateMaterial(Material material)`
  Updates an existing material with business logic validation.

- ## Uses of Material in com.university.bookstore.visitor

  Methods in com.university.bookstore.visitor with parameters of type Material
  Modifier and Type
  Method
  Description
  `double`
  ShippingCostCalculator.`calculateShippingCost(Material material)`
  Calculates shipping cost for a single material.