CommonsPlusBuilderService.java

1
package edu.ucsb.cs156.happiercows.services;
2
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.List;
6
import java.util.Optional;
7
import java.util.stream.Collectors;
8
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.stereotype.Service;
11
12
import edu.ucsb.cs156.happiercows.entities.Commons;
13
import edu.ucsb.cs156.happiercows.entities.CommonsPlus;
14
import edu.ucsb.cs156.happiercows.repositories.CommonsRepository;
15
import edu.ucsb.cs156.happiercows.repositories.UserCommonsRepository;
16
17
@Service("CommonsPlusBuilderService")
18
public class CommonsPlusBuilderService {
19
    
20
    @Autowired
21
    CommonsRepository commonsRepository;
22
23
    @Autowired
24
    UserCommonsRepository userCommonsRepository;
25
26
    public CommonsPlus toCommonsPlus(Commons c) {
27
        Optional<Integer> numCows = commonsRepository.getNumCows(c.getId());
28
        Optional<Integer> numUsers = commonsRepository.getNumUsers(c.getId());
29
        List<Integer> cowsPerFarmer = new ArrayList<>();
30
        userCommonsRepository.findByCommonsId(c.getId())
31 1 1. toCommonsPlus : removed call to java/lang/Iterable::forEach → KILLED
                .forEach((uc) -> cowsPerFarmer.add(uc.getNumOfCows()));
32
33 1 1. toCommonsPlus : removed call to java/util/List::sort → KILLED
        cowsPerFarmer.sort(Comparator.naturalOrder());
34
        Double averageCowsPerFarmer = null;
35
        Double medianCowsPerFarmer = null;
36
        Integer minimumCowsPerFarmer = null;
37
        Integer maximumCowsPerFarmer = null;
38
        Double standardDeviationCowsPerFarmer = null;
39
40 1 1. toCommonsPlus : negated conditional → KILLED
        if (!cowsPerFarmer.isEmpty()) {
41
            int count = cowsPerFarmer.size();
42
            double sum = cowsPerFarmer.stream().mapToDouble(Integer::doubleValue).sum();
43 1 1. toCommonsPlus : Replaced double division with multiplication → KILLED
            averageCowsPerFarmer = sum / count;
44
            minimumCowsPerFarmer = cowsPerFarmer.get(0);
45 1 1. toCommonsPlus : Replaced integer subtraction with addition → KILLED
            maximumCowsPerFarmer = cowsPerFarmer.get(count - 1);
46
47 2 1. toCommonsPlus : Replaced integer modulus with multiplication → KILLED
2. toCommonsPlus : negated conditional → KILLED
            if (count % 2 == 1) {
48 1 1. toCommonsPlus : Replaced integer division with multiplication → KILLED
                medianCowsPerFarmer = cowsPerFarmer.get(count / 2).doubleValue();
49
            } else {
50 5 1. toCommonsPlus : Replaced integer addition with subtraction → KILLED
2. toCommonsPlus : Replaced double division with multiplication → KILLED
3. toCommonsPlus : Replaced integer division with multiplication → KILLED
4. toCommonsPlus : Replaced integer subtraction with addition → KILLED
5. toCommonsPlus : Replaced integer division with multiplication → KILLED
                medianCowsPerFarmer = (cowsPerFarmer.get((count / 2) - 1) + cowsPerFarmer.get(count / 2)) / 2.0;
51
            }
52
53
            final double averageForVariance = averageCowsPerFarmer;
54
            double variance = cowsPerFarmer.stream()
55 2 1. lambda$toCommonsPlus$1 : Replaced double subtraction with addition → KILLED
2. lambda$toCommonsPlus$1 : replaced double return with 0.0d for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::lambda$toCommonsPlus$1 → KILLED
                    .mapToDouble((value) -> Math.pow(value - averageForVariance, 2))
56 1 1. toCommonsPlus : Replaced double division with multiplication → KILLED
                    .sum() / count;
57
            standardDeviationCowsPerFarmer = Math.sqrt(variance);
58
        }
59
60 1 1. toCommonsPlus : replaced return value with null for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::toCommonsPlus → KILLED
        return CommonsPlus.builder()
61
                .commons(c)
62
                .totalCows(numCows.orElse(0))
63
                .totalUsers(numUsers.orElse(0))
64
                .averageCowsPerFarmer(averageCowsPerFarmer)
65
                .medianCowsPerFarmer(medianCowsPerFarmer)
66
                .minimumCowsPerFarmer(minimumCowsPerFarmer)
67
                .maximumCowsPerFarmer(maximumCowsPerFarmer)
68
                .standardDeviationCowsPerFarmer(standardDeviationCowsPerFarmer)
69
                .build();
70
    }
71
72
73
    public Iterable<CommonsPlus> convertToCommonsPlus(Iterable<Commons> iteOfCommons) {
74
        List<Commons> commonsList = new ArrayList<Commons>();
75 1 1. convertToCommonsPlus : removed call to java/lang/Iterable::forEach → KILLED
        iteOfCommons.forEach(commonsList::add);
76
77 1 1. lambda$convertToCommonsPlus$2 : replaced return value with null for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::lambda$convertToCommonsPlus$2 → KILLED
        List<CommonsPlus> commonsPlusList = commonsList.stream().map((c) -> toCommonsPlus(c)).collect(Collectors.toList());
78
79
        ArrayList<CommonsPlus> commonsPlusArrayList = new ArrayList<CommonsPlus>(commonsPlusList);
80
81 1 1. convertToCommonsPlus : replaced return value with Collections.emptyList for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::convertToCommonsPlus → KILLED
        return commonsPlusArrayList;
82
    }
83
}

Mutations

31

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
removed call to java/lang/Iterable::forEach → KILLED

33

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
removed call to java/util/List::sort → KILLED

40

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_withNoFarmers()]
negated conditional → KILLED

43

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
Replaced double division with multiplication → KILLED

45

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced integer subtraction with addition → KILLED

47

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
Replaced integer modulus with multiplication → KILLED

2.2
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
negated conditional → KILLED

48

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
Replaced integer division with multiplication → KILLED

50

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced integer addition with subtraction → KILLED

2.2
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced double division with multiplication → KILLED

3.3
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced integer division with multiplication → KILLED

4.4
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced integer subtraction with addition → KILLED

5.5
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_median_when_numUsers_is_even_and_users_are_unsorted()]
Replaced integer division with multiplication → KILLED

55

1.1
Location : lambda$toCommonsPlus$1
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
Replaced double subtraction with addition → KILLED

2.2
Location : lambda$toCommonsPlus$1
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
replaced double return with 0.0d for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::lambda$toCommonsPlus$1 → KILLED

56

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus()]
Replaced double division with multiplication → KILLED

60

1.1
Location : toCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_toCommonsPlus_withNoFarmers()]
replaced return value with null for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::toCommonsPlus → KILLED

75

1.1
Location : convertToCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_convertToCommonsPlus()]
removed call to java/lang/Iterable::forEach → KILLED

77

1.1
Location : lambda$convertToCommonsPlus$2
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_convertToCommonsPlus()]
replaced return value with null for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::lambda$convertToCommonsPlus$2 → KILLED

81

1.1
Location : convertToCommonsPlus
Killed by : edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.services.CommonsPlusBuilderServiceTests]/[method:test_convertToCommonsPlus()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/happiercows/services/CommonsPlusBuilderService::convertToCommonsPlus → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0