MilkTheCowsJobInd.java

  1. package edu.ucsb.cs156.happiercows.jobs;


  2. import edu.ucsb.cs156.happiercows.entities.Commons;
  3. import edu.ucsb.cs156.happiercows.entities.UserCommons;
  4. import edu.ucsb.cs156.happiercows.repositories.CommonsRepository;
  5. import edu.ucsb.cs156.happiercows.repositories.ProfitRepository;
  6. import edu.ucsb.cs156.happiercows.repositories.UserCommonsRepository;
  7. import edu.ucsb.cs156.happiercows.repositories.UserRepository;
  8. import edu.ucsb.cs156.happiercows.services.jobs.JobContext;
  9. import edu.ucsb.cs156.happiercows.services.jobs.JobContextConsumer;
  10. import lombok.AllArgsConstructor;
  11. import lombok.Getter;
  12. import java.util.Optional;

  13. @AllArgsConstructor
  14. public class MilkTheCowsJobInd implements JobContextConsumer {

  15.     @Getter
  16.     private CommonsRepository commonsRepository;
  17.     @Getter
  18.     private UserCommonsRepository userCommonsRepository;
  19.     @Getter
  20.     private UserRepository userRepository;
  21.     @Getter
  22.     private ProfitRepository profitRepository;
  23.     @Getter
  24.     private long commonsID;

  25.     public String formatDollars(double amount) {
  26.         return  String.format("$%.2f", amount);
  27.     }

  28.     @Override
  29.     public void accept(JobContext ctx) throws Exception {
  30.         ctx.log("Starting to milk the cows");
  31.         Optional<Commons> commonMilkedOpt = commonsRepository.findById(commonsID);

  32.         if(commonMilkedOpt.isPresent()){
  33.             Commons commonMilked = commonMilkedOpt.get();
  34.             String name = commonMilked.getName();
  35.             double milkPrice = commonMilked.getMilkPrice();
  36.             ctx.log("Milking cows for Commons: " + name + ", Milk Price: " + formatDollars(milkPrice));

  37.             Iterable<UserCommons> allUserCommons = userCommonsRepository.findByCommonsId(commonMilked.getId());

  38.             for (UserCommons userCommons : allUserCommons) {
  39.                 MilkTheCowsJob.milkCows(ctx, commonMilked, userCommons, profitRepository, userCommonsRepository);
  40.             }
  41.            

  42.             ctx.log("Cows have been milked!");
  43.         } else {
  44.             ctx.log(String.format("No commons found for id %d", commonsID));
  45.         }
  46.     }

  47. }