Skip to content

Commit 2e83a1d

Browse files
committed
IPTE-165: include DTO
1 parent 584f2df commit 2e83a1d

File tree

9 files changed

+199
-20
lines changed

9 files changed

+199
-20
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ logs/
3030

3131
config.xml
3232
/db/
33+
application.properties

pom.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55

66
<groupId>de.doubleslash</groupId>
@@ -47,6 +47,17 @@
4747
</properties>
4848

4949
<dependencies>
50+
<dependency>
51+
<groupId>org.mapstruct</groupId>
52+
<artifactId>mapstruct</artifactId>
53+
<version>1.6.0.Beta1</version>
54+
</dependency>
55+
<dependency>
56+
<groupId>org.mapstruct</groupId>
57+
<artifactId>mapstruct-processor</artifactId>
58+
<version>1.6.0.Beta1</version>
59+
<scope>provided</scope>
60+
</dependency>
5061
<dependency>
5162
<groupId>org.openjfx</groupId>
5263
<artifactId>javafx-controls</artifactId>
@@ -163,6 +174,20 @@
163174
<id>coverage</id>
164175
<build>
165176
<plugins>
177+
<plugin>
178+
<groupId>org.apache.maven.plugins</groupId>
179+
<artifactId>maven-compiler-plugin</artifactId>
180+
<version>3.11.0</version>
181+
<configuration>
182+
<annotationProcessorPaths>
183+
<path>
184+
<groupId>org.mapstruct</groupId>
185+
<artifactId>mapstruct-processor</artifactId>
186+
<version>1.6.0.Beta1</version>
187+
</path>
188+
</annotationProcessorPaths>
189+
</configuration>
190+
</plugin>
166191
<plugin>
167192
<groupId>org.jacoco</groupId>
168193
<artifactId>jacoco-maven-plugin</artifactId>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package de.doubleslash.keeptime.REST_API.controller;
2+
3+
import com.fasterxml.jackson.core.JsonGenerator;
4+
import com.fasterxml.jackson.databind.JsonSerializer;
5+
import com.fasterxml.jackson.databind.SerializerProvider;
6+
import javafx.scene.paint.Color;
7+
8+
import java.io.IOException;
9+
10+
public class ColorJsonSerializer extends JsonSerializer<Color> {
11+
12+
@Override
13+
public void serialize(Color color, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
14+
jsonGenerator.writeStartObject();
15+
jsonGenerator.writeNumberField("red", color.getRed());
16+
jsonGenerator.writeNumberField("green", color.getGreen());
17+
jsonGenerator.writeNumberField("blue", color.getBlue());
18+
jsonGenerator.writeNumberField("opacity", color.getOpacity());
19+
jsonGenerator.writeBooleanField("opaque", color.isOpaque());
20+
jsonGenerator.writeNumberField("saturation", color.getSaturation());
21+
jsonGenerator.writeNumberField("brightness", color.getBrightness());
22+
jsonGenerator.writeNumberField("hue", color.getHue());
23+
jsonGenerator.writeEndObject();
24+
}
25+
}

