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 :
getBalance(): Vérifier si on a assez de crédits.rechargeAccount(long): "Miner" des crédits si nécessaire.requestQuote(Map): Demander un devis pour un lot de pièces.acceptQuote(String): Valider et payer ce devis.retrieveOrder(String): Télécharger les briques générées.verifyBrick(FactoryBrick): Vérifier la signature cryptographique des pièces reçues.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final recordObjet immuable (Record) représentant la réponse à une demande de prix. -
Method Summary
Modifier and TypeMethodDescriptionvoidacceptQuote(String quoteId) Validation et Paiement.longRécupère le solde actuel du portefeuille client auprès de l'usine.voidrechargeAccount(long amountNeeded) Lance le processus de rechargement du compte (Proof-of-Work).requestQuote(Map<String, Integer> items) Demande de chiffrage.retrieveOrder(String quoteId) Réception.booleanverifyBrick(FactoryBrick brick) Contrôle Qualité.
-
Method Details
-
getBalance
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
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
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
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 viarequestQuote(Map).- Throws:
IOException- Si le solde est insuffisant ou si le devis a expiré.
-
retrieveOrder
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
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:
truesi la signature correspond aux données et à la clé publique de l'usine.
-