Interface LegoFactory

All Known Implementing Classes:
HttpRestFactory

public interface LegoFactory
Interface principale définissant les interactions possibles avec l'usine de briques.

Cette interface suit le patron de conception Façade : elle masque la complexité des appels HTTP (authentification, JSON, gestion des erreurs) derrière des méthodes métier simples.

Cycle de vie typique d'un achat :

  1. getBalance() : Vérifier si on a assez de crédits.
  2. rechargeAccount(long) : "Miner" des crédits si nécessaire.
  3. requestQuote(Map) : Demander un devis pour un lot de pièces.
  4. acceptQuote(String) : Valider et payer ce devis.
  5. retrieveOrder(String) : Télécharger les briques générées.
  6. verifyBrick(FactoryBrick) : Vérifier la signature cryptographique des pièces reçues.
  • Method Details

    • getBalance

      long getBalance() throws IOException
      Récupère le solde actuel du portefeuille client auprès de l'usine.
      Returns:
      Le nombre de crédits disponibles.
      Throws:
      IOException - En cas d'erreur de communication avec le serveur.
    • rechargeAccount

      void rechargeAccount(long amountNeeded) throws IOException
      Lance le processus de rechargement du compte (Proof-of-Work). Cette méthode peut prendre du temps pour résoudre les défis cryptographiques nécessaires à l'obtention de crédits.
      Parameters:
      amountNeeded - Le montant approximatif souhaité.
      Throws:
      IOException - Si le serveur refuse le rechargement ou est inaccessible.
    • requestQuote

      LegoFactory.Quote requestQuote(Map<String,Integer> items) throws IOException
      Demande de chiffrage. L'usine calcule le prix total en fonction des stocks et de la rareté, et bloque ce prix temporairement.
      Parameters:
      items - Une map associant la référence de la brique (ex: "2-2/c9cae2") à la quantité désirée.
      Returns:
      Un objet contenant l'ID du devis et le prix total.
      Throws:
      IOException - Si une référence est invalide ou le stock insuffisant.
    • acceptQuote

      void acceptQuote(String quoteId) throws IOException
      Validation et Paiement. Transforme le devis temporaire en commande ferme. Le montant est débité immédiatement.
      Parameters:
      quoteId - L'identifiant du devis reçu via requestQuote(Map).
      Throws:
      IOException - Si le solde est insuffisant ou si le devis a expiré.
    • retrieveOrder

      List<FactoryBrick> retrieveOrder(String quoteId) throws IOException
      Réception. Récupère les actifs numériques associés à une commande payée.
      Parameters:
      quoteId - L'identifiant de la commande validée.
      Returns:
      La liste des briques avec leurs métadonnées (numéro de série, certificat...).
      Throws:
      IOException - Si la commande n'est pas encore prête ou n'existe pas.
    • verifyBrick

      boolean verifyBrick(FactoryBrick brick)
      Contrôle Qualité. Vérifie mathématiquement que la brique possède une signature valide émise par l'usine. Permet d'éviter l'injection de fausses briques dans le stock.
      Parameters:
      brick - La brique à analyser.
      Returns:
      true si la signature correspond aux données et à la clé publique de l'usine.