001package edu.pdx.cs.joy.di;
002
003import com.google.common.collect.ImmutableMap;
004import com.google.inject.Inject;
005import jakarta.ws.rs.*;
006
007import java.util.Map;
008
009/**
010 * A Credit Card service that exposes its behavior via REST
011 */
012@Path("/rest/creditCard")
013public class RestfulCreditCardService
014{
015    private final CreditCardDatabase cards;
016
017    @Inject
018    public RestfulCreditCardService(CreditCardDatabase cards) {
019        this.cards = cards;
020    }
021
022    @GET
023    @Produces("text/plain")
024    public String allCardBalances() {
025        StringBuilder sb = new StringBuilder();
026
027        ImmutableMap<CreditCard, Double> balances = cards.getBalances();
028        for ( Map.Entry<CreditCard, Double> entry : balances.entrySet() ) {
029            sb.append(entry.getKey().getNumber());
030            sb.append("\t");
031            sb.append(entry.getValue());
032            sb.append("\n");
033        }
034
035        return sb.toString();
036    }
037
038}