Class SingleItemPricingStrategy

java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.pricing.SingleItemPricingStrategy
All Implemented Interfaces:
PricingStrategy

@Service("singleItemPricingStrategy") public class SingleItemPricingStrategy extends Object implements PricingStrategy
Questa classe implementa l'interfaccia PricingStrategy e definisce la strategia di calcolo del prezzo per gli articoli singoli (MarketplaceItem) presenti in una riga d'ordine.

Viene utilizzata quando una OrderLine si riferisce a un singolo prodotto, piuttosto che a un pacchetto o a un'altra tipologia di elemento vendibile.

  • Constructor Details

    • SingleItemPricingStrategy

      public SingleItemPricingStrategy()
  • Method Details

    • calculatePrice

      public BigDecimal calculatePrice(OrderLine line)
      Calcola il prezzo totale per la riga d'ordine passata come parametro, specifica per un singolo item.

      Cosa succede: Il metodo verifica prima che la riga d'ordine contenga effettivamente un item singolo. Successivamente, recupera e restituisce il valore del sottototale già presente nell'oggetto OrderLine.

      Perché viene fatto così: La logica di calcolo del prezzo (prezzo unitario * quantità) viene "congelata" ed eseguita al momento della creazione o dell'aggiornamento della riga d'ordine. In questa fase, la strategia si limita a restituire quel valore. Questo approccio è fondamentale per garantire che il prezzo storico di un ordine rimanga immutato anche se il venditore dovesse modificare il prezzo base dell'articolo in futuro.

      Specified by:
      calculatePrice in interface PricingStrategy
      Parameters:
      line - La riga d'ordine di cui calcolare il prezzo. Deve contenere un riferimento valido a un item.
      Returns:
      Il prezzo totale per la riga (corrispondente al subtotale memorizzato).
      Throws:
      IllegalArgumentException - Se la riga d'ordine non contiene un item valido (è null).