AverageCowHealthService.java

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

  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;

  4. import edu.ucsb.cs156.happiercows.entities.UserCommons;
  5. import edu.ucsb.cs156.happiercows.repositories.CommonsRepository;
  6. import edu.ucsb.cs156.happiercows.repositories.UserCommonsRepository;

  7. @Service("AverageCowHealthService")
  8. public class AverageCowHealthService {

  9.     @Autowired
  10.     CommonsRepository commonsRepository;

  11.     @Autowired
  12.     UserCommonsRepository userCommonsRepository;

  13.     public int getTotalNumCows(Long commonsId) {
  14.         commonsRepository.findById(commonsId).orElseThrow(() -> new IllegalArgumentException(String.format("Commons with id %d not found", commonsId)));

  15.         Iterable<UserCommons> allUserCommons = userCommonsRepository.findByCommonsId(commonsId);

  16.         int totalNumCows = 0;

  17.         for (UserCommons userCommons : allUserCommons) {
  18.             totalNumCows += userCommons.getNumOfCows();
  19.         }

  20.         return totalNumCows;
  21.     }

  22.     public double getAverageCowHealth(Long commonsId) {
  23.         commonsRepository.findById(commonsId).orElseThrow(() -> new IllegalArgumentException(String.format("Commons with id %d not found", commonsId)));

  24.         Iterable<UserCommons> allUserCommons = userCommonsRepository.findByCommonsId(commonsId);

  25.         double totalHealth = 0;

  26.         for (UserCommons userCommons : allUserCommons) {
  27.             totalHealth += userCommons.getCowHealth() * userCommons.getNumOfCows();
  28.         }

  29.         return totalHealth / getTotalNumCows(commonsId);
  30.     }

  31.    
  32. }