Skip to content

Commit d7deedd

Browse files
committed
Add filtering on Persons
Chnages: - Add settlement id filter to person API - Simplify the DTO objects
1 parent 65f8dd4 commit d7deedd

11 files changed

Lines changed: 45 additions & 27 deletions

File tree

rest-server/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@
4444
<dependency>
4545
<groupId>org.springframework.boot</groupId>
4646
<artifactId>spring-boot-starter-jetty</artifactId>
47-
</dependency>
47+
</dependency>
48+
<dependency>
49+
<groupId>org.springframework.boot</groupId>
50+
<artifactId>spring-boot-starter-actuator</artifactId>
51+
</dependency>
4852
<dependency>
4953
<groupId>org.modelmapper</groupId>
5054
<artifactId>modelmapper</artifactId>

rest-server/src/main/java/org/mars_sim/rest/App.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.mars_sim.rest.model.Simulation;
44
import org.modelmapper.ModelMapper;
5+
import org.springframework.boot.ApplicationArguments;
56
import org.springframework.boot.SpringApplication;
67
import org.springframework.boot.autoconfigure.SpringBootApplication;
78
import org.springframework.context.annotation.Bean;
@@ -13,7 +14,8 @@ public static void main(String[] args) {
1314
}
1415

1516
@Bean
16-
public Simulation getSimulation() {
17+
public Simulation getSimulation(ApplicationArguments args) {
18+
System.out.println("Commandline args = " + args);
1719
return new Simulation();
1820
}
1921

rest-server/src/main/java/org/mars_sim/rest/controller/PersonController.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.List;
44
import java.util.stream.Collectors;
5+
import java.util.stream.Stream;
56

67
import org.mars_sim.rest.dto.PersonDTO;
78
import org.mars_sim.rest.dto.PersonSummaryDTO;
@@ -12,6 +13,7 @@
1213
import org.springframework.web.bind.annotation.GetMapping;
1314
import org.springframework.web.bind.annotation.PathVariable;
1415
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestParam;
1517
import org.springframework.web.bind.annotation.RestController;
1618

1719
@RestController()
@@ -25,13 +27,20 @@ public class PersonController {
2527
private ModelMapper mapper;
2628

2729
@GetMapping("")
28-
List<PersonSummaryDTO> getPersons() {
29-
return sim.getPersons().stream().map(s -> mapper.map(s, PersonSummaryDTO.class)).collect(Collectors.toList());
30+
List<PersonSummaryDTO> getPersons(@RequestParam(required=false) Integer settlementId) {
31+
Stream<Person> found = null;
32+
if (settlementId != null) {
33+
found = sim.getPersons().stream().filter(p -> p.getSettlement().getIdentifier() == settlementId);
34+
}
35+
else {
36+
found = sim.getPersons().stream();
37+
}
38+
return found.map(s -> mapper.map(s, PersonSummaryDTO.class)).collect(Collectors.toList());
3039
}
3140

3241
@GetMapping("/{id}")
3342
public PersonDTO getPerson(@PathVariable int id) {
34-
Person s = sim.getPersons().get(id);
43+
Person s = sim.getPersons().get(id-1);
3544
return mapper.map(s, PersonDTO.class);
3645
}
3746
}

rest-server/src/main/java/org/mars_sim/rest/controller/SettlementController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ List<SettlementSummaryDTO> getSettlements() {
3131

3232
@GetMapping("/{id}")
3333
public SettlementDTO getSettlement(@PathVariable int id) {
34-
Settlement s = sim.getSettlements().get(id);
34+
Settlement s = sim.getSettlements().get(id-1);
3535
return mapper.map(s, SettlementDTO.class);
3636
}
3737
}

rest-server/src/main/java/org/mars_sim/rest/dto/PersonDTO.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import lombok.Getter;
44
import lombok.Setter;
55

6+
@Getter @Setter
67
public class PersonDTO extends PersonSummaryDTO {
7-
@Getter @Setter private ReferencableDTO settlement;
8-
@Getter @Setter private ReportingAuthorityDTO authority;
8+
private ReferencableDTO settlement;
9+
private ReportingAuthorityDTO authority;
910
}

rest-server/src/main/java/org/mars_sim/rest/dto/ReferencableDTO.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
/**
77
* Defines the JSON representation for a Reference to an entity
88
*/
9+
@Getter @Setter
910
public class ReferencableDTO {
10-
@Getter @Setter private String name;
11-
@Getter @Setter private String type;
12-
@Getter @Setter private int identifier;
11+
private String name;
12+
private String type;
13+
private int identifier;
1314
}

rest-server/src/main/java/org/mars_sim/rest/dto/ReportingAuthorityDTO.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
import lombok.Getter;
44
import lombok.Setter;
55

6+
@Getter @Setter
67
public class ReportingAuthorityDTO {
7-
@Getter @Setter private String name;
8-
@Getter @Setter private String objective;
9-
@Getter @Setter private String[] agenda;
8+
private String name;
9+
private String objective;
10+
private String[] agenda;
1011

1112
}

rest-server/src/main/java/org/mars_sim/rest/dto/SettlementDTO.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
/**
77
* Detailed representation of a Settlement
88
*/
9+
@Getter @Setter
910
public class SettlementDTO extends SettlementSummaryDTO {
10-
@Getter @Setter private ReportingAuthorityDTO authority;
11-
@Getter @Setter private int citizens;
11+
private ReportingAuthorityDTO authority;
12+
private int citizens;
1213
}

rest-server/src/main/java/org/mars_sim/rest/dto/SettlementSummaryDTO.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
/**
77
* Summary of a Settlement commonly used in tables
88
*/
9+
@Getter @Setter
910
public class SettlementSummaryDTO extends ReferencableDTO {
10-
@Getter @Setter private double power;
11-
@Getter @Setter private double oxygen;
12-
@Getter @Setter private double hydrogen;
13-
@Getter @Setter private double water;
14-
@Getter @Setter private double methane;
11+
private double power;
12+
private double oxygen;
13+
private double hydrogen;
14+
private double water;
15+
private double methane;
1516
}

rest-server/src/main/java/org/mars_sim/rest/model/Simulation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ public Simulation() {
2020
ReportingAuthority ra1 = new ReportingAuthority("NASA", "Find life", List.of("Agenda 1"));
2121
ReportingAuthority ra2 = new ReportingAuthority("RKA", "Explore Space", List.of("Agenda 1", "Agenda 2"));
2222

23-
Settlement s1 = new Settlement("New Boston", SETTLEMENT_TYPE, 0, ra1, 1.2D, 100.2D, 12343.6D, 76559.22D, 985.1D);
24-
Settlement s2 = new Settlement("New Moscow", SETTLEMENT_TYPE, 1, ra2, 4545.1D, 343.5D, 0, 3434.0D, 9785.1D);
23+
Settlement s1 = new Settlement("New Boston", SETTLEMENT_TYPE, 1, ra1, 1.2D, 100.2D, 12343.6D, 76559.22D, 985.1D);
24+
Settlement s2 = new Settlement("New Moscow", SETTLEMENT_TYPE, 2, ra2, 4545.1D, 343.5D, 0, 3434.0D, 9785.1D);
2525
settlements = new ArrayList<>();
2626
settlements.add(s1);
2727
settlements.add(s2);
2828

2929
persons = new ArrayList<>();
3030
PhysicalCondition condition1 = new PhysicalCondition(1F, "Well", 123.45F);
31-
persons.add(new Person("Fred Smith", PERSON_TYPE, 0, "Chef", "Head of Agriculture", "Male", "Lander Hab 1",
31+
persons.add(new Person("Fred Smith", PERSON_TYPE, 4, "Chef", "Head of Agriculture", "Male", "Lander Hab 1",
3232
condition1, "Cooking", ra1, s1));
3333
PhysicalCondition condition2 = new PhysicalCondition(0.8F, "OK", 5645645.34F);
3434
persons.add(new Person("Alex Turner", PERSON_TYPE, 1, "Engineer", "Head of Maintenance", "Male", "Garage",

0 commit comments

Comments
 (0)