diff --git a/src/BookBuyerAgent.java b/src/BookBuyerAgent.java index 1b1abbb..4b62641 100644 --- a/src/BookBuyerAgent.java +++ b/src/BookBuyerAgent.java @@ -15,6 +15,8 @@ public class BookBuyerAgent extends Agent private BookBuyerGui myGui; private String targetBookTitle; + private int budget = 128; + //list of found sellers private AID[] sellerAgents; @@ -140,6 +142,12 @@ public class BookBuyerAgent extends Agent break; case 2: //best proposal consumption - purchase + if(bestPrice > budget) + { + System.out.println(getAID().getLocalName() + ": Cannot buy: " + targetBookTitle + " for: " + bestPrice + ". It is more than budget: " + budget); + step = 4; + break; + } ACLMessage order = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL); order.addReceiver(bestSeller); order.setContent(targetBookTitle); @@ -153,21 +161,30 @@ public class BookBuyerAgent extends Agent case 3: //seller confirms the transaction reply = myAgent.receive(mt); - if (reply != null) { - if (reply.getPerformative() == ACLMessage.INFORM) { - //purchase succeeded - System.out.println(getAID().getLocalName() + ": " + targetBookTitle + " purchased for " + bestPrice + " from " + reply.getSender().getLocalName()); - System.out.println(getAID().getLocalName() + ": waiting for the next purchase order."); - targetBookTitle = ""; - //myAgent.doDelete(); + if (reply != null) + { + if (reply.getPerformative() == ACLMessage.INFORM) + { + //purchase succeeded + System.out.println(getAID().getLocalName() + ": " + targetBookTitle + " purchased for " + bestPrice + " from " + reply.getSender().getLocalName()); + + // Update budget + budget = budget - bestPrice; + System.out.println("Budget updated, left: " + budget); + + System.out.println(getAID().getLocalName() + ": waiting for the next purchase order."); + targetBookTitle = ""; + //myAgent.doDelete(); + } + else + { + System.out.println(getAID().getLocalName() + ": purchase has failed. " + targetBookTitle + " was sold in the meantime."); + } + step = 4; //this state ends the purchase process } - else { - System.out.println(getAID().getLocalName() + ": purchase has failed. " + targetBookTitle + " was sold in the meantime."); - } - step = 4; //this state ends the purchase process - } - else { - block(); + else + { + block(); } break; }