com.osomapps.pt.exercises.ExerciseImageService   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
eloc 20
dl 0
loc 27
rs 10
c 2
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A ExerciseImageService(ExerciseFileRepository) 0 2 1
A dataUrlToOutputStream(String,OutputStream) 0 4 1
A findOne(Long,String,OutputStream) 0 11 2
1
package com.osomapps.pt.exercises;
2
3
import com.osomapps.pt.ResourceNotFoundException;
4
import java.io.IOException;
5
import java.io.OutputStream;
6
import java.util.Base64;
7
import org.springframework.stereotype.Service;
8
9
@Service
10
class ExerciseImageService {
11
    private static final String BASE64_PREFIX = ";base64,";
12
    private static final int BASE64_PREFIX_LENGTH = 8;
13
    private final ExerciseFileRepository exerciseFileRepository;
14
15
    ExerciseImageService(ExerciseFileRepository exerciseFileRepository) {
16
        this.exerciseFileRepository = exerciseFileRepository;
17
    }
18
19
    ExerciseImageDTO findOne(Long id, String fileName, OutputStream outputStream)
0 ignored issues
show
Unused Code introduced by
Remove this unused method parameter "fileName".
Loading history...
20
            throws IOException {
21
        final ExerciseFile exerciseFile = exerciseFileRepository.findById(id).orElse(null);
22
        if (exerciseFile == null) {
23
            throw new ResourceNotFoundException("File with id " + id + " not found");
24
        }
25
        dataUrlToOutputStream(exerciseFile.getData_url(), outputStream);
26
        return new ExerciseImageDTO()
27
                .setId(exerciseFile.getId())
28
                .setFileName(exerciseFile.getFile_name())
29
                .setFileType(exerciseFile.getFile_type());
30
    }
31
32
    void dataUrlToOutputStream(String dataUrl, OutputStream outputStream) throws IOException {
33
        final String encodedString =
34
                dataUrl.substring(dataUrl.indexOf(BASE64_PREFIX) + BASE64_PREFIX_LENGTH);
35
        outputStream.write(Base64.getDecoder().decode(encodedString));
36
    }
37
}
38