inProgramToDto(InProgram)   C
last analyzed

Complexity

Conditions 8

Size

Total Lines 115
Code Lines 111

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 111
dl 0
loc 115
rs 5.1333
c 0
b 0
f 0
cc 8

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
package com.osomapps.pt.admin.user;
2
3
import com.osomapps.pt.ResourceNotFoundException;
4
import com.osomapps.pt.programs.InProgram;
5
import com.osomapps.pt.programs.InProgramRepository;
6
import com.osomapps.pt.programs.InWarmupWorkoutItem;
7
import com.osomapps.pt.programs.InWorkout;
8
import com.osomapps.pt.programs.InWorkoutItem;
9
import com.osomapps.pt.programs.InWorkoutItemReport;
10
import java.util.ArrayList;
11
import java.util.Collections;
12
import java.util.List;
13
import java.util.stream.Collectors;
14
import org.apache.commons.lang3.BooleanUtils;
15
import org.springframework.stereotype.Service;
16
17
@Service
18
class AdminUserProgramService {
19
20
    private final InProgramRepository inProgramRepository;
21
22
    AdminUserProgramService(InProgramRepository inProgramRepository) {
23
        this.inProgramRepository = inProgramRepository;
24
    }
25
26
    static UserProgramResponseDTO inProgramToDto(InProgram inProgram) {
27
        UserProgramResponseDTO program = new UserProgramResponseDTO();
28
        program.setId(inProgram.getId());
29
        program.setName(inProgram.getName());
30
        program.setType(inProgram.getD_program_type());
31
        program.setWorkouts(new ArrayList<>());
32
        program.setCreated(inProgram.getCreated());
33
        for (InWorkout inWorkout : inProgram.getInWorkouts()) {
34
            UserWorkoutResponseDTO workout = new UserWorkoutResponseDTO();
35
            workout.setId(inWorkout.getId());
36
            workout.setName(inWorkout.getD_workout_name());
37
            workout.setItems(new ArrayList<>());
38
            program.getWorkouts().add(workout);
39
            if (inWorkout.getInWarmupWorkoutItems() != null
40
                    && !inWorkout.getInWarmupWorkoutItems().isEmpty()) {
41
                InWarmupWorkoutItem inWarmupWorkoutItem =
42
                        inWorkout.getInWarmupWorkoutItems().get(0);
43
                UserWarmupWorkoutItemResponseDTO warmupWorkoutItem =
44
                        new UserWarmupWorkoutItemResponseDTO();
45
                warmupWorkoutItem.setId(inWarmupWorkoutItem.getId());
46
                warmupWorkoutItem.setExercise_id(inWarmupWorkoutItem.getExercise_id());
47
                warmupWorkoutItem.setExercise_name(inWarmupWorkoutItem.getD_exercise_name());
48
                warmupWorkoutItem.setSpeed(inWarmupWorkoutItem.getSpeed());
49
                warmupWorkoutItem.setIncline(inWarmupWorkoutItem.getIncline());
50
                warmupWorkoutItem.setTime_in_sec(inWarmupWorkoutItem.getTime_in_sec());
51
                workout.setWarmup(warmupWorkoutItem);
52
            }
53
            for (InWorkoutItem inWorkoutItem : inWorkout.getInWorkoutItems()) {
54
                UserWorkoutItemResponseDTO userWorkoutItemResponseDTO =
55
                        new UserWorkoutItemResponseDTO()
56
                                .setId(inWorkoutItem.getId())
57
                                .setExercise_id(inWorkoutItem.getExercise_id())
58
                                .setExercise_name(inWorkoutItem.getD_exercise_name())
59
                                .setSets(inWorkoutItem.getInWorkoutItemSets().size())
60
                                .setRepetitions(
61
                                        inWorkoutItem.getInWorkoutItemSets().stream()
62
                                                .map(set -> set.getRepetitions())
63
                                                .collect(Collectors.toList()))
64
                                .setRepetitionsToFailure(
65
                                        inWorkoutItem.getInWorkoutItemSets().stream()
66
                                                .map(
67
                                                        set ->
68
                                                                BooleanUtils.isTrue(
69
                                                                        set
70
                                                                                .getRepetitions_to_failure()))
71
                                                .collect(Collectors.toList()))
72
                                .setWeight(
73
                                        inWorkoutItem.getInWorkoutItemSets().stream()
74
                                                .map(set -> set.getWeight())
75
                                                .collect(Collectors.toList()))
76
                                .setBodyweight(
77
                                        inWorkoutItem.getInWorkoutItemSets().stream()
78
                                                .map(
79
                                                        set ->
80
                                                                BooleanUtils.isTrue(
81
                                                                        set.getBodyweight()))
82
                                                .collect(Collectors.toList()))
83
                                .setTimeInSec(
84
                                        inWorkoutItem.getInWorkoutItemSets().stream()
85
                                                .map(set -> set.getTime_in_sec())
86
                                                .collect(Collectors.toList()))
87
                                .setSpeed(
88
                                        inWorkoutItem.getInWorkoutItemSets().stream()
89
                                                .map(set -> set.getSpeed())
90
                                                .collect(Collectors.toList()))
91
                                .setIncline(
92
                                        inWorkoutItem.getInWorkoutItemSets().stream()
93
                                                .map(set -> set.getIncline())
94
                                                .collect(Collectors.toList()))
95
                                .setResistance(
96
                                        inWorkoutItem.getInWorkoutItemSets().stream()
97
                                                .map(set -> set.getResistance())
98
                                                .collect(Collectors.toList()));
99
                InWorkoutItemReport inWorkoutItemReport =
100
                        inWorkoutItem.getInWorkoutItemReports().isEmpty()
101
                                ? null
102
                                : inWorkoutItem
103
                                        .getInWorkoutItemReports()
104
                                        .get(inWorkoutItem.getInWorkoutItemReports().size() - 1);
105
                if (inWorkoutItemReport != null) {
106
                    userWorkoutItemResponseDTO
107
                            .setReportSets(inWorkoutItemReport.getInWorkoutItemSetReports().size())
108
                            .setReportRepetitions(
109
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
110
                                            .map(set -> set.getRepetitions())
111
                                            .collect(Collectors.toList()))
112
                            .setReportWeight(
113
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
114
                                            .map(
115
                                                    set ->
116
                                                            set.getWeight() == null
117
                                                                    ? null
118
                                                                    : set.getWeight().intValue())
119
                                            .collect(Collectors.toList()))
120
                            .setReportTimeInMin(
121
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
122
                                            .map(set -> set.getTime_in_sec())
123
                                            .collect(Collectors.toList()))
124
                            .setReportSpeed(
125
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
126
                                            .map(set -> set.getSpeed())
127
                                            .collect(Collectors.toList()))
128
                            .setReportIncline(
129
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
130
                                            .map(set -> set.getIncline())
131
                                            .collect(Collectors.toList()))
132
                            .setReportResistance(
133
                                    inWorkoutItemReport.getInWorkoutItemSetReports().stream()
134
                                            .map(set -> set.getResistance())
135
                                            .collect(Collectors.toList()));
136
                }
137
                workout.getItems().add(userWorkoutItemResponseDTO);
138
            }
139
        }
140
        return program;
141
    }
142
143
    List<UserProgramResponseDTO> findAll() {
144
        return inProgramRepository.findAll().stream()
145
                .map(AdminUserProgramService::inProgramToDto)
146
                .collect(Collectors.toList());
147
    }
148
149
    UserProgramResponseDTO findOne(Long id) {
150
        final InProgram inProgram = inProgramRepository.findById(id).orElse(null);
151
        if (inProgram == null) {
152
            throw new ResourceNotFoundException("Program with id " + id + " not found.");
153
        }
154
        return inProgramToDto(inProgram);
155
    }
156
157
    UserProgramResponseDTO create(UserProgramRequestDTO userProgramRequestDTO) {
158
        final InProgram inProgram =
159
                new InProgram()
160
                        .setName(userProgramRequestDTO.getName())
161
                        .setInWorkouts(
162
                                userProgramRequestDTO.getWorkouts().stream()
163
                                        .map(
164
                                                workout ->
165
                                                        new InWorkout()
166
                                                                .setD_workout_name(
167
                                                                        workout.getName())
168
                                                                .setInWorkoutItems(
169
                                                                        workout.getItems().stream()
170
                                                                                .map(
171
                                                                                        item ->
172
                                                                                                new InWorkoutItem()
173
                                                                                                        .setInWorkoutItemSets(
174
                                                                                                                Collections
175
                                                                                                                        .emptyList())
176
                                                                                                        .setInWorkoutItemReports(
177
                                                                                                                Collections
178
                                                                                                                        .emptyList()))
179
                                                                                .collect(
180
                                                                                        Collectors
181
                                                                                                .toList())))
182
                                        .collect(Collectors.toList()));
183
        final InProgram savedInProgram = inProgramRepository.save(inProgram);
184
        return inProgramToDto(savedInProgram);
185
    }
186
187
    UserProgramResponseDTO update(Long id, UserProgramRequestDTO userProgramRequestDTO) {
0 ignored issues
show
Unused Code introduced by
Remove this unused method parameter "userProgramRequestDTO".
Loading history...
188
        final InProgram inProgram = inProgramRepository.findById(id).orElse(null);
189
        if (inProgram == null) {
190
            throw new ResourceNotFoundException("Program with id " + id + " not found.");
191
        }
192
        return inProgramToDto(inProgram);
193
    }
194
195
    UserProgramResponseDTO delete(Long id) {
196
        final InProgram inProgram = inProgramRepository.findById(id).orElse(null);
197
        if (inProgram == null) {
198
            throw new ResourceNotFoundException("Program with id " + id + " not found.");
199
        }
200
        UserProgramResponseDTO userProgramResponseDTO = inProgramToDto(inProgram);
201
        inProgramRepository.deleteById(id);
202
        return userProgramResponseDTO;
203
    }
204
}
205