Made ASsignm,ents Conmtroller more readable

This commit is contained in:
Filip Izydorczyk 2020-10-08 16:41:13 +02:00
parent 9d97306e5c
commit f97e22fa5f
5 changed files with 90 additions and 31 deletions

View File

@ -4,17 +4,15 @@ import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import com.plannaplan.App; import com.plannaplan.App;
import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Assignment;
import com.plannaplan.entities.Commision; import com.plannaplan.entities.Commision;
import com.plannaplan.entities.Groups;
import com.plannaplan.entities.User; import com.plannaplan.entities.User;
import com.plannaplan.responses.mappers.AssignmentResponseMappers;
import com.plannaplan.responses.models.AssignmentResponse;
import com.plannaplan.services.AssignmentService; import com.plannaplan.services.AssignmentService;
import com.plannaplan.services.CommisionService; import com.plannaplan.services.CommisionService;
@ -35,30 +33,14 @@ public class AssignmentsController extends TokenBasedController {
private AssignmentService assignmentService; private AssignmentService assignmentService;
@GetMapping("/getCurrentAssignments") @GetMapping("/getCurrentAssignments")
public ResponseEntity<List<Object>> getCurrentAssignments() throws Exception { public ResponseEntity<List<AssignmentResponse>> getCurrentAssignments() throws Exception {
User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException("User not found"));
Optional<Commision> com = this.commisionService.getNewestCommision(user); Optional<Commision> com = this.commisionService.getNewestCommision(user);
if (com.isPresent()) { if (com.isPresent()) {
List<Assignment> respone = this.assignmentService.getCommisionAssignments(com.get()); List<Assignment> respone = this.assignmentService.getCommisionAssignments(com.get());
return new ResponseEntity<>(AssignmentResponseMappers.mapAssignmentsListToAssignmentResponseList(respone),
List<Object> finalResponse = new ArrayList<>(); HttpStatus.OK);
for (Assignment a : respone) {
Dictionary<String, Object> elem = new Hashtable<>();
Dictionary<String, Object> groupInfo = new Hashtable<>();
elem.put("id", a.getId());
Groups g = a.getGroup();
groupInfo.put("id", g.getId());
groupInfo.put("day", g.getDay().label);
groupInfo.put("time", g.getTimeString());
groupInfo.put("lecturer", g.getLecturer().toString());
groupInfo.put("room", g.getRoom());
groupInfo.put("capacity", g.getCapacity());
groupInfo.put("type", g.getType());
elem.put("group", groupInfo);
finalResponse.add(elem);
}
return new ResponseEntity<>(finalResponse, HttpStatus.OK);
} }
return new ResponseEntity<>(null, HttpStatus.OK); return new ResponseEntity<>(null, HttpStatus.OK);

View File

@ -0,0 +1,20 @@
package com.plannaplan.responses.mappers;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.plannaplan.entities.Assignment;
import com.plannaplan.entities.Groups;
import com.plannaplan.responses.models.AssignmentResponse;
public class AssignmentResponseMappers {
public static final List<AssignmentResponse> mapGroupsListToAssignmentResponseList(List<Groups> groups) {
return groups.stream().filter(Objects::nonNull).map(AssignmentResponse::new).collect(Collectors.toList());
}
public static final List<AssignmentResponse> mapAssignmentsListToAssignmentResponseList(
List<Assignment> assignments) {
return assignments.stream().filter(Objects::nonNull).map(AssignmentResponse::new).collect(Collectors.toList());
}
}

View File

@ -1,5 +1,6 @@
package com.plannaplan.responses.models; package com.plannaplan.responses.models;
import com.plannaplan.entities.Assignment;
import com.plannaplan.entities.Groups; import com.plannaplan.entities.Groups;
import com.plannaplan.types.GroupType; import com.plannaplan.types.GroupType;
@ -14,13 +15,17 @@ public class AssignmentResponse {
private GroupType type; private GroupType type;
public AssignmentResponse(Groups group) { public AssignmentResponse(Groups group) {
this.id = group.getId(); this.id = group.getId() != null ? group.getId() : null;
this.day = group.getDay().label; this.day = group.getDay() != null ? group.getDay().label : -1;
this.time = group.getTimeString(); this.time = group.getTimeString() != null ? group.getTimeString() : "";
this.lecturer = group.getLecturer().toString(); this.lecturer = group.getLecturer() != null ? group.getLecturer().toString() : "";
this.room = group.getRoom(); this.room = group.getRoom() != null ? group.getRoom() : "";
this.capacity = group.getCapacity(); this.capacity = group.getCapacity();
this.type = group.getType(); this.type = group.getType() != null ? group.getType() : null;
}
public AssignmentResponse(Assignment assignment) {
this(assignment.getGroup());
} }
public GroupType getType() { public GroupType getType() {

View File

@ -0,0 +1,24 @@
package com.plannaplan.responses.mappers;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.List;
import com.plannaplan.entities.Groups;
import com.plannaplan.responses.models.AssignmentResponse;
import org.junit.Test;
public class AssignmentResponseMappersTest {
@Test
public void shouldReturnNewList() {
final List<Groups> groups = Arrays.asList(new Groups(), new Groups());
final List<AssignmentResponse> response = AssignmentResponseMappers
.mapGroupsListToAssignmentResponseList(groups);
assertTrue(response.size() == 2);
assertTrue(response instanceof List);
assertTrue(response.get(0) instanceof AssignmentResponse);
}
}

View File

@ -2,6 +2,7 @@ package com.plannaplan.responses.models;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import com.plannaplan.entities.Assignment;
import com.plannaplan.entities.Groups; import com.plannaplan.entities.Groups;
import com.plannaplan.entities.Lecturer; import com.plannaplan.entities.Lecturer;
import com.plannaplan.types.GroupType; import com.plannaplan.types.GroupType;
@ -11,6 +12,20 @@ import org.junit.Test;
public class AssignmentResponseTest { public class AssignmentResponseTest {
@Test
public void shouldMapAssignmentClassToResponse() {
final Assignment assignment = new Assignment(
new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), null);
final AssignmentResponse response = new AssignmentResponse(assignment);
assertTrue(response.getCapacity() == 42);
assertTrue(response.getDay() == 0);
assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki"));
assertTrue(response.getRoom().equals("A4-1"));
assertTrue(response.getTime().equals("8.40"));
assertTrue(response.getType() == GroupType.CLASS);
}
@Test @Test
public void shouldMapGroupClassToResponse() { public void shouldMapGroupClassToResponse() {
final Groups group = new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, final Groups group = new Groups(42, "A4-1", null, 520, WeekDay.MONDAY,
@ -25,4 +40,17 @@ public class AssignmentResponseTest {
assertTrue(response.getType() == GroupType.CLASS); assertTrue(response.getType() == GroupType.CLASS);
} }
@Test
public void shouldMapEmptyGroupClassToResponse() {
final Groups group = new Groups();
final AssignmentResponse response = new AssignmentResponse(group);
assertTrue(response.getCapacity() == 0);
assertTrue(response.getDay() == -1);
assertTrue(response.getLecturer().equals(""));
assertTrue(response.getRoom().equals(""));
assertTrue(response.getTime().equals("0.00"));
assertTrue(response.getType() == null);
}
} }