src/main/java/de/doubleslash/keeptime/REST_API/controller/ProjectController.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ public class ProjectController {
3232
private Model model;
3333

3434
public ProjectController(final ProjectRepository projectRepository, final WorkRepository workRepository,
35-
final Controller controller,Model model) {
35+
final Controller controller, Model model) {
3636
this.projectRepository = projectRepository;
3737
this.workRepository = workRepository;
3838
this.controller = controller;
39-
this.model= model;
39+
this.model = model;
4040
}
4141

4242
@GetMapping("")
@@ -128,14 +128,7 @@ public ResponseEntity<Project> updateProject(@PathVariable final long id,
128128
updateProject.setIndex(newValuedProject.getIndex());
129129
updateProject.setWork(newValuedProject.isWork());
130130

131-
// System.err.println(newValuedProject.getColor());
132-
// Color newColor = newValuedProject.getColor();
133-
134-
// System.out.println("'"+colorConverter.convertToDatabaseColumn(newColor)+"'");
135-
// String colorString = colorConverter.convertToDatabaseColumn(newColor);
136-
//
137-
// updateProject.setColor(colorConverter.convertToEntityAttribute(colorString));
138-
131+
updateProject.setColor(newValuedProject.getColor());
139132
updateProject.setDefault(newValuedProject.isDefault());
140133
updateProject.setEnabled(newValuedProject.isEnabled());
141134

@@ -175,7 +168,7 @@ public Project getWorkProjects() {
175168
@PutMapping("/current")
176169
public ResponseEntity<Project> changeProject(@Valid @RequestBody Project newProject) {
177170
try {
178-
controller.changeProject(newProject);
171+
controller.changeProject(newProject);
179172
return ResponseEntity.ok(newProject);
180173
} catch (Exception e) {
181174
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package de.doubleslash.keeptime.REST_API.controller;
2+
3+
public class ProjectDTO {
4+
private long id;
5+
6+
public ProjectDTO(final long id) {
7+
this.id = id;
8+
}
9+
10+
public long getId() {
11+
return id;
12+
}
13+
14+
public void setId(final long id) {
15+
this.id = id;
16+
}
17+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package de.doubleslash.keeptime.REST_API.controller;
2+
3+
4+
import java.time.LocalDateTime;
5+
6+
public class WorkDTO {
7+
private long id;
8+
private LocalDateTime startTime;
9+
private LocalDateTime endTime;
10+
private ProjectDTO project;
11+
private String notes;
12+
13+
public WorkDTO(long id, LocalDateTime startTime, LocalDateTime endTime, ProjectDTO project, String notes) {
14+
this.id = id;
15+
this.startTime = startTime;
16+
this.endTime = endTime;
17+
this.project = project;
18+
this.notes = notes;
19+
}
20+
21+
22+
public long getId() {
23+
return id;
24+
}
25+
26+
public void setId(long id) {
27+
this.id = id;
28+
}
29+
30+
public LocalDateTime getStartTime() {
31+
return startTime;
32+
}
33+
34+
public void setStartTime(LocalDateTime startTime) {
35+
this.startTime = startTime;
36+
}
37+
38+
public LocalDateTime getEndTime() {
39+
return endTime;
40+
}
41+
42+
public void setEndTime(LocalDateTime endTime) {
43+
this.endTime = endTime;
44+
}
45+
46+
public ProjectDTO getProject() {
47+
return project;
48+
}
49+
50+
public void setProject(ProjectDTO project) {
51+
this.project = project;
52+
}
53+
54+
public String getNotes() {
55+
return notes;
56+
}
57+
58+
public void setNotes(String notes) {
59+
this.notes = notes;
60+
}
61+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package de.doubleslash.keeptime.REST_API.controller;
2+
//import de.doubleslash.keeptime.model.Work;
3+
//import org.mapstruct.Mapper;
4+
//import org.mapstruct.Mapping;
5+
//import org.springframework.stereotype.Component;
6+
//
7+
//@Mapper(componentModel = "spring")
8+
//@Component
9+
//public interface WorkMapper {
10+
//
11+
// @Mapping(source = "project.id", target = "projectId")
12+
// @Mapping(source = "project.color", target = "color")
13+
// WorkDTO workToWorkDTO(Work work);
14+
//}
15+
// @Mapping(target = "id", ignore = true)
16+
// @Mapping(target = "project", ignore = true)
17+
// Work updateWorkFromDTO(WorkDTO workDTO, @MappingTarget Work existingWork);
18+
//}
19+
20+
21+
import de.doubleslash.keeptime.model.Work;
22+
import org.mapstruct.Mapper;
23+
import org.mapstruct.Mapping;
24+
import org.mapstruct.factory.Mappers;
25+
26+
@Mapper
27+
public interface WorkMapper {
28+
29+
WorkMapper INSTANCE = Mappers.getMapper(WorkMapper.class);
30+
31+
@Mapping(source = "project", target = "project")
32+
WorkDTO workToWorkDTO(Work work);
33+
34+
@Mapping(source = "project", target = "project")
35+
Work workDTOToWork(WorkDTO workDTO);
36+
}
37+
38+

src/main/java/de/doubleslash/keeptime/REST_API/controller/WorksController.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.List;
2121
import java.util.Optional;
2222
import java.util.stream.Collectors;
23+
import java.util.stream.Stream;
2324

2425
@RestController
2526
@RequestMapping("/works")
@@ -34,16 +35,29 @@ public WorksController(final WorkRepository workRepository, final Controller con
3435
this.model= model;
3536
}
3637

37-
@GetMapping("")
38-
public List<Work> getWorks(@RequestParam(name = "name", required = false) final String project) {
39-
List<Work> works = workRepository.findAll();
40-
41-
if (project != null) {
42-
return works.stream().filter(work -> work.getProject().equals(project)).collect(Collectors.toList());
43-
}
44-
return works;
38+
// @GetMapping("")
39+
// public List<Work> getWorks(@RequestParam(name = "name", required = false) final String project) {
40+
// List<Work> works = workRepository.findAll();
41+
//
42+
// if (project != null) {
43+
// return works.stream().filter(work -> work.getProject().equals(project)).collect(Collectors.toList());
44+
// }
45+
// return works;
46+
// }
47+
@GetMapping("")
48+
public List<WorkDTO> getWorks(@RequestParam(name = "name", required = false) final String projectName) {
49+
List<Work> works = workRepository.findAll();
50+
51+
Stream<Work> workStream = works.stream();
52+
53+
if (projectName != null) {
54+
workStream = workStream.filter(work -> work.getProject().getName().equals(projectName));
4555
}
4656

57+
return workStream.map(WorkMapper.INSTANCE::workToWorkDTO)
58+
.collect(Collectors.toList());
59+
}
60+
4761

4862

4963
@PutMapping("/{id}")

src/main/java/de/doubleslash/keeptime/model/Project.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,15 @@
2929
import javax.validation.constraints.PositiveOrZero;
3030

3131
import com.fasterxml.jackson.annotation.JsonSetter;
32+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
33+
import de.doubleslash.keeptime.REST_API.controller.ColorJsonSerializer;
3234
import de.doubleslash.keeptime.model.persistenceconverter.ColorConverter;
3335
import javafx.scene.paint.Color;
3436

3537
@Entity
3638
@Table(name = "Project")
39+
//@JsonSerialize(using = ColorJsonSerializer.class)
40+
3741
public class Project {
3842

3943
@Id
@@ -50,6 +54,7 @@ public class Project {
5054
@Convert(converter = ColorConverter.class, disableConversion = false)
5155
private Color color;
5256

57+
5358
private boolean isWork;
5459

5560
private boolean isDefault;

0 commit comments

Comments
 (0